From d9014502472031b6ea83b23c1e0f473a99191c1e Mon Sep 17 00:00:00 2001 From: khawkins <khawkins98@gmail.com> Date: Fri, 1 Jul 2016 12:25:03 +0100 Subject: [PATCH] Update to use foundation SCSS --- libraries/foundation-6/.babelrc | 13 + libraries/foundation-6/.bowerrc | 3 + libraries/foundation-6/.editorconfig | 12 + libraries/foundation-6/.eslintrc | 65 + .../foundation-6/.github/ISSUE_TEMPLATE.md | 18 + .../.github/PULL_REQUEST_TEMPLATE.md | 9 + libraries/foundation-6/.gitignore | 57 + libraries/foundation-6/.npmignore | 19 + libraries/foundation-6/.scss-lint.yml | 189 + libraries/foundation-6/.travis.yml | 9 + libraries/foundation-6/.versions | 14 + libraries/foundation-6/CONTRIBUTING.md | 46 + libraries/foundation-6/LICENSE | 22 + libraries/foundation-6/README.md | 44 + .../foundation-6/assets/foundation-flex.scss | 3 + .../foundation-6/assets/foundation-rtl.scss | 5 + libraries/foundation-6/assets/foundation.scss | 3 + libraries/foundation-6/bower.json | 32 + libraries/foundation-6/code-of-conduct.md | 43 + libraries/foundation-6/composer.json | 28 + libraries/foundation-6/css/app.css | 0 libraries/foundation-6/css/foundation.css | 1273 +- libraries/foundation-6/css/foundation.min.css | 3 +- .../foundation-6/customizer/complete.json | 46 + libraries/foundation-6/customizer/config.yml | 218 + .../foundation-6/customizer/essential.json | 11 + .../foundation-6/{ => customizer}/index.html | 0 .../foundation-6/customizer/lib/index.js | 4 + libraries/foundation-6/customizer/lib/js.js | 45 + libraries/foundation-6/customizer/lib/sass.js | 76 + .../foundation-6/dist/foundation-flex.css | 4028 +++++ .../foundation-6/dist/foundation-flex.min.css | 2 + .../foundation-6/dist/foundation-rtl.css | 3583 +++++ .../foundation-6/dist/foundation-rtl.min.css | 2 + libraries/foundation-6/dist/foundation.css | 3578 +++++ .../{js/vendor => dist}/foundation.js | 1488 +- .../foundation-6/dist/foundation.min.css | 2 + .../{js/vendor => dist}/foundation.min.js | 4 +- .../dist/plugins/foundation.abide.js | 600 + .../dist/plugins/foundation.accordion.js | 262 + .../dist/plugins/foundation.accordionMenu.js | 307 + .../dist/plugins/foundation.core.js | 386 + .../dist/plugins/foundation.drilldown.js | 409 + .../dist/plugins/foundation.dropdown.js | 447 + .../dist/plugins/foundation.dropdownMenu.js | 447 + .../dist/plugins/foundation.equalizer.js | 364 + .../dist/plugins/foundation.interchange.js | 227 + .../dist/plugins/foundation.magellan.js | 257 + .../dist/plugins/foundation.offcanvas.js | 438 + .../dist/plugins/foundation.orbit.js | 484 + .../dist/plugins/foundation.responsiveMenu.js | 171 + .../plugins/foundation.responsiveToggle.js | 142 + .../dist/plugins/foundation.reveal.js | 623 + .../dist/plugins/foundation.slider.js | 648 + .../dist/plugins/foundation.sticky.js | 495 + .../dist/plugins/foundation.tabs.js | 348 + .../dist/plugins/foundation.toggler.js | 166 + .../dist/plugins/foundation.tooltip.js | 468 + .../dist/plugins/foundation.util.box.js | 196 + .../dist/plugins/foundation.util.keyboard.js | 123 + .../plugins/foundation.util.mediaQuery.js | 216 + .../dist/plugins/foundation.util.motion.js | 97 + .../dist/plugins/foundation.util.nest.js | 69 + .../foundation.util.timerAndImageLoader.js | 84 + .../dist/plugins/foundation.util.touch.js | 352 + .../dist/plugins/foundation.util.triggers.js | 243 + .../assets/img/a11y/chrome-a11y-inspector.jpg | Bin 0 -> 20979 bytes .../docs/assets/img/generic/rectangle-1.jpg | Bin 0 -> 9284 bytes .../docs/assets/img/generic/rectangle-2.jpg | Bin 0 -> 172889 bytes .../docs/assets/img/generic/rectangle-3.jpg | Bin 0 -> 14048 bytes .../docs/assets/img/generic/rectangle-4.jpg | Bin 0 -> 32780 bytes .../docs/assets/img/generic/rectangle-5.jpg | Bin 0 -> 31295 bytes .../docs/assets/img/generic/rectangle-6.jpg | Bin 0 -> 33578 bytes .../docs/assets/img/generic/rectangle-7.jpg | Bin 0 -> 30779 bytes .../docs/assets/img/generic/rectangle-8.jpg | Bin 0 -> 69069 bytes .../docs/assets/img/generic/square-1.jpg | Bin 0 -> 38630 bytes .../docs/assets/img/generic/square-2.jpg | Bin 0 -> 44931 bytes .../docs/assets/img/generic/square-3.jpg | Bin 0 -> 36494 bytes .../docs/assets/img/generic/square-4.jpg | Bin 0 -> 15982 bytes .../docs/assets/img/generic/square-5.jpg | Bin 0 -> 32614 bytes .../docs/assets/img/generic/square-6.jpg | Bin 0 -> 35787 bytes .../docs/assets/img/generic/voyager.jpg | Bin 0 -> 45757 bytes .../foundation-6/docs/assets/img/gulpfile.js | 167 + .../docs/assets/img/icons/favicon.ico | Bin 0 -> 1406 bytes .../assets/img/icons/footer-expo-retina.png | Bin 0 -> 2137 bytes .../docs/assets/img/icons/footer-expo.png | Bin 0 -> 1353 bytes .../img/icons/footer-foundation-retina.png | Bin 0 -> 1980 bytes .../assets/img/icons/footer-foundation.png | Bin 0 -> 1297 bytes .../assets/img/icons/footer-icons-retina.png | Bin 0 -> 6389 bytes .../docs/assets/img/icons/footer-icons.png | Bin 0 -> 5662 bytes .../img/icons/footer-products-retina.png | Bin 0 -> 2187 bytes .../docs/assets/img/icons/footer-products.png | Bin 0 -> 1466 bytes .../img/icons/footer-studios-retina.png | Bin 0 -> 2725 bytes .../docs/assets/img/icons/footer-studios.png | Bin 0 -> 1565 bytes .../img/icons/footer-top-icons-retina.png | Bin 0 -> 3647 bytes .../assets/img/icons/footer-top-icons.png | Bin 0 -> 4645 bytes .../assets/img/icons/footer-university.png | Bin 0 -> 1353 bytes .../docs/assets/img/icons/social-retina.png | Bin 0 -> 6847 bytes .../docs/assets/img/icons/social.png | Bin 0 -> 3815 bytes .../docs/assets/img/inky-banner-bg-boat.svg | 563 + .../docs/assets/img/inky-banner-bg-clear.svg | 22 + .../docs/assets/img/interchange/large.jpg | Bin 0 -> 56157 bytes .../assets/img/interchange/map-medium.png | Bin 0 -> 543557 bytes .../docs/assets/img/interchange/map-small.png | Bin 0 -> 475516 bytes .../docs/assets/img/interchange/medium.jpg | Bin 0 -> 44438 bytes .../docs/assets/img/interchange/small.jpg | Bin 0 -> 28474 bytes .../docs/assets/img/logos/sass-logo.svg | 1 + .../docs/assets/img/logos/zurb-logo.svg | 26 + .../docs/assets/img/media-object/avatar-1.jpg | Bin 0 -> 10402 bytes .../docs/assets/img/media-object/avatar-2.jpg | Bin 0 -> 10407 bytes .../docs/assets/img/media-object/avatar-3.jpg | Bin 0 -> 8028 bytes .../foundation-6/docs/assets/img/orbit/01.jpg | Bin 0 -> 152776 bytes .../foundation-6/docs/assets/img/orbit/02.jpg | Bin 0 -> 59854 bytes .../foundation-6/docs/assets/img/orbit/03.jpg | Bin 0 -> 71336 bytes .../foundation-6/docs/assets/img/orbit/04.jpg | Bin 0 -> 55713 bytes .../docs/assets/img/thumbnail/01.jpg | Bin 0 -> 6981 bytes .../docs/assets/img/thumbnail/02.jpg | Bin 0 -> 8554 bytes .../docs/assets/img/thumbnail/03.jpg | Bin 0 -> 14493 bytes .../foundation-6/docs/assets/img/yeti.svg | 110 + .../docs/assets/js/docs.buildingBlocks.js | 27 + .../docs/assets/js/docs.examples.js | 30 + .../docs/assets/js/docs.interchangeMap.js | 45 + libraries/foundation-6/docs/assets/js/docs.js | 18 + .../docs/assets/js/docs.kissmetrics.js | 18 + .../assets/partials/interchange-default.html | 1 + .../assets/partials/interchange-large.html | 12 + .../assets/partials/interchange-medium.html | 1 + .../docs/assets/partials/sticky-nav.html | 229 + .../foundation-6/docs/assets/scss/docs.scss | 27 + .../docs/assets/scss/examples/_grid.scss | 77 + .../docs/assets/scss/examples/_motion-ui.scss | 25 + .../assets/scss/examples/_off-canvas.scss | 7 + .../docs/assets/scss/examples/_orbit.scss | 22 + .../docs/assets/scss/examples/_reveal.scss | 7 + .../docs/assets/scss/examples/_top-bar.scss | 5 + .../foundation-6/docs/layout/default.html | 67 + libraries/foundation-6/docs/pages/abide.md | 221 + .../foundation-6/docs/pages/accessibility.md | 77 + .../foundation-6/docs/pages/accordion-menu.md | 59 + .../foundation-6/docs/pages/accordion.md | 124 + libraries/foundation-6/docs/pages/badge.md | 53 + .../docs/pages/base-typography.md | 262 + .../foundation-6/docs/pages/breadcrumbs.md | 28 + .../foundation-6/docs/pages/button-group.md | 107 + libraries/foundation-6/docs/pages/button.md | 110 + libraries/foundation-6/docs/pages/callout.md | 113 + .../foundation-6/docs/pages/close-button.md | 47 + .../foundation-6/docs/pages/compatibility.md | 37 + .../foundation-6/docs/pages/drilldown-menu.md | 86 + .../foundation-6/docs/pages/dropdown-menu.md | 162 + libraries/foundation-6/docs/pages/dropdown.md | 79 + .../foundation-6/docs/pages/equalizer.md | 199 + .../foundation-6/docs/pages/flex-grid.md | 333 + .../foundation-6/docs/pages/flex-video.md | 33 + libraries/foundation-6/docs/pages/flexbox.md | 195 + .../foundation-6/docs/pages/float-classes.md | 29 + libraries/foundation-6/docs/pages/forms.md | 264 + libraries/foundation-6/docs/pages/global.md | 129 + libraries/foundation-6/docs/pages/grid.md | 566 + libraries/foundation-6/docs/pages/index.md | 180 + .../foundation-6/docs/pages/installation.md | 162 + .../foundation-6/docs/pages/interchange.md | 89 + .../docs/pages/javascript-utilities.md | 177 + .../foundation-6/docs/pages/javascript.md | 213 + .../foundation-6/docs/pages/kitchen-sink.md | 1097 ++ libraries/foundation-6/docs/pages/label.md | 55 + libraries/foundation-6/docs/pages/magellan.md | 74 + .../foundation-6/docs/pages/media-object.md | 143 + .../foundation-6/docs/pages/media-queries.md | 215 + libraries/foundation-6/docs/pages/menu.md | 206 + .../foundation-6/docs/pages/motion-ui.md | 187 + .../foundation-6/docs/pages/navigation.md | 280 + .../foundation-6/docs/pages/off-canvas.md | 155 + libraries/foundation-6/docs/pages/orbit.md | 246 + .../foundation-6/docs/pages/pagination.md | 47 + libraries/foundation-6/docs/pages/panini.md | 251 + .../foundation-6/docs/pages/progress-bar.md | 115 + .../docs/pages/responsive-navigation.md | 147 + libraries/foundation-6/docs/pages/reveal.md | 207 + libraries/foundation-6/docs/pages/rtl.md | 45 + .../foundation-6/docs/pages/sass-functions.md | 36 + .../foundation-6/docs/pages/sass-mixins.md | 13 + libraries/foundation-6/docs/pages/sass.md | 168 + libraries/foundation-6/docs/pages/slider.md | 132 + .../docs/pages/starter-projects.md | 76 + libraries/foundation-6/docs/pages/sticky.md | 151 + .../foundation-6/docs/pages/style-sherpa.md | 107 + libraries/foundation-6/docs/pages/switch.md | 114 + libraries/foundation-6/docs/pages/table.md | 228 + libraries/foundation-6/docs/pages/tabs.md | 111 + .../foundation-6/docs/pages/thumbnail.md | 23 + libraries/foundation-6/docs/pages/toggler.md | 114 + libraries/foundation-6/docs/pages/tooltip.md | 63 + libraries/foundation-6/docs/pages/top-bar.md | 135 + .../docs/pages/typography-base.md | 262 + .../docs/pages/typography-helpers.md | 92 + .../foundation-6/docs/pages/visibility.md | 128 + .../docs/partials/component-list.html | 93 + .../foundation-6/docs/partials/footer.html | 130 + .../docs/partials/info-banner.html | 6 + .../docs/partials/mobile-navigation.html | 6 + .../docs/partials/navigation.html | 62 + .../foundation-6/docs/partials/off-canvi.html | 73 + libraries/foundation-6/docs/search.yml | 33 + libraries/foundation-6/docslink.sh | 3 + libraries/foundation-6/gulp/babel-error.js | 16 + libraries/foundation-6/gulp/clean.js | 7 + libraries/foundation-6/gulp/copy.js | 13 + libraries/foundation-6/gulp/customizer.js | 124 + libraries/foundation-6/gulp/deploy.js | 164 + libraries/foundation-6/gulp/docs.js | 76 + libraries/foundation-6/gulp/javascript.js | 48 + libraries/foundation-6/gulp/lint.js | 27 + libraries/foundation-6/gulp/sass.js | 71 + libraries/foundation-6/gulp/test.js | 43 + libraries/foundation-6/gulpfile.js | 27 + libraries/foundation-6/js/app.js | 1 - libraries/foundation-6/js/foundation.abide.js | 543 + .../foundation-6/js/foundation.accordion.js | 237 + .../js/foundation.accordionMenu.js | 274 + libraries/foundation-6/js/foundation.core.js | 378 + .../foundation-6/js/foundation.drilldown.js | 369 + .../foundation-6/js/foundation.dropdown.js | 409 + .../js/foundation.dropdownMenu.js | 404 + .../foundation-6/js/foundation.equalizer.js | 306 + .../foundation-6/js/foundation.interchange.js | 198 + libraries/foundation-6/js/foundation.js | 1488 +- .../foundation-6/js/foundation.magellan.js | 223 + libraries/foundation-6/js/foundation.min.js | 4 +- .../foundation-6/js/foundation.offcanvas.js | 398 + libraries/foundation-6/js/foundation.orbit.js | 446 + .../js/foundation.responsiveMenu.js | 148 + .../js/foundation.responsiveToggle.js | 119 + .../foundation-6/js/foundation.reveal.js | 576 + .../foundation-6/js/foundation.slider.js | 597 + .../foundation-6/js/foundation.sticky.js | 459 + libraries/foundation-6/js/foundation.tabs.js | 333 + .../foundation-6/js/foundation.toggler.js | 144 + .../foundation-6/js/foundation.tooltip.js | 444 + .../foundation-6/js/foundation.util.box.js | 195 + .../js/foundation.util.keyboard.js | 115 + .../js/foundation.util.mediaQuery.js | 214 + .../foundation-6/js/foundation.util.motion.js | 99 + .../foundation-6/js/foundation.util.nest.js | 76 + .../js/foundation.util.timerAndImageLoader.js | 86 + .../foundation-6/js/foundation.util.touch.js | 352 + .../js/foundation.util.triggers.js | 239 + libraries/foundation-6/js/jquery.js | 9842 ------------ .../js/plugins/foundation.abide.js | 600 + .../js/plugins/foundation.accordion.js | 262 + .../js/plugins/foundation.accordionMenu.js | 307 + .../js/plugins/foundation.core.js | 386 + .../js/plugins/foundation.drilldown.js | 409 + .../js/plugins/foundation.dropdown.js | 447 + .../js/plugins/foundation.dropdownMenu.js | 447 + .../js/plugins/foundation.equalizer.js | 364 + .../js/plugins/foundation.interchange.js | 227 + .../js/plugins/foundation.magellan.js | 257 + .../js/plugins/foundation.offcanvas.js | 438 + .../js/plugins/foundation.orbit.js | 484 + .../js/plugins/foundation.responsiveMenu.js | 171 + .../js/plugins/foundation.responsiveToggle.js | 142 + .../js/plugins/foundation.reveal.js | 623 + .../js/plugins/foundation.slider.js | 648 + .../js/plugins/foundation.sticky.js | 495 + .../js/plugins/foundation.tabs.js | 348 + .../js/plugins/foundation.toggler.js | 166 + .../js/plugins/foundation.tooltip.js | 468 + .../js/plugins/foundation.util.box.js | 196 + .../js/plugins/foundation.util.keyboard.js | 123 + .../js/plugins/foundation.util.mediaQuery.js | 216 + .../js/plugins/foundation.util.motion.js | 97 + .../js/plugins/foundation.util.nest.js | 69 + .../foundation.util.timerAndImageLoader.js | 84 + .../js/plugins/foundation.util.touch.js | 352 + .../js/plugins/foundation.util.triggers.js | 243 + libraries/foundation-6/js/vendor/jquery.js | 9842 ------------ .../foundation-6/js/vendor/what-input.js | 295 - libraries/foundation-6/js/what-input.js | 295 - libraries/foundation-6/meteor-README.md | 150 + libraries/foundation-6/package.js | 93 + libraries/foundation-6/package.json | 116 + libraries/foundation-6/sache.json | 5 + libraries/foundation-6/scss/_global.scss | 638 + .../scss/components/_accordion-menu.scss | 32 + .../scss/components/_accordion.scss | 129 + .../foundation-6/scss/components/_badge.scss | 55 + .../scss/components/_breadcrumbs.scss | 95 + .../scss/components/_button-group.scss | 195 + .../foundation-6/scss/components/_button.scss | 265 + .../scss/components/_callout.scss | 105 + .../scss/components/_close-button.scss | 61 + .../scss/components/_drilldown.scss | 79 + .../scss/components/_dropdown-menu.scss | 221 + .../scss/components/_dropdown.scss | 65 + .../scss/components/_flex-video.scss | 63 + .../foundation-6/scss/components/_flex.scss | 28 + .../foundation-6/scss/components/_float.scss | 27 + .../foundation-6/scss/components/_label.scss | 56 + .../scss/components/_media-object.scss | 115 + .../scss/components/_menu-icon.scss | 9 + .../foundation-6/scss/components/_menu.scss | 314 + .../scss/components/_off-canvas.scss | 177 + .../foundation-6/scss/components/_orbit.scss | 193 + .../scss/components/_pagination.scss | 162 + .../scss/components/_progress-bar.scss | 64 + .../foundation-6/scss/components/_reveal.scss | 172 + .../foundation-6/scss/components/_slider.scss | 133 + .../foundation-6/scss/components/_sticky.scss | 38 + .../foundation-6/scss/components/_switch.scss | 236 + .../foundation-6/scss/components/_table.scss | 247 + .../foundation-6/scss/components/_tabs.scss | 165 + .../scss/components/_thumbnail.scss | 54 + .../scss/components/_title-bar.scss | 89 + .../scss/components/_tooltip.scss | 104 + .../scss/components/_top-bar.scss | 168 + .../scss/components/_visibility.scss | 132 + .../foundation-6/scss/forms/_checkbox.scss | 40 + libraries/foundation-6/scss/forms/_error.scss | 84 + .../foundation-6/scss/forms/_fieldset.scss | 54 + libraries/foundation-6/scss/forms/_forms.scss | 34 + .../foundation-6/scss/forms/_help-text.scss | 30 + .../foundation-6/scss/forms/_input-group.scss | 128 + libraries/foundation-6/scss/forms/_label.scss | 48 + libraries/foundation-6/scss/forms/_meter.scss | 111 + .../foundation-6/scss/forms/_progress.scss | 94 + libraries/foundation-6/scss/forms/_range.scss | 144 + .../foundation-6/scss/forms/_select.scss | 67 + libraries/foundation-6/scss/forms/_text.scss | 163 + libraries/foundation-6/scss/foundation.scss | 102 + .../foundation-6/scss/grid/_classes.scss | 151 + libraries/foundation-6/scss/grid/_column.scss | 126 + .../foundation-6/scss/grid/_flex-grid.scss | 280 + libraries/foundation-6/scss/grid/_grid.scss | 60 + libraries/foundation-6/scss/grid/_gutter.scss | 34 + libraries/foundation-6/scss/grid/_layout.scss | 51 + .../foundation-6/scss/grid/_position.scss | 73 + libraries/foundation-6/scss/grid/_row.scss | 95 + libraries/foundation-6/scss/grid/_size.scss | 24 + .../foundation-6/scss/settings/_settings.scss | 568 + .../scss/typography/_alignment.scss | 22 + .../foundation-6/scss/typography/_base.scss | 443 + .../scss/typography/_helpers.scss | 77 + .../foundation-6/scss/typography/_print.scss | 77 + .../scss/typography/_typography.scss | 28 + .../foundation-6/scss/util/_breakpoint.scss | 275 + libraries/foundation-6/scss/util/_color.scss | 60 + libraries/foundation-6/scss/util/_flex.scss | 68 + libraries/foundation-6/scss/util/_mixins.scss | 235 + .../foundation-6/scss/util/_selector.scss | 40 + libraries/foundation-6/scss/util/_unit.scss | 90 + libraries/foundation-6/scss/util/_util.scss | 11 + libraries/foundation-6/scss/util/_value.scss | 107 + .../test/javascript/components/abide.js | 39 + .../test/javascript/components/accordion.js | 20 + .../javascript/components/accordionMenu.js | 20 + .../test/javascript/components/drilldown.js | 20 + .../test/javascript/components/dropdown.js | 20 + .../javascript/components/dropdownMenu.js | 20 + .../test/javascript/components/equalizer.js | 20 + .../test/javascript/components/interchange.js | 20 + .../test/javascript/components/magellan.js | 20 + .../test/javascript/components/offcanvas.js | 20 + .../test/javascript/components/orbit.js | 20 + .../javascript/components/responsiveMenu.js | 20 + .../javascript/components/responsiveToggle.js | 20 + .../test/javascript/components/reveal.js | 20 + .../test/javascript/components/slider.js | 20 + .../test/javascript/components/sticky.js | 20 + .../test/javascript/components/tabs.js | 20 + .../test/javascript/components/toggler.js | 135 + .../test/javascript/components/tooltip.js | 20 + .../foundation-6/test/javascript/index.html | 28 + .../test/javascript/lib/chai-jquery.js | 231 + .../foundation-6/test/javascript/lib/chai.js | 5332 +++++++ .../test/javascript/lib/mocha.css | 305 + .../foundation-6/test/javascript/lib/mocha.js | 12417 ++++++++++++++++ .../foundation-6/test/javascript/lib/sinon.js | 6437 ++++++++ .../foundation-6/test/javascript/util/core.js | 83 + .../foundation-6/test/sass/_breakpoint.scss | 160 + libraries/foundation-6/test/sass/_color.scss | 47 + .../foundation-6/test/sass/_components.scss | 41 + .../foundation-6/test/sass/_selector.scss | 17 + libraries/foundation-6/test/sass/_unit.scss | 50 + libraries/foundation-6/test/sass/_value.scss | 118 + libraries/foundation-6/test/sass/test_sass.js | 18 + .../foundation-6/test/visual/_template.html | 22 + .../test/visual/abide/abide-radio.html | 79 + .../abide/hidden_and_ignored_fields.html | 51 + .../foundation-6/test/visual/abide/text.html | 115 + .../test/visual/accordion-menu/keyboard.html | 39 + .../test/visual/accordion/focus.html | 73 + .../visual/accordion/item-attributes.html | 80 + .../test/visual/accordion/nested.html | 68 + .../drilldown/drilldown-menu-parent-link.html | 67 + .../visual/drilldown/long-drilldown-menu.html | 50 + .../basic-dropdown-menu-rtl.html | 52 + .../right-aligned-dropdown-menu.html | 135 + .../dropdown-menu/submenu-mouse-reenter.html | 59 + .../visual/dropdown/basic-dropdown-rtl.html | 50 + .../test/visual/dropdown/close-on-click.html | 37 + .../test/visual/dropdown/in-top-bar.html | 55 + .../test/visual/dropdown/long.html | 51 + .../visual/equalizer/equalizer-events.html | 88 + .../test/visual/flex-grid/column-row.html | 26 + .../test/visual/flex-grid/nesting.html | 44 + .../visual/flex-grid/unstack-block-grid.html | 49 + .../test/visual/grid/nesting.html | 44 + .../foundation-6/test/visual/orbit/touch.html | 63 + .../dropdown-on-right-middle.html | 115 + .../test/visual/responsive-menu/re-init.html | 57 + .../responsive-menu-left-dropdown.html | 84 + .../responsive-menu-right-dropdown.html | 85 + .../responsive-menu/responsive-menu.html | 54 + .../various-menu-options-flex.html | 146 + .../responsive-menu/various-menu-options.html | 146 + .../test/visual/reveal/basic.html | 83 + .../test/visual/reveal/full-reveal.html | 50 + .../reveal/long-page-with-add-this.html | 50 + .../test/visual/reveal/long-page.html | 47 + .../test/visual/reveal/reveal-callout.html | 44 + .../reveal/reveal-test-data-options.html | 66 + .../foundation-6/test/visual/reveal/tall.html | 63 + .../test/visual/slider/nonzero-start.html | 45 + .../sticky/accordions-with-anchors.html | 182 + .../visual/sticky/anchors-with-callouts.html | 197 + .../test/visual/sticky/height-transition.html | 161 + .../visual/sticky/menus-with-anchors.html | 201 + .../test/visual/top-bar/stacking.html | 58 + .../test/visual/triggers/programmatic.html | 42 + .../responsive-text-alignment.html | 27 + 431 files changed, 90952 insertions(+), 22759 deletions(-) create mode 100755 libraries/foundation-6/.babelrc create mode 100755 libraries/foundation-6/.bowerrc create mode 100755 libraries/foundation-6/.editorconfig create mode 100755 libraries/foundation-6/.eslintrc create mode 100755 libraries/foundation-6/.github/ISSUE_TEMPLATE.md create mode 100755 libraries/foundation-6/.github/PULL_REQUEST_TEMPLATE.md create mode 100755 libraries/foundation-6/.gitignore create mode 100755 libraries/foundation-6/.npmignore create mode 100755 libraries/foundation-6/.scss-lint.yml create mode 100755 libraries/foundation-6/.travis.yml create mode 100755 libraries/foundation-6/.versions create mode 100755 libraries/foundation-6/CONTRIBUTING.md create mode 100755 libraries/foundation-6/LICENSE create mode 100755 libraries/foundation-6/README.md create mode 100755 libraries/foundation-6/assets/foundation-flex.scss create mode 100755 libraries/foundation-6/assets/foundation-rtl.scss create mode 100755 libraries/foundation-6/assets/foundation.scss create mode 100755 libraries/foundation-6/bower.json create mode 100755 libraries/foundation-6/code-of-conduct.md create mode 100755 libraries/foundation-6/composer.json delete mode 100644 libraries/foundation-6/css/app.css create mode 100755 libraries/foundation-6/customizer/complete.json create mode 100755 libraries/foundation-6/customizer/config.yml create mode 100755 libraries/foundation-6/customizer/essential.json rename libraries/foundation-6/{ => customizer}/index.html (100%) mode change 100644 => 100755 create mode 100755 libraries/foundation-6/customizer/lib/index.js create mode 100755 libraries/foundation-6/customizer/lib/js.js create mode 100755 libraries/foundation-6/customizer/lib/sass.js create mode 100755 libraries/foundation-6/dist/foundation-flex.css create mode 100755 libraries/foundation-6/dist/foundation-flex.min.css create mode 100755 libraries/foundation-6/dist/foundation-rtl.css create mode 100755 libraries/foundation-6/dist/foundation-rtl.min.css create mode 100755 libraries/foundation-6/dist/foundation.css rename libraries/foundation-6/{js/vendor => dist}/foundation.js (99%) mode change 100644 => 100755 create mode 100755 libraries/foundation-6/dist/foundation.min.css rename libraries/foundation-6/{js/vendor => dist}/foundation.min.js (88%) mode change 100644 => 100755 create mode 100755 libraries/foundation-6/dist/plugins/foundation.abide.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.accordion.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.accordionMenu.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.core.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.drilldown.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.dropdown.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.dropdownMenu.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.equalizer.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.interchange.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.magellan.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.offcanvas.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.orbit.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.responsiveMenu.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.responsiveToggle.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.reveal.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.slider.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.sticky.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.tabs.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.toggler.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.tooltip.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.util.box.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.util.keyboard.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.util.mediaQuery.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.util.motion.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.util.nest.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.util.timerAndImageLoader.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.util.touch.js create mode 100755 libraries/foundation-6/dist/plugins/foundation.util.triggers.js create mode 100755 libraries/foundation-6/docs/assets/img/a11y/chrome-a11y-inspector.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/rectangle-1.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/rectangle-2.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/rectangle-3.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/rectangle-4.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/rectangle-5.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/rectangle-6.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/rectangle-7.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/rectangle-8.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/square-1.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/square-2.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/square-3.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/square-4.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/square-5.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/square-6.jpg create mode 100755 libraries/foundation-6/docs/assets/img/generic/voyager.jpg create mode 100755 libraries/foundation-6/docs/assets/img/gulpfile.js create mode 100755 libraries/foundation-6/docs/assets/img/icons/favicon.ico create mode 100755 libraries/foundation-6/docs/assets/img/icons/footer-expo-retina.png create mode 100755 libraries/foundation-6/docs/assets/img/icons/footer-expo.png create mode 100755 libraries/foundation-6/docs/assets/img/icons/footer-foundation-retina.png create mode 100755 libraries/foundation-6/docs/assets/img/icons/footer-foundation.png create mode 100755 libraries/foundation-6/docs/assets/img/icons/footer-icons-retina.png create mode 100755 libraries/foundation-6/docs/assets/img/icons/footer-icons.png create mode 100755 libraries/foundation-6/docs/assets/img/icons/footer-products-retina.png create mode 100755 libraries/foundation-6/docs/assets/img/icons/footer-products.png create mode 100755 libraries/foundation-6/docs/assets/img/icons/footer-studios-retina.png create mode 100755 libraries/foundation-6/docs/assets/img/icons/footer-studios.png create mode 100755 libraries/foundation-6/docs/assets/img/icons/footer-top-icons-retina.png create mode 100755 libraries/foundation-6/docs/assets/img/icons/footer-top-icons.png create mode 100755 libraries/foundation-6/docs/assets/img/icons/footer-university.png create mode 100755 libraries/foundation-6/docs/assets/img/icons/social-retina.png create mode 100755 libraries/foundation-6/docs/assets/img/icons/social.png create mode 100755 libraries/foundation-6/docs/assets/img/inky-banner-bg-boat.svg create mode 100755 libraries/foundation-6/docs/assets/img/inky-banner-bg-clear.svg create mode 100755 libraries/foundation-6/docs/assets/img/interchange/large.jpg create mode 100755 libraries/foundation-6/docs/assets/img/interchange/map-medium.png create mode 100755 libraries/foundation-6/docs/assets/img/interchange/map-small.png create mode 100755 libraries/foundation-6/docs/assets/img/interchange/medium.jpg create mode 100755 libraries/foundation-6/docs/assets/img/interchange/small.jpg create mode 100755 libraries/foundation-6/docs/assets/img/logos/sass-logo.svg create mode 100755 libraries/foundation-6/docs/assets/img/logos/zurb-logo.svg create mode 100755 libraries/foundation-6/docs/assets/img/media-object/avatar-1.jpg create mode 100755 libraries/foundation-6/docs/assets/img/media-object/avatar-2.jpg create mode 100755 libraries/foundation-6/docs/assets/img/media-object/avatar-3.jpg create mode 100755 libraries/foundation-6/docs/assets/img/orbit/01.jpg create mode 100755 libraries/foundation-6/docs/assets/img/orbit/02.jpg create mode 100755 libraries/foundation-6/docs/assets/img/orbit/03.jpg create mode 100755 libraries/foundation-6/docs/assets/img/orbit/04.jpg create mode 100755 libraries/foundation-6/docs/assets/img/thumbnail/01.jpg create mode 100755 libraries/foundation-6/docs/assets/img/thumbnail/02.jpg create mode 100755 libraries/foundation-6/docs/assets/img/thumbnail/03.jpg create mode 100755 libraries/foundation-6/docs/assets/img/yeti.svg create mode 100755 libraries/foundation-6/docs/assets/js/docs.buildingBlocks.js create mode 100755 libraries/foundation-6/docs/assets/js/docs.examples.js create mode 100755 libraries/foundation-6/docs/assets/js/docs.interchangeMap.js create mode 100755 libraries/foundation-6/docs/assets/js/docs.js create mode 100755 libraries/foundation-6/docs/assets/js/docs.kissmetrics.js create mode 100755 libraries/foundation-6/docs/assets/partials/interchange-default.html create mode 100755 libraries/foundation-6/docs/assets/partials/interchange-large.html create mode 100755 libraries/foundation-6/docs/assets/partials/interchange-medium.html create mode 100755 libraries/foundation-6/docs/assets/partials/sticky-nav.html create mode 100755 libraries/foundation-6/docs/assets/scss/docs.scss create mode 100755 libraries/foundation-6/docs/assets/scss/examples/_grid.scss create mode 100755 libraries/foundation-6/docs/assets/scss/examples/_motion-ui.scss create mode 100755 libraries/foundation-6/docs/assets/scss/examples/_off-canvas.scss create mode 100755 libraries/foundation-6/docs/assets/scss/examples/_orbit.scss create mode 100755 libraries/foundation-6/docs/assets/scss/examples/_reveal.scss create mode 100755 libraries/foundation-6/docs/assets/scss/examples/_top-bar.scss create mode 100755 libraries/foundation-6/docs/layout/default.html create mode 100755 libraries/foundation-6/docs/pages/abide.md create mode 100755 libraries/foundation-6/docs/pages/accessibility.md create mode 100755 libraries/foundation-6/docs/pages/accordion-menu.md create mode 100755 libraries/foundation-6/docs/pages/accordion.md create mode 100755 libraries/foundation-6/docs/pages/badge.md create mode 100755 libraries/foundation-6/docs/pages/base-typography.md create mode 100755 libraries/foundation-6/docs/pages/breadcrumbs.md create mode 100755 libraries/foundation-6/docs/pages/button-group.md create mode 100755 libraries/foundation-6/docs/pages/button.md create mode 100755 libraries/foundation-6/docs/pages/callout.md create mode 100755 libraries/foundation-6/docs/pages/close-button.md create mode 100755 libraries/foundation-6/docs/pages/compatibility.md create mode 100755 libraries/foundation-6/docs/pages/drilldown-menu.md create mode 100755 libraries/foundation-6/docs/pages/dropdown-menu.md create mode 100755 libraries/foundation-6/docs/pages/dropdown.md create mode 100755 libraries/foundation-6/docs/pages/equalizer.md create mode 100755 libraries/foundation-6/docs/pages/flex-grid.md create mode 100755 libraries/foundation-6/docs/pages/flex-video.md create mode 100755 libraries/foundation-6/docs/pages/flexbox.md create mode 100755 libraries/foundation-6/docs/pages/float-classes.md create mode 100755 libraries/foundation-6/docs/pages/forms.md create mode 100755 libraries/foundation-6/docs/pages/global.md create mode 100755 libraries/foundation-6/docs/pages/grid.md create mode 100755 libraries/foundation-6/docs/pages/index.md create mode 100755 libraries/foundation-6/docs/pages/installation.md create mode 100755 libraries/foundation-6/docs/pages/interchange.md create mode 100755 libraries/foundation-6/docs/pages/javascript-utilities.md create mode 100755 libraries/foundation-6/docs/pages/javascript.md create mode 100755 libraries/foundation-6/docs/pages/kitchen-sink.md create mode 100755 libraries/foundation-6/docs/pages/label.md create mode 100755 libraries/foundation-6/docs/pages/magellan.md create mode 100755 libraries/foundation-6/docs/pages/media-object.md create mode 100755 libraries/foundation-6/docs/pages/media-queries.md create mode 100755 libraries/foundation-6/docs/pages/menu.md create mode 100755 libraries/foundation-6/docs/pages/motion-ui.md create mode 100755 libraries/foundation-6/docs/pages/navigation.md create mode 100755 libraries/foundation-6/docs/pages/off-canvas.md create mode 100755 libraries/foundation-6/docs/pages/orbit.md create mode 100755 libraries/foundation-6/docs/pages/pagination.md create mode 100755 libraries/foundation-6/docs/pages/panini.md create mode 100755 libraries/foundation-6/docs/pages/progress-bar.md create mode 100755 libraries/foundation-6/docs/pages/responsive-navigation.md create mode 100755 libraries/foundation-6/docs/pages/reveal.md create mode 100755 libraries/foundation-6/docs/pages/rtl.md create mode 100755 libraries/foundation-6/docs/pages/sass-functions.md create mode 100755 libraries/foundation-6/docs/pages/sass-mixins.md create mode 100755 libraries/foundation-6/docs/pages/sass.md create mode 100755 libraries/foundation-6/docs/pages/slider.md create mode 100755 libraries/foundation-6/docs/pages/starter-projects.md create mode 100755 libraries/foundation-6/docs/pages/sticky.md create mode 100755 libraries/foundation-6/docs/pages/style-sherpa.md create mode 100755 libraries/foundation-6/docs/pages/switch.md create mode 100755 libraries/foundation-6/docs/pages/table.md create mode 100755 libraries/foundation-6/docs/pages/tabs.md create mode 100755 libraries/foundation-6/docs/pages/thumbnail.md create mode 100755 libraries/foundation-6/docs/pages/toggler.md create mode 100755 libraries/foundation-6/docs/pages/tooltip.md create mode 100755 libraries/foundation-6/docs/pages/top-bar.md create mode 100755 libraries/foundation-6/docs/pages/typography-base.md create mode 100755 libraries/foundation-6/docs/pages/typography-helpers.md create mode 100755 libraries/foundation-6/docs/pages/visibility.md create mode 100755 libraries/foundation-6/docs/partials/component-list.html create mode 100755 libraries/foundation-6/docs/partials/footer.html create mode 100755 libraries/foundation-6/docs/partials/info-banner.html create mode 100755 libraries/foundation-6/docs/partials/mobile-navigation.html create mode 100755 libraries/foundation-6/docs/partials/navigation.html create mode 100755 libraries/foundation-6/docs/partials/off-canvi.html create mode 100755 libraries/foundation-6/docs/search.yml create mode 100755 libraries/foundation-6/docslink.sh create mode 100755 libraries/foundation-6/gulp/babel-error.js create mode 100755 libraries/foundation-6/gulp/clean.js create mode 100755 libraries/foundation-6/gulp/copy.js create mode 100755 libraries/foundation-6/gulp/customizer.js create mode 100755 libraries/foundation-6/gulp/deploy.js create mode 100755 libraries/foundation-6/gulp/docs.js create mode 100755 libraries/foundation-6/gulp/javascript.js create mode 100755 libraries/foundation-6/gulp/lint.js create mode 100755 libraries/foundation-6/gulp/sass.js create mode 100755 libraries/foundation-6/gulp/test.js create mode 100755 libraries/foundation-6/gulpfile.js delete mode 100644 libraries/foundation-6/js/app.js create mode 100755 libraries/foundation-6/js/foundation.abide.js create mode 100755 libraries/foundation-6/js/foundation.accordion.js create mode 100755 libraries/foundation-6/js/foundation.accordionMenu.js create mode 100755 libraries/foundation-6/js/foundation.core.js create mode 100755 libraries/foundation-6/js/foundation.drilldown.js create mode 100755 libraries/foundation-6/js/foundation.dropdown.js create mode 100755 libraries/foundation-6/js/foundation.dropdownMenu.js create mode 100755 libraries/foundation-6/js/foundation.equalizer.js create mode 100755 libraries/foundation-6/js/foundation.interchange.js create mode 100755 libraries/foundation-6/js/foundation.magellan.js create mode 100755 libraries/foundation-6/js/foundation.offcanvas.js create mode 100755 libraries/foundation-6/js/foundation.orbit.js create mode 100755 libraries/foundation-6/js/foundation.responsiveMenu.js create mode 100755 libraries/foundation-6/js/foundation.responsiveToggle.js create mode 100755 libraries/foundation-6/js/foundation.reveal.js create mode 100755 libraries/foundation-6/js/foundation.slider.js create mode 100755 libraries/foundation-6/js/foundation.sticky.js create mode 100755 libraries/foundation-6/js/foundation.tabs.js create mode 100755 libraries/foundation-6/js/foundation.toggler.js create mode 100755 libraries/foundation-6/js/foundation.tooltip.js create mode 100755 libraries/foundation-6/js/foundation.util.box.js create mode 100755 libraries/foundation-6/js/foundation.util.keyboard.js create mode 100755 libraries/foundation-6/js/foundation.util.mediaQuery.js create mode 100755 libraries/foundation-6/js/foundation.util.motion.js create mode 100755 libraries/foundation-6/js/foundation.util.nest.js create mode 100755 libraries/foundation-6/js/foundation.util.timerAndImageLoader.js create mode 100755 libraries/foundation-6/js/foundation.util.touch.js create mode 100755 libraries/foundation-6/js/foundation.util.triggers.js delete mode 100644 libraries/foundation-6/js/jquery.js create mode 100755 libraries/foundation-6/js/plugins/foundation.abide.js create mode 100755 libraries/foundation-6/js/plugins/foundation.accordion.js create mode 100755 libraries/foundation-6/js/plugins/foundation.accordionMenu.js create mode 100755 libraries/foundation-6/js/plugins/foundation.core.js create mode 100755 libraries/foundation-6/js/plugins/foundation.drilldown.js create mode 100755 libraries/foundation-6/js/plugins/foundation.dropdown.js create mode 100755 libraries/foundation-6/js/plugins/foundation.dropdownMenu.js create mode 100755 libraries/foundation-6/js/plugins/foundation.equalizer.js create mode 100755 libraries/foundation-6/js/plugins/foundation.interchange.js create mode 100755 libraries/foundation-6/js/plugins/foundation.magellan.js create mode 100755 libraries/foundation-6/js/plugins/foundation.offcanvas.js create mode 100755 libraries/foundation-6/js/plugins/foundation.orbit.js create mode 100755 libraries/foundation-6/js/plugins/foundation.responsiveMenu.js create mode 100755 libraries/foundation-6/js/plugins/foundation.responsiveToggle.js create mode 100755 libraries/foundation-6/js/plugins/foundation.reveal.js create mode 100755 libraries/foundation-6/js/plugins/foundation.slider.js create mode 100755 libraries/foundation-6/js/plugins/foundation.sticky.js create mode 100755 libraries/foundation-6/js/plugins/foundation.tabs.js create mode 100755 libraries/foundation-6/js/plugins/foundation.toggler.js create mode 100755 libraries/foundation-6/js/plugins/foundation.tooltip.js create mode 100755 libraries/foundation-6/js/plugins/foundation.util.box.js create mode 100755 libraries/foundation-6/js/plugins/foundation.util.keyboard.js create mode 100755 libraries/foundation-6/js/plugins/foundation.util.mediaQuery.js create mode 100755 libraries/foundation-6/js/plugins/foundation.util.motion.js create mode 100755 libraries/foundation-6/js/plugins/foundation.util.nest.js create mode 100755 libraries/foundation-6/js/plugins/foundation.util.timerAndImageLoader.js create mode 100755 libraries/foundation-6/js/plugins/foundation.util.touch.js create mode 100755 libraries/foundation-6/js/plugins/foundation.util.triggers.js delete mode 100644 libraries/foundation-6/js/vendor/jquery.js delete mode 100644 libraries/foundation-6/js/vendor/what-input.js delete mode 100644 libraries/foundation-6/js/what-input.js create mode 100755 libraries/foundation-6/meteor-README.md create mode 100755 libraries/foundation-6/package.js create mode 100755 libraries/foundation-6/package.json create mode 100755 libraries/foundation-6/sache.json create mode 100755 libraries/foundation-6/scss/_global.scss create mode 100755 libraries/foundation-6/scss/components/_accordion-menu.scss create mode 100755 libraries/foundation-6/scss/components/_accordion.scss create mode 100755 libraries/foundation-6/scss/components/_badge.scss create mode 100755 libraries/foundation-6/scss/components/_breadcrumbs.scss create mode 100755 libraries/foundation-6/scss/components/_button-group.scss create mode 100755 libraries/foundation-6/scss/components/_button.scss create mode 100755 libraries/foundation-6/scss/components/_callout.scss create mode 100755 libraries/foundation-6/scss/components/_close-button.scss create mode 100755 libraries/foundation-6/scss/components/_drilldown.scss create mode 100755 libraries/foundation-6/scss/components/_dropdown-menu.scss create mode 100755 libraries/foundation-6/scss/components/_dropdown.scss create mode 100755 libraries/foundation-6/scss/components/_flex-video.scss create mode 100755 libraries/foundation-6/scss/components/_flex.scss create mode 100755 libraries/foundation-6/scss/components/_float.scss create mode 100755 libraries/foundation-6/scss/components/_label.scss create mode 100755 libraries/foundation-6/scss/components/_media-object.scss create mode 100755 libraries/foundation-6/scss/components/_menu-icon.scss create mode 100755 libraries/foundation-6/scss/components/_menu.scss create mode 100755 libraries/foundation-6/scss/components/_off-canvas.scss create mode 100755 libraries/foundation-6/scss/components/_orbit.scss create mode 100755 libraries/foundation-6/scss/components/_pagination.scss create mode 100755 libraries/foundation-6/scss/components/_progress-bar.scss create mode 100755 libraries/foundation-6/scss/components/_reveal.scss create mode 100755 libraries/foundation-6/scss/components/_slider.scss create mode 100755 libraries/foundation-6/scss/components/_sticky.scss create mode 100755 libraries/foundation-6/scss/components/_switch.scss create mode 100755 libraries/foundation-6/scss/components/_table.scss create mode 100755 libraries/foundation-6/scss/components/_tabs.scss create mode 100755 libraries/foundation-6/scss/components/_thumbnail.scss create mode 100755 libraries/foundation-6/scss/components/_title-bar.scss create mode 100755 libraries/foundation-6/scss/components/_tooltip.scss create mode 100755 libraries/foundation-6/scss/components/_top-bar.scss create mode 100755 libraries/foundation-6/scss/components/_visibility.scss create mode 100755 libraries/foundation-6/scss/forms/_checkbox.scss create mode 100755 libraries/foundation-6/scss/forms/_error.scss create mode 100755 libraries/foundation-6/scss/forms/_fieldset.scss create mode 100755 libraries/foundation-6/scss/forms/_forms.scss create mode 100755 libraries/foundation-6/scss/forms/_help-text.scss create mode 100755 libraries/foundation-6/scss/forms/_input-group.scss create mode 100755 libraries/foundation-6/scss/forms/_label.scss create mode 100755 libraries/foundation-6/scss/forms/_meter.scss create mode 100755 libraries/foundation-6/scss/forms/_progress.scss create mode 100755 libraries/foundation-6/scss/forms/_range.scss create mode 100755 libraries/foundation-6/scss/forms/_select.scss create mode 100755 libraries/foundation-6/scss/forms/_text.scss create mode 100755 libraries/foundation-6/scss/foundation.scss create mode 100755 libraries/foundation-6/scss/grid/_classes.scss create mode 100755 libraries/foundation-6/scss/grid/_column.scss create mode 100755 libraries/foundation-6/scss/grid/_flex-grid.scss create mode 100755 libraries/foundation-6/scss/grid/_grid.scss create mode 100755 libraries/foundation-6/scss/grid/_gutter.scss create mode 100755 libraries/foundation-6/scss/grid/_layout.scss create mode 100755 libraries/foundation-6/scss/grid/_position.scss create mode 100755 libraries/foundation-6/scss/grid/_row.scss create mode 100755 libraries/foundation-6/scss/grid/_size.scss create mode 100755 libraries/foundation-6/scss/settings/_settings.scss create mode 100755 libraries/foundation-6/scss/typography/_alignment.scss create mode 100755 libraries/foundation-6/scss/typography/_base.scss create mode 100755 libraries/foundation-6/scss/typography/_helpers.scss create mode 100755 libraries/foundation-6/scss/typography/_print.scss create mode 100755 libraries/foundation-6/scss/typography/_typography.scss create mode 100755 libraries/foundation-6/scss/util/_breakpoint.scss create mode 100755 libraries/foundation-6/scss/util/_color.scss create mode 100755 libraries/foundation-6/scss/util/_flex.scss create mode 100755 libraries/foundation-6/scss/util/_mixins.scss create mode 100755 libraries/foundation-6/scss/util/_selector.scss create mode 100755 libraries/foundation-6/scss/util/_unit.scss create mode 100755 libraries/foundation-6/scss/util/_util.scss create mode 100755 libraries/foundation-6/scss/util/_value.scss create mode 100755 libraries/foundation-6/test/javascript/components/abide.js create mode 100755 libraries/foundation-6/test/javascript/components/accordion.js create mode 100755 libraries/foundation-6/test/javascript/components/accordionMenu.js create mode 100755 libraries/foundation-6/test/javascript/components/drilldown.js create mode 100755 libraries/foundation-6/test/javascript/components/dropdown.js create mode 100755 libraries/foundation-6/test/javascript/components/dropdownMenu.js create mode 100755 libraries/foundation-6/test/javascript/components/equalizer.js create mode 100755 libraries/foundation-6/test/javascript/components/interchange.js create mode 100755 libraries/foundation-6/test/javascript/components/magellan.js create mode 100755 libraries/foundation-6/test/javascript/components/offcanvas.js create mode 100755 libraries/foundation-6/test/javascript/components/orbit.js create mode 100755 libraries/foundation-6/test/javascript/components/responsiveMenu.js create mode 100755 libraries/foundation-6/test/javascript/components/responsiveToggle.js create mode 100755 libraries/foundation-6/test/javascript/components/reveal.js create mode 100755 libraries/foundation-6/test/javascript/components/slider.js create mode 100755 libraries/foundation-6/test/javascript/components/sticky.js create mode 100755 libraries/foundation-6/test/javascript/components/tabs.js create mode 100755 libraries/foundation-6/test/javascript/components/toggler.js create mode 100755 libraries/foundation-6/test/javascript/components/tooltip.js create mode 100755 libraries/foundation-6/test/javascript/index.html create mode 100755 libraries/foundation-6/test/javascript/lib/chai-jquery.js create mode 100755 libraries/foundation-6/test/javascript/lib/chai.js create mode 100755 libraries/foundation-6/test/javascript/lib/mocha.css create mode 100755 libraries/foundation-6/test/javascript/lib/mocha.js create mode 100755 libraries/foundation-6/test/javascript/lib/sinon.js create mode 100755 libraries/foundation-6/test/javascript/util/core.js create mode 100755 libraries/foundation-6/test/sass/_breakpoint.scss create mode 100755 libraries/foundation-6/test/sass/_color.scss create mode 100755 libraries/foundation-6/test/sass/_components.scss create mode 100755 libraries/foundation-6/test/sass/_selector.scss create mode 100755 libraries/foundation-6/test/sass/_unit.scss create mode 100755 libraries/foundation-6/test/sass/_value.scss create mode 100755 libraries/foundation-6/test/sass/test_sass.js create mode 100755 libraries/foundation-6/test/visual/_template.html create mode 100755 libraries/foundation-6/test/visual/abide/abide-radio.html create mode 100755 libraries/foundation-6/test/visual/abide/hidden_and_ignored_fields.html create mode 100755 libraries/foundation-6/test/visual/abide/text.html create mode 100755 libraries/foundation-6/test/visual/accordion-menu/keyboard.html create mode 100755 libraries/foundation-6/test/visual/accordion/focus.html create mode 100755 libraries/foundation-6/test/visual/accordion/item-attributes.html create mode 100755 libraries/foundation-6/test/visual/accordion/nested.html create mode 100755 libraries/foundation-6/test/visual/drilldown/drilldown-menu-parent-link.html create mode 100755 libraries/foundation-6/test/visual/drilldown/long-drilldown-menu.html create mode 100755 libraries/foundation-6/test/visual/dropdown-menu/basic-dropdown-menu-rtl.html create mode 100755 libraries/foundation-6/test/visual/dropdown-menu/right-aligned-dropdown-menu.html create mode 100755 libraries/foundation-6/test/visual/dropdown-menu/submenu-mouse-reenter.html create mode 100755 libraries/foundation-6/test/visual/dropdown/basic-dropdown-rtl.html create mode 100755 libraries/foundation-6/test/visual/dropdown/close-on-click.html create mode 100755 libraries/foundation-6/test/visual/dropdown/in-top-bar.html create mode 100755 libraries/foundation-6/test/visual/dropdown/long.html create mode 100755 libraries/foundation-6/test/visual/equalizer/equalizer-events.html create mode 100755 libraries/foundation-6/test/visual/flex-grid/column-row.html create mode 100755 libraries/foundation-6/test/visual/flex-grid/nesting.html create mode 100755 libraries/foundation-6/test/visual/flex-grid/unstack-block-grid.html create mode 100755 libraries/foundation-6/test/visual/grid/nesting.html create mode 100755 libraries/foundation-6/test/visual/orbit/touch.html create mode 100755 libraries/foundation-6/test/visual/responsive-menu/dropdown-on-right-middle.html create mode 100755 libraries/foundation-6/test/visual/responsive-menu/re-init.html create mode 100755 libraries/foundation-6/test/visual/responsive-menu/responsive-menu-left-dropdown.html create mode 100755 libraries/foundation-6/test/visual/responsive-menu/responsive-menu-right-dropdown.html create mode 100755 libraries/foundation-6/test/visual/responsive-menu/responsive-menu.html create mode 100755 libraries/foundation-6/test/visual/responsive-menu/various-menu-options-flex.html create mode 100755 libraries/foundation-6/test/visual/responsive-menu/various-menu-options.html create mode 100755 libraries/foundation-6/test/visual/reveal/basic.html create mode 100755 libraries/foundation-6/test/visual/reveal/full-reveal.html create mode 100755 libraries/foundation-6/test/visual/reveal/long-page-with-add-this.html create mode 100755 libraries/foundation-6/test/visual/reveal/long-page.html create mode 100755 libraries/foundation-6/test/visual/reveal/reveal-callout.html create mode 100755 libraries/foundation-6/test/visual/reveal/reveal-test-data-options.html create mode 100755 libraries/foundation-6/test/visual/reveal/tall.html create mode 100755 libraries/foundation-6/test/visual/slider/nonzero-start.html create mode 100755 libraries/foundation-6/test/visual/sticky/accordions-with-anchors.html create mode 100755 libraries/foundation-6/test/visual/sticky/anchors-with-callouts.html create mode 100755 libraries/foundation-6/test/visual/sticky/height-transition.html create mode 100755 libraries/foundation-6/test/visual/sticky/menus-with-anchors.html create mode 100755 libraries/foundation-6/test/visual/top-bar/stacking.html create mode 100755 libraries/foundation-6/test/visual/triggers/programmatic.html create mode 100755 libraries/foundation-6/test/visual/typography-helpers/responsive-text-alignment.html diff --git a/libraries/foundation-6/.babelrc b/libraries/foundation-6/.babelrc new file mode 100755 index 00000000..b673dfc0 --- /dev/null +++ b/libraries/foundation-6/.babelrc @@ -0,0 +1,13 @@ +{ + "plugins": [ + "transform-es2015-arrow-functions", + "transform-es2015-block-scoped-functions", + "transform-es2015-block-scoping", + "transform-es2015-classes", + "transform-es2015-destructuring", + "transform-es2015-template-literals", + "transform-es2015-parameters", + "transform-es2015-shorthand-properties", + "transform-es2015-spread", + ] +} diff --git a/libraries/foundation-6/.bowerrc b/libraries/foundation-6/.bowerrc new file mode 100755 index 00000000..69fad358 --- /dev/null +++ b/libraries/foundation-6/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "bower_components" +} diff --git a/libraries/foundation-6/.editorconfig b/libraries/foundation-6/.editorconfig new file mode 100755 index 00000000..561cd5ef --- /dev/null +++ b/libraries/foundation-6/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/libraries/foundation-6/.eslintrc b/libraries/foundation-6/.eslintrc new file mode 100755 index 00000000..e457c2f6 --- /dev/null +++ b/libraries/foundation-6/.eslintrc @@ -0,0 +1,65 @@ +{ + "ecmaVersion": 6, + "env": { + "browser": true, + "builtin": true, + "es6": true, + "jasmine": true, + "jquery": true, + "mocha": true, + "node": true + }, + "globals": { + "Foundation": true + }, + "parser": "babel-eslint", + "parserOptions": { + "ecmaFeatures": { + "impliedStrict": true, + "jsx": false + }, + "ecmaVersion": 6, + "sourceType": "module" + }, + "rules": { + "block-scoped-var": 2, + "camelcase": 2, + "comma-style": [2, "last"], + "curly": [0, "all"], + "dot-notation": [ + 2, + { + "allowKeywords": true + } + ], + "eqeqeq": [2, "allow-null"], + "guard-for-in": 2, + "new-cap": 2, + "no-bitwise": 2, + "no-caller": 2, + "no-cond-assign": [2, "except-parens"], + "no-debugger": 2, + "no-empty": 2, + "no-eval": 2, + "no-extend-native": 2, + "no-extra-parens": 1, + "no-irregular-whitespace": 2, + "no-iterator": 2, + "no-loop-func": 2, + "no-multi-str": 2, + "no-new": 2, + "no-plusplus": 0, + "no-proto": 2, + "no-script-url": 2, + "no-sequences": 2, + "no-shadow": 1, + "no-undef": 2, + "no-unused-vars": 1, + "no-with": 2, + "quotes": 0, + "semi": [0, "never"], + "strict": [1, "global"], + "valid-typeof": 2, + "wrap-iife": [2, "inside"] + } +} \ No newline at end of file diff --git a/libraries/foundation-6/.github/ISSUE_TEMPLATE.md b/libraries/foundation-6/.github/ISSUE_TEMPLATE.md new file mode 100755 index 00000000..c6dc6a27 --- /dev/null +++ b/libraries/foundation-6/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,18 @@ +<!-- Please only file bugs with Foundation on GitHub. If you've got a more general question about how to use Foundation, we can help you on the Foundation Forum: http://foundation.zurb.com/forum --> + +**How can we reproduce this bug?** + +1. Step one +2. Step two +3. Step three + +**What did you expect to happen?** + +**What happened instead?** + +**Test case:** + +Give us a link to a CodePen or JSFiddle that recreates the issue. + +- [CodePen with Foundation 6 and MotionUI](http://codepen.io/rafibomb/pen/xVVGOB) +- [CodePen with Foundation 6, Flexbox grid and MotionUI](http://codepen.io/rafibomb/pen/jqqPra) diff --git a/libraries/foundation-6/.github/PULL_REQUEST_TEMPLATE.md b/libraries/foundation-6/.github/PULL_REQUEST_TEMPLATE.md new file mode 100755 index 00000000..3f4f466e --- /dev/null +++ b/libraries/foundation-6/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,9 @@ +Before submitting a pull request, make sure it's targeting the right branch: + +- For documentation fixes, use `master`. +- For bug fixes, use `develop`. +- For new features, use the branch for the next minor version, which will be formatted `v6.x`. + +If you're fixing a JavaScript issue, it would help to create a new test case under the folder `test/visual/` that recreates the issue and show's that it's been fixed. Run `npm test` to compile the testing folder. + +Happy coding! :) diff --git a/libraries/foundation-6/.gitignore b/libraries/foundation-6/.gitignore new file mode 100755 index 00000000..1c23ecef --- /dev/null +++ b/libraries/foundation-6/.gitignore @@ -0,0 +1,57 @@ +*.DS_Store +*.gem +*.orig +*.rbc +*.rbenv-version +*.ruby-version +*.scssc +*.sublime-* +*.swp +*.swo +.bundle +.config +.grunt +.idea +.sass-cache/* +.yardoc +_build +.customizer + +bower_components +bundle +build/* +/docs2/public/* +_yardoc +coverage +docs/public/* +InstalledFiles +lib/bundler/man +marketing/.sass-cache/* +node_modules +pkg +rdoc +spec/reports +npm-debug.log +_debug.json + +*.orig +node_modules +docs/public/* +*.scssc +*.rbenv-version +*.ruby-version +/docs2/public/* +.settings +.project +test/scss/output-test +test/tmp +test/version_tmp +tmp +testing/_build +test/javascript/js-tests.js + +pizza/ +data.json +npm-debug.log +foundation-docs +vendor diff --git a/libraries/foundation-6/.npmignore b/libraries/foundation-6/.npmignore new file mode 100755 index 00000000..95048910 --- /dev/null +++ b/libraries/foundation-6/.npmignore @@ -0,0 +1,19 @@ +.sass-cache +_build +bower_components +config +docs +gulp +lib +spec +bower.json +composer.json +CONTRIBUTING.md +gulpfile.js +meteor-README.md +package.js +sache.json +test +.editorconfig +.versions +.babelrc diff --git a/libraries/foundation-6/.scss-lint.yml b/libraries/foundation-6/.scss-lint.yml new file mode 100755 index 00000000..d267fd0b --- /dev/null +++ b/libraries/foundation-6/.scss-lint.yml @@ -0,0 +1,189 @@ +# Default application configuration that all configurations inherit from. + +scss_files: "scss/**/*.scss" + +linters: + BangFormat: + enabled: true + space_before_bang: true + space_after_bang: false + + BorderZero: + enabled: true + convention: zero # or `none` + + ColorKeyword: + enabled: true + + ColorVariable: + enabled: true + + Comment: + enabled: false + + DebugStatement: + enabled: true + + DeclarationOrder: + enabled: true + + DuplicateProperty: + enabled: true + + ElsePlacement: + enabled: true + style: new_line # or 'same_line' + + EmptyLineBetweenBlocks: + enabled: true + ignore_single_line_blocks: true + + EmptyRule: + enabled: true + + FinalNewline: + enabled: true + present: true + + HexLength: + enabled: true + style: short # or 'long' + + HexNotation: + enabled: true + style: lowercase # or 'uppercase' + + HexValidation: + enabled: true + + IdSelector: + enabled: true + + ImportantRule: + enabled: false + + ImportPath: + enabled: true + leading_underscore: false + filename_extension: false + + Indentation: + enabled: true + allow_non_nested_indentation: false + character: space # or 'tab' + width: 2 + + LeadingZero: + enabled: true + style: include_zero # or 'include_zero' + + MergeableSelector: + enabled: true + force_nesting: true + + NameFormat: + enabled: true + allow_leading_underscore: true + convention: hyphenated_lowercase # or 'BEM', or a regex pattern + + NestingDepth: + enabled: true + max_depth: 3 + + PlaceholderInExtend: + enabled: true + + PropertyCount: + enabled: false + include_nested: false + max_properties: 10 + + PropertySortOrder: + enabled: false + ignore_unspecified: false + separate_groups: false + + PropertySpelling: + enabled: true + extra_properties: [] + + QualifyingElement: + enabled: true + allow_element_with_attribute: false + allow_element_with_class: false + allow_element_with_id: false + + SelectorDepth: + enabled: true + max_depth: 3 + + SelectorFormat: + enabled: true + convention: '([a-z0-9]+-?)+' + + Shorthand: + enabled: true + + SingleLinePerProperty: + enabled: true + allow_single_line_rule_sets: false + + SingleLinePerSelector: + enabled: false + + SpaceAfterComma: + enabled: true + + SpaceAfterPropertyColon: + enabled: true + style: one_space # or 'no_space', or 'at_least_one_space', or 'aligned' + + SpaceAfterPropertyName: + enabled: true + + SpaceBeforeBrace: + enabled: true + style: space # or 'new_line' + allow_single_line_padding: true + + SpaceBetweenParens: + enabled: true + spaces: 0 + + StringQuotes: + enabled: true + style: single_quotes # or double_quotes + + TrailingSemicolon: + enabled: true + + TrailingZero: + enabled: false + + UnnecessaryMantissa: + enabled: true + + UnnecessaryParentReference: + enabled: true + + UrlFormat: + enabled: true + + UrlQuotes: + enabled: true + + VariableForProperty: + enabled: false + properties: [] + + VendorPrefixes: + enabled: true + identifier_list: base + include: [] + exclude: [] + + ZeroUnit: + enabled: true + + Compass::*: + enabled: false \ No newline at end of file diff --git a/libraries/foundation-6/.travis.yml b/libraries/foundation-6/.travis.yml new file mode 100755 index 00000000..6b21648c --- /dev/null +++ b/libraries/foundation-6/.travis.yml @@ -0,0 +1,9 @@ +language: node_js +node_js: + - "0.12" +before_install: + - rvm install 2.2.2 +install: + - npm install -g bower + - npm install + - gem install scss_lint diff --git a/libraries/foundation-6/.versions b/libraries/foundation-6/.versions new file mode 100755 index 00000000..eb5c7f6e --- /dev/null +++ b/libraries/foundation-6/.versions @@ -0,0 +1,14 @@ +babel-compiler@6.6.4 +babel-runtime@0.1.8 +caching-compiler@1.0.4 +ecmascript@0.4.3 +ecmascript-runtime@0.2.10 +fourseven:scss@3.4.1 +jquery@1.11.8 +meteor@1.1.14 +modules@0.6.1 +modules-runtime@0.6.3 +promise@0.6.7 +random@1.0.9 +underscore@1.0.8 +zurb:foundation-sites@6.2.2_2 diff --git a/libraries/foundation-6/CONTRIBUTING.md b/libraries/foundation-6/CONTRIBUTING.md new file mode 100755 index 00000000..db2be6c5 --- /dev/null +++ b/libraries/foundation-6/CONTRIBUTING.md @@ -0,0 +1,46 @@ +# Foundation Contributing Guidelines + +Although Foundation is maintained by ZURB, it’s also a community effort. Whether it’s bug fixing, feature development, or contributions to the ecosystem, designers and developers from all over the world help make Foundation the most advanced framework in the world. + +A select group of our contributors have been dubbed *Yetinauts*. They have direct write access to the codebase and support the core Foundation team on the development of the framework. Are you interested in making your mark on the Foundation framework? Whether you’re just submitting bugs or helping us write new features, there are many ways to contribute to Foundation. + +## Terms + +- The **community** is anyone commenting on issues or opening pull requests. That includes you! +- A **Yetinaut** is anyone with write access to the repository. +- The **Core Team** is anyone on the Foundation Team. + +## Issues + +Open an issue for any problem you have with the framework. If there's anything missing from your issue, such as extra context, a code sample, etc. a team member will ask for more info in the comments. + +Support requests are generally better suited for the [Foundation Forum](http://foundation.zurb.com), while GitHub is more appropriate for bugs. If you aren’t sure if your issue is a bug or not, don’t worry! Post your problem on GitHub and the team will help you along. Every participant is expected to follow the project's Code of Conduct so please be courteous and respectful. + +## Contributions + +All new features and bug fixes should be submitted as pull requests, so the community can review and discuss them. Core Team members can commit directly to the repository for very small changes, but should generally also submit new code as a pull request. + +When you submit a pull request, @mention a few people you’d like to help you review it. Once those people have signed off on it, the pull request can be merged! Core Team members will handle the merge itself. + +## Coding Standards + +If you aren't sure how a feature should be implemented, we recommend checking out our [standards document](https://github.com/zurb/foundation-standards), which outlines every aspect of writing framework features, from Sass to JavaScript. + +## Becoming a Yetinaut + +Want to join our crack team of Yetinauts? The Core Team is inviting active community members to become Yetinauts on a case-by-case basis. If you want to become a contributor, engage the community on the Foundation Forum, help us close issues on GitHub, and review pull requests from other contributors. + +If you’ve made substantial contributions to a Foundation framework and haven’t heard from us yet, you can reach out at foundation@zurb.com. + +Contributors are expected to: + +- Engage the community on GitHub by responding to and tagging issues. +- Write pull requests to address bugs and feature requests. +- Help in reviewing pull requests from users, contributors, and the Core Team. +- Follow the guidelines outlined in this document. + +Here are some example contributions from some of our awesome team members: + +- Colin Marshall converted our Sass unit tests to a newer test runner called True. +- Andy Cochran reworked the CSS for button groups to fix issues with stacking and border radii. +- designerno1 developed the Equalize by Row feature for the Equalizer plugin. diff --git a/libraries/foundation-6/LICENSE b/libraries/foundation-6/LICENSE new file mode 100755 index 00000000..a8abd4c6 --- /dev/null +++ b/libraries/foundation-6/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2013-2016 ZURB, inc. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/libraries/foundation-6/README.md b/libraries/foundation-6/README.md new file mode 100755 index 00000000..1c201776 --- /dev/null +++ b/libraries/foundation-6/README.md @@ -0,0 +1,44 @@ +# [Foundation for Sites](http://foundation.zurb.com) + +[](https://badge.fury.io/js/foundation-sites) [](https://badge.fury.io/bo/foundation-sites) [](https://badge.fury.io/rb/foundation-rails) [](https://david-dm.org/zurb/foundation-sites#info=devDependencies) [](https://gitter.im/zurb/foundation-sites?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +Foundation is the most advanced responsive front-end framework in the world. Quickly go from prototype to production, building sites or apps that work on any kind of device with Foundation. Includes a fully customizable, responsive grid, a large library of Sass mixins, commonly used JavaScript plugins, and full accessibility support. + +## Getting Started + +The quickest way to get started is with the [basic CSS download](http://foundation.zurb.com/sites/download/). You can get versions with every component, essential ones only, or a custom build. + +If you're a Sass user, we have two starter project templates, the [Basic Template](https://github.com/zurb/foundation-sites-template) and the [ZURB Template](https://github.com/zurb/foundation-zurb-template). You can install them by manually downloading them from GitHub, or using the [Foundation CLI](https://github.com/zurb/foundation-cli). + +Lastly, if you're rolling your own setup, you can install Foundation through a variety of [package managers](http://foundation.zurb.com/sites/docs/installation.html#package-managers). + +## Documentation + +The documentation can be found at <https://foundation.zurb.com/sites/docs>. To run the documentation locally on your machine, you need [Node.js](https://nodejs.org/en/) and [Ruby](https://www.ruby-lang.org/en/) installed on your computer. (Your Node.js version must be 0.12 or higher.) + +Run these commands to set up the documentation: + +```bash +git clone https://github.com/zurb/foundation-sites +cd foundation-sites +gem install scss-lint +npm install +``` + +Then run `npm start` to compile the documentation. When it finishes, a new browser window will open pointing to a BrowserSync server displaying the documentation. + +## Testing + +Foundation has three kinds of tests: JavaScript, Sass, and visual regression. Refer to our [testing guide](https://github.com/zurb/foundation-sites/wiki/Testing-Guide) for more details. + +These commands will run the various tests: + +- `npm run test:sass` +- `npm run test:javascript` +- `npm run test:visual` + +## Contributing + +Check out our [contributing guide](http://foundation.zurb.com/develop/contribute.html) to learn how you can contribute to Foundation. You can also browse the [Help Wanted](https://github.com/zurb/foundation-sites/labels/help%20wanted) tag in our issue tracker to find things to do. + +Copyright (c) 2016 ZURB, inc. diff --git a/libraries/foundation-6/assets/foundation-flex.scss b/libraries/foundation-6/assets/foundation-flex.scss new file mode 100755 index 00000000..7ae2ca55 --- /dev/null +++ b/libraries/foundation-6/assets/foundation-flex.scss @@ -0,0 +1,3 @@ +@import '../scss/foundation'; + +@include foundation-everything($flex: true); diff --git a/libraries/foundation-6/assets/foundation-rtl.scss b/libraries/foundation-6/assets/foundation-rtl.scss new file mode 100755 index 00000000..4d31b780 --- /dev/null +++ b/libraries/foundation-6/assets/foundation-rtl.scss @@ -0,0 +1,5 @@ +$global-text-direction: rtl; + +@import '../scss/foundation'; + +@include foundation-everything; diff --git a/libraries/foundation-6/assets/foundation.scss b/libraries/foundation-6/assets/foundation.scss new file mode 100755 index 00000000..09584ae1 --- /dev/null +++ b/libraries/foundation-6/assets/foundation.scss @@ -0,0 +1,3 @@ +@import '../scss/foundation'; + +@include foundation-everything; diff --git a/libraries/foundation-6/bower.json b/libraries/foundation-6/bower.json new file mode 100755 index 00000000..7a09234e --- /dev/null +++ b/libraries/foundation-6/bower.json @@ -0,0 +1,32 @@ +{ + "name": "foundation-sites", + "version": "6.2.3", + "main": [ + "scss/foundation.scss", + "dist/foundation.js" + ], + "ignore": [ + "config", + "docs", + "gulp", + "lib", + "test", + "composer.json", + "CONTRIBUTING.md", + "gulpfile.js", + "meteor-README.md", + "package.js", + "package.json", + "sache.json", + ".editorconfig", + ".npm", + ".gitignore", + ".npmignore", + ".versions", + ".babelrc" + ], + "dependencies": { + "jquery": "~2.2.0", + "what-input": "~2.0.0" + } +} diff --git a/libraries/foundation-6/code-of-conduct.md b/libraries/foundation-6/code-of-conduct.md new file mode 100755 index 00000000..4774add3 --- /dev/null +++ b/libraries/foundation-6/code-of-conduct.md @@ -0,0 +1,43 @@ +# Foundation Community Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as the Foundation team pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery and unwelcome sexual attention or advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +The Foundation team is responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +The Foundation team has the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing Foundation or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by the Foundation team. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at foundation@zurb.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Contributors who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at <http://contributor-covenant.org/version/1/4>. diff --git a/libraries/foundation-6/composer.json b/libraries/foundation-6/composer.json new file mode 100755 index 00000000..034cca47 --- /dev/null +++ b/libraries/foundation-6/composer.json @@ -0,0 +1,28 @@ +{ + "name": "zurb/foundation-sites", + "description": "The most advanced responsive front-end framework in the world.", + "version": "6.2.1", + "keywords": [ + "css", + "scss", + "sass", + "js", + "responsive", + "mobile-first", + "framework" + ], + "homepage": "http://foundation.zurb.com", + "authors": [ + { + "name": "ZURB, Inc.", + "homepage": "http://zurb.com", + "email": "foundation@zurb.com" + } + ], + "support": { + "email": "foundation@zurb.com", + "issues": "https://github.com/zurb/foundation-sites/issues", + "forum": "http://foundation.zurb.com/forum" + }, + "license": "MIT" +} diff --git a/libraries/foundation-6/css/app.css b/libraries/foundation-6/css/app.css deleted file mode 100644 index e69de29b..00000000 diff --git a/libraries/foundation-6/css/foundation.css b/libraries/foundation-6/css/foundation.css index 66aca962..2e3b7d0e 100644 --- a/libraries/foundation-6/css/foundation.css +++ b/libraries/foundation-6/css/foundation.css @@ -1453,130 +1453,6 @@ kbd { h3 { page-break-after: avoid; } } -.button { - display: inline-block; - text-align: center; - line-height: 1; - cursor: pointer; - -webkit-appearance: none; - transition: background-color 0.25s ease-out, color 0.25s ease-out; - vertical-align: middle; - border: 1px solid transparent; - border-radius: 0; - padding: 0.85em 1em; - margin: 0 0 1rem 0; - font-size: 0.9rem; - background-color: #2199e8; - color: #fefefe; } - [data-whatinput='mouse'] .button { - outline: 0; } - .button:hover, .button:focus { - background-color: #1583cc; - color: #fefefe; } - .button.tiny { - font-size: 0.6rem; } - .button.small { - font-size: 0.75rem; } - .button.large { - font-size: 1.25rem; } - .button.expanded { - display: block; - width: 100%; - margin-left: 0; - margin-right: 0; } - .button.primary { - background-color: #2199e8; - color: #fefefe; } - .button.primary:hover, .button.primary:focus { - background-color: #147cc0; - color: #fefefe; } - .button.secondary { - background-color: #777; - color: #fefefe; } - .button.secondary:hover, .button.secondary:focus { - background-color: #5f5f5f; - color: #fefefe; } - .button.success { - background-color: #3adb76; - color: #fefefe; } - .button.success:hover, .button.success:focus { - background-color: #22bb5b; - color: #fefefe; } - .button.warning { - background-color: #ffae00; - color: #fefefe; } - .button.warning:hover, .button.warning:focus { - background-color: #cc8b00; - color: #fefefe; } - .button.alert { - background-color: #ec5840; - color: #fefefe; } - .button.alert:hover, .button.alert:focus { - background-color: #da3116; - color: #fefefe; } - .button.hollow { - border: 1px solid #2199e8; - color: #2199e8; } - .button.hollow, .button.hollow:hover, .button.hollow:focus { - background-color: transparent; } - .button.hollow:hover, .button.hollow:focus { - border-color: #0c4d78; - color: #0c4d78; } - .button.hollow.primary { - border: 1px solid #2199e8; - color: #2199e8; } - .button.hollow.primary:hover, .button.hollow.primary:focus { - border-color: #0c4d78; - color: #0c4d78; } - .button.hollow.secondary { - border: 1px solid #777; - color: #777; } - .button.hollow.secondary:hover, .button.hollow.secondary:focus { - border-color: #3c3c3c; - color: #3c3c3c; } - .button.hollow.success { - border: 1px solid #3adb76; - color: #3adb76; } - .button.hollow.success:hover, .button.hollow.success:focus { - border-color: #157539; - color: #157539; } - .button.hollow.warning { - border: 1px solid #ffae00; - color: #ffae00; } - .button.hollow.warning:hover, .button.hollow.warning:focus { - border-color: #805700; - color: #805700; } - .button.hollow.alert { - border: 1px solid #ec5840; - color: #ec5840; } - .button.hollow.alert:hover, .button.hollow.alert:focus { - border-color: #881f0e; - color: #881f0e; } - .button.disabled, .button[disabled] { - opacity: 0.25; - cursor: not-allowed; } - .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { - background-color: #2199e8; - color: #fefefe; } - .button.dropdown::after { - content: ''; - display: block; - width: 0; - height: 0; - border: inset 0.4em; - border-color: #fefefe transparent transparent; - border-top-style: solid; - border-bottom-width: 0; - position: relative; - top: 0.4em; - float: right; - margin-left: 1em; - display: inline-block; } - .button.arrow-only::after { - margin-left: 0; - float: none; - top: -0.1em; } - [type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'], textarea { display: block; @@ -1608,18 +1484,6 @@ textarea { textarea[rows] { height: auto; } -input::-webkit-input-placeholder, -textarea::-webkit-input-placeholder { - color: #cacaca; } - -input::-moz-placeholder, -textarea::-moz-placeholder { - color: #cacaca; } - -input:-ms-input-placeholder, -textarea:-ms-input-placeholder { - color: #cacaca; } - input::placeholder, textarea::placeholder { color: #cacaca; } @@ -1793,6 +1657,130 @@ select { .form-error.is-visible { display: block; } +.button { + display: inline-block; + text-align: center; + line-height: 1; + cursor: pointer; + -webkit-appearance: none; + transition: background-color 0.25s ease-out, color 0.25s ease-out; + vertical-align: middle; + border: 1px solid transparent; + border-radius: 0; + padding: 0.85em 1em; + margin: 0 0 1rem 0; + font-size: 0.9rem; + background-color: #2199e8; + color: #fefefe; } + [data-whatinput='mouse'] .button { + outline: 0; } + .button:hover, .button:focus { + background-color: #1583cc; + color: #fefefe; } + .button.tiny { + font-size: 0.6rem; } + .button.small { + font-size: 0.75rem; } + .button.large { + font-size: 1.25rem; } + .button.expanded { + display: block; + width: 100%; + margin-left: 0; + margin-right: 0; } + .button.primary { + background-color: #2199e8; + color: #fefefe; } + .button.primary:hover, .button.primary:focus { + background-color: #147cc0; + color: #fefefe; } + .button.secondary { + background-color: #777; + color: #fefefe; } + .button.secondary:hover, .button.secondary:focus { + background-color: #5f5f5f; + color: #fefefe; } + .button.success { + background-color: #3adb76; + color: #fefefe; } + .button.success:hover, .button.success:focus { + background-color: #22bb5b; + color: #fefefe; } + .button.warning { + background-color: #ffae00; + color: #fefefe; } + .button.warning:hover, .button.warning:focus { + background-color: #cc8b00; + color: #fefefe; } + .button.alert { + background-color: #ec5840; + color: #fefefe; } + .button.alert:hover, .button.alert:focus { + background-color: #da3116; + color: #fefefe; } + .button.hollow { + border: 1px solid #2199e8; + color: #2199e8; } + .button.hollow, .button.hollow:hover, .button.hollow:focus { + background-color: transparent; } + .button.hollow:hover, .button.hollow:focus { + border-color: #0c4d78; + color: #0c4d78; } + .button.hollow.primary { + border: 1px solid #2199e8; + color: #2199e8; } + .button.hollow.primary:hover, .button.hollow.primary:focus { + border-color: #0c4d78; + color: #0c4d78; } + .button.hollow.secondary { + border: 1px solid #777; + color: #777; } + .button.hollow.secondary:hover, .button.hollow.secondary:focus { + border-color: #3c3c3c; + color: #3c3c3c; } + .button.hollow.success { + border: 1px solid #3adb76; + color: #3adb76; } + .button.hollow.success:hover, .button.hollow.success:focus { + border-color: #157539; + color: #157539; } + .button.hollow.warning { + border: 1px solid #ffae00; + color: #ffae00; } + .button.hollow.warning:hover, .button.hollow.warning:focus { + border-color: #805700; + color: #805700; } + .button.hollow.alert { + border: 1px solid #ec5840; + color: #ec5840; } + .button.hollow.alert:hover, .button.hollow.alert:focus { + border-color: #881f0e; + color: #881f0e; } + .button.disabled, .button[disabled] { + opacity: 0.25; + cursor: not-allowed; } + .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { + background-color: #2199e8; + color: #fefefe; } + .button.dropdown::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.4em; + border-color: #fefefe transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + position: relative; + top: 0.4em; + float: right; + margin-left: 1em; + display: inline-block; } + .button.arrow-only::after { + margin-left: 0; + float: none; + top: -0.1em; } + .accordion { list-style-type: none; background: #fefefe; @@ -1854,12 +1842,8 @@ select { right: 1rem; } .is-accordion-submenu-parent[aria-expanded='true'] > a::after { - -webkit-transform-origin: 50% 50%; - -ms-transform-origin: 50% 50%; - transform-origin: 50% 50%; - -webkit-transform: scaleY(-1); - -ms-transform: scaleY(-1); - transform: scaleY(-1); } + transform-origin: 50% 50%; + transform: scaleY(-1); } .badge { display: inline-block; @@ -2209,18 +2193,13 @@ select { height: 100%; width: 100%; background: #fefefe; - transition: -webkit-transform 0.15s linear; transition: transform 0.15s linear; } .is-drilldown-submenu.is-active { z-index: 1; display: block; - -webkit-transform: translateX(-100%); - -ms-transform: translateX(-100%); - transform: translateX(-100%); } + transform: translateX(-100%); } .is-drilldown-submenu.is-closing { - -webkit-transform: translateX(100%); - -ms-transform: translateX(100%); - transform: translateX(100%); } + transform: translateX(100%); } .is-drilldown-submenu-parent > a { position: relative; } @@ -2590,14 +2569,12 @@ body { width: 100%; overflow-x: hidden; position: relative; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; + backface-visibility: hidden; -webkit-overflow-scrolling: auto; } .off-canvas-wrapper-inner { position: relative; width: 100%; - transition: -webkit-transform 0.5s ease; transition: transform 0.5s ease; } .off-canvas-wrapper-inner::before, .off-canvas-wrapper-inner::after { content: ' '; @@ -2609,10 +2586,8 @@ body { .off-canvas-content { min-height: 100%; background: #fefefe; - transition: -webkit-transform 0.5s ease; transition: transform 0.5s ease; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; + backface-visibility: hidden; z-index: 1; padding-bottom: 0.1px; box-shadow: 0 0 10px rgba(10, 10, 10, 0.5); } @@ -2634,9 +2609,7 @@ body { z-index: -1; max-height: 100%; overflow-y: auto; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); } + transform: translateX(0); } [data-whatinput='mouse'] .off-canvas { outline: 0; } .off-canvas.position-left { @@ -2644,17 +2617,13 @@ body { top: 0; width: 250px; } .is-open-left { - -webkit-transform: translateX(250px); - -ms-transform: translateX(250px); - transform: translateX(250px); } + transform: translateX(250px); } .off-canvas.position-right { right: -250px; top: 0; width: 250px; } .is-open-right { - -webkit-transform: translateX(-250px); - -ms-transform: translateX(-250px); - transform: translateX(-250px); } + transform: translateX(-250px); } @media screen and (min-width: 40em) { .position-left.reveal-for-medium { @@ -2720,9 +2689,7 @@ body { .orbit-previous, .orbit-next { position: absolute; top: 50%; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); + transform: translateY(-50%); z-index: 10; padding: 1rem; color: #fefefe; } @@ -2838,9 +2805,7 @@ body { position: absolute; top: 50%; left: 50%; - -webkit-transform: translate(-50%, -50%); - -ms-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); + transform: translate(-50%, -50%); position: absolute; margin: 0; font-size: 0.75rem; @@ -2848,6 +2813,95 @@ body { color: #fefefe; white-space: nowrap; } +.slider { + position: relative; + height: 0.5rem; + margin-top: 1.25rem; + margin-bottom: 2.25rem; + background-color: #e6e6e6; + cursor: pointer; + user-select: none; + touch-action: none; } + +.slider-fill { + position: absolute; + top: 0; + left: 0; + display: inline-block; + max-width: 100%; + height: 0.5rem; + background-color: #cacaca; + transition: all 0.2s ease-in-out; } + .slider-fill.is-dragging { + transition: all 0s linear; } + +.slider-handle { + position: absolute; + top: 50%; + transform: translateY(-50%); + position: absolute; + left: 0; + z-index: 1; + display: inline-block; + width: 1.4rem; + height: 1.4rem; + background-color: #2199e8; + transition: all 0.2s ease-in-out; + touch-action: manipulation; + border-radius: 0; } + [data-whatinput='mouse'] .slider-handle { + outline: 0; } + .slider-handle:hover { + background-color: #1583cc; } + .slider-handle.is-dragging { + transition: all 0s linear; } + +.slider.disabled, +.slider[disabled] { + opacity: 0.25; + cursor: not-allowed; } + +.slider.vertical { + display: inline-block; + width: 0.5rem; + height: 12.5rem; + margin: 0 1.25rem; + transform: scale(1, -1); } + .slider.vertical .slider-fill { + top: 0; + width: 0.5rem; + max-height: 100%; } + .slider.vertical .slider-handle { + position: absolute; + top: 0; + left: 50%; + width: 1.4rem; + height: 1.4rem; + transform: translateX(-50%); } + +.sticky-container { + position: relative; } + +.sticky { + position: absolute; + z-index: 0; + transform: translate3d(0, 0, 0); } + +.sticky.is-stuck { + position: fixed; + z-index: 5; } + .sticky.is-stuck.is-at-top { + top: 0; } + .sticky.is-stuck.is-at-bottom { + bottom: 0; } + +.sticky.is-anchored { + position: absolute; + left: auto; + right: auto; } + .sticky.is-anchored.is-at-bottom { + bottom: 0; } + body.is-reveal-open { overflow: hidden; } @@ -2855,10 +2909,7 @@ html.is-reveal-open, html.is-reveal-open body { height: 100%; overflow: hidden; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } + user-select: none; } .reveal-overlay { display: none; @@ -2942,122 +2993,20 @@ html.is-reveal-open body { .reveal.without-overlay { position: fixed; } -.slider { - position: relative; - height: 0.5rem; - margin-top: 1.25rem; - margin-bottom: 2.25rem; - background-color: #e6e6e6; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -ms-touch-action: none; - touch-action: none; } - -.slider-fill { - position: absolute; - top: 0; - left: 0; - display: inline-block; - max-width: 100%; - height: 0.5rem; - background-color: #cacaca; - transition: all 0.2s ease-in-out; } - .slider-fill.is-dragging { - transition: all 0s linear; } - -.slider-handle { - position: absolute; - top: 50%; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); - position: absolute; - left: 0; - z-index: 1; - display: inline-block; - width: 1.4rem; - height: 1.4rem; - background-color: #2199e8; - transition: all 0.2s ease-in-out; - -ms-touch-action: manipulation; - touch-action: manipulation; - border-radius: 0; } - [data-whatinput='mouse'] .slider-handle { - outline: 0; } - .slider-handle:hover { - background-color: #1583cc; } - .slider-handle.is-dragging { - transition: all 0s linear; } - -.slider.disabled, -.slider[disabled] { - opacity: 0.25; - cursor: not-allowed; } - -.slider.vertical { - display: inline-block; - width: 0.5rem; - height: 12.5rem; - margin: 0 1.25rem; - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); } - .slider.vertical .slider-fill { - top: 0; - width: 0.5rem; - max-height: 100%; } - .slider.vertical .slider-handle { - position: absolute; - top: 0; - left: 50%; - width: 1.4rem; - height: 1.4rem; - -webkit-transform: translateX(-50%); - -ms-transform: translateX(-50%); - transform: translateX(-50%); } - -.sticky-container { - position: relative; } - -.sticky { - position: absolute; - z-index: 0; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); } - -.sticky.is-stuck { - position: fixed; - z-index: 5; } - .sticky.is-stuck.is-at-top { - top: 0; } - .sticky.is-stuck.is-at-bottom { - bottom: 0; } - -.sticky.is-anchored { - position: absolute; - left: auto; - right: auto; } - .sticky.is-anchored.is-at-bottom { - bottom: 0; } - .switch { + height: 2rem; margin-bottom: 1rem; outline: 0; position: relative; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + user-select: none; color: #fefefe; font-weight: bold; font-size: 0.875rem; } .switch-input { opacity: 0; - position: absolute; } + position: absolute; + margin-bottom: 0; } .switch-paddle { background: #cacaca; @@ -3082,8 +3031,7 @@ html.is-reveal-open body { top: 0.25rem; width: 1.5rem; transition: all 0.25s ease-out; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); border-radius: 0; } input:checked ~ .switch-paddle { background: #2199e8; } @@ -3095,9 +3043,7 @@ html.is-reveal-open body { .switch-active, .switch-inactive { position: absolute; top: 50%; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); } + transform: translateY(-50%); } .switch-active { left: 8%; @@ -3110,41 +3056,41 @@ html.is-reveal-open body { input:checked + label > .switch-inactive { display: none; } -.switch.tiny .switch-paddle { - width: 3rem; - height: 1.5rem; - font-size: 0.625rem; } - -.switch.tiny .switch-paddle::after { - width: 1rem; - height: 1rem; } - -.switch.tiny input:checked ~ .switch-paddle::after { - left: 1.75rem; } - -.switch.small .switch-paddle { - width: 3.5rem; - height: 1.75rem; - font-size: 0.75rem; } - -.switch.small .switch-paddle::after { - width: 1.25rem; - height: 1.25rem; } - -.switch.small input:checked ~ .switch-paddle::after { - left: 2rem; } - -.switch.large .switch-paddle { - width: 5rem; - height: 2.5rem; - font-size: 1rem; } - -.switch.large .switch-paddle::after { - width: 2rem; - height: 2rem; } +.switch.tiny { + height: 1.5rem; } + .switch.tiny .switch-paddle { + width: 3rem; + height: 1.5rem; + font-size: 0.625rem; } + .switch.tiny .switch-paddle::after { + width: 1rem; + height: 1rem; } + .switch.tiny input:checked ~ .switch-paddle::after { + left: 1.75rem; } + +.switch.small { + height: 1.75rem; } + .switch.small .switch-paddle { + width: 3.5rem; + height: 1.75rem; + font-size: 0.75rem; } + .switch.small .switch-paddle::after { + width: 1.25rem; + height: 1.25rem; } + .switch.small input:checked ~ .switch-paddle::after { + left: 2rem; } -.switch.large input:checked ~ .switch-paddle::after { - left: 2.75rem; } +.switch.large { + height: 2.5rem; } + .switch.large .switch-paddle { + width: 5rem; + height: 2.5rem; + font-size: 1rem; } + .switch.large .switch-paddle::after { + width: 2rem; + height: 2rem; } + .switch.large input:checked ~ .switch-paddle::after { + left: 2.75rem; } table { width: 100%; @@ -3158,20 +3104,22 @@ table { table caption { font-weight: bold; padding: 0.5rem 0.625rem 0.625rem; } - table thead, - table tfoot { + table thead { background: #f8f8f8; color: #0a0a0a; } - table thead tr, - table tfoot tr { - background: transparent; } - table thead th, - table thead td, - table tfoot th, - table tfoot td { - padding: 0.5rem 0.625rem 0.625rem; - font-weight: bold; - text-align: left; } + table tfoot { + background: #f1f1f1; + color: #0a0a0a; } + table thead tr, + table tfoot tr { + background: transparent; } + table thead th, + table thead td, + table tfoot th, + table tfoot td { + padding: 0.5rem 0.625rem 0.625rem; + font-weight: bold; + text-align: left; } table tbody tr:nth-child(even) { background-color: #f1f1f1; } table tbody th, @@ -3349,9 +3297,7 @@ table.hover tr:nth-of-type(even):hover { bottom: 100%; position: absolute; left: 50%; - -webkit-transform: translateX(-50%); - -ms-transform: translateX(-50%); - transform: translateX(-50%); } + transform: translateX(-50%); } .tooltip.top::before { content: ''; display: block; @@ -3375,9 +3321,7 @@ table.hover tr:nth-of-type(even):hover { bottom: auto; left: 100%; top: 50%; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); } + transform: translateY(-50%); } .tooltip.right::before { content: ''; display: block; @@ -3391,9 +3335,7 @@ table.hover tr:nth-of-type(even):hover { left: auto; right: 100%; top: 50%; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); } + transform: translateY(-50%); } .top-bar { padding: 0.5rem; } @@ -3541,654 +3483,3 @@ table.hover tr:nth-of-type(even):hover { .clearfix::after { clear: both; } - -.slide-in-down.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: translateY(-100%); - -ms-transform: translateY(-100%); - transform: translateY(-100%); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; } - -.slide-in-down.mui-enter.mui-enter-active { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); } - -.slide-in-left.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: translateX(-100%); - -ms-transform: translateX(-100%); - transform: translateX(-100%); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; } - -.slide-in-left.mui-enter.mui-enter-active { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); } - -.slide-in-up.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: translateY(100%); - -ms-transform: translateY(100%); - transform: translateY(100%); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; } - -.slide-in-up.mui-enter.mui-enter-active { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); } - -.slide-in-right.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: translateX(100%); - -ms-transform: translateX(100%); - transform: translateX(100%); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; } - -.slide-in-right.mui-enter.mui-enter-active { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); } - -.slide-out-down.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; } - -.slide-out-down.mui-leave.mui-leave-active { - -webkit-transform: translateY(100%); - -ms-transform: translateY(100%); - transform: translateY(100%); } - -.slide-out-right.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; } - -.slide-out-right.mui-leave.mui-leave-active { - -webkit-transform: translateX(100%); - -ms-transform: translateX(100%); - transform: translateX(100%); } - -.slide-out-up.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; } - -.slide-out-up.mui-leave.mui-leave-active { - -webkit-transform: translateY(-100%); - -ms-transform: translateY(-100%); - transform: translateY(-100%); } - -.slide-out-left.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; } - -.slide-out-left.mui-leave.mui-leave-active { - -webkit-transform: translateX(-100%); - -ms-transform: translateX(-100%); - transform: translateX(-100%); } - -.fade-in.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - opacity: 0; - transition-property: opacity; } - -.fade-in.mui-enter.mui-enter-active { - opacity: 1; } - -.fade-out.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - opacity: 1; - transition-property: opacity; } - -.fade-out.mui-leave.mui-leave-active { - opacity: 0; } - -.hinge-in-from-top.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: perspective(2000px) rotateX(-90deg); - transform: perspective(2000px) rotateX(-90deg); - -webkit-transform-origin: top; - -ms-transform-origin: top; - transform-origin: top; - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 0; } - -.hinge-in-from-top.mui-enter.mui-enter-active { - -webkit-transform: perspective(2000px) rotate(0deg); - transform: perspective(2000px) rotate(0deg); - opacity: 1; } - -.hinge-in-from-right.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: perspective(2000px) rotateY(-90deg); - transform: perspective(2000px) rotateY(-90deg); - -webkit-transform-origin: right; - -ms-transform-origin: right; - transform-origin: right; - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 0; } - -.hinge-in-from-right.mui-enter.mui-enter-active { - -webkit-transform: perspective(2000px) rotate(0deg); - transform: perspective(2000px) rotate(0deg); - opacity: 1; } - -.hinge-in-from-bottom.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: perspective(2000px) rotateX(90deg); - transform: perspective(2000px) rotateX(90deg); - -webkit-transform-origin: bottom; - -ms-transform-origin: bottom; - transform-origin: bottom; - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 0; } - -.hinge-in-from-bottom.mui-enter.mui-enter-active { - -webkit-transform: perspective(2000px) rotate(0deg); - transform: perspective(2000px) rotate(0deg); - opacity: 1; } - -.hinge-in-from-left.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: perspective(2000px) rotateY(90deg); - transform: perspective(2000px) rotateY(90deg); - -webkit-transform-origin: left; - -ms-transform-origin: left; - transform-origin: left; - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 0; } - -.hinge-in-from-left.mui-enter.mui-enter-active { - -webkit-transform: perspective(2000px) rotate(0deg); - transform: perspective(2000px) rotate(0deg); - opacity: 1; } - -.hinge-in-from-middle-x.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: perspective(2000px) rotateX(-90deg); - transform: perspective(2000px) rotateX(-90deg); - -webkit-transform-origin: center; - -ms-transform-origin: center; - transform-origin: center; - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 0; } - -.hinge-in-from-middle-x.mui-enter.mui-enter-active { - -webkit-transform: perspective(2000px) rotate(0deg); - transform: perspective(2000px) rotate(0deg); - opacity: 1; } - -.hinge-in-from-middle-y.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: perspective(2000px) rotateY(-90deg); - transform: perspective(2000px) rotateY(-90deg); - -webkit-transform-origin: center; - -ms-transform-origin: center; - transform-origin: center; - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 0; } - -.hinge-in-from-middle-y.mui-enter.mui-enter-active { - -webkit-transform: perspective(2000px) rotate(0deg); - transform: perspective(2000px) rotate(0deg); - opacity: 1; } - -.hinge-out-from-top.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: perspective(2000px) rotate(0deg); - transform: perspective(2000px) rotate(0deg); - -webkit-transform-origin: top; - -ms-transform-origin: top; - transform-origin: top; - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 1; } - -.hinge-out-from-top.mui-leave.mui-leave-active { - -webkit-transform: perspective(2000px) rotateX(-90deg); - transform: perspective(2000px) rotateX(-90deg); - opacity: 0; } - -.hinge-out-from-right.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: perspective(2000px) rotate(0deg); - transform: perspective(2000px) rotate(0deg); - -webkit-transform-origin: right; - -ms-transform-origin: right; - transform-origin: right; - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 1; } - -.hinge-out-from-right.mui-leave.mui-leave-active { - -webkit-transform: perspective(2000px) rotateY(-90deg); - transform: perspective(2000px) rotateY(-90deg); - opacity: 0; } - -.hinge-out-from-bottom.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: perspective(2000px) rotate(0deg); - transform: perspective(2000px) rotate(0deg); - -webkit-transform-origin: bottom; - -ms-transform-origin: bottom; - transform-origin: bottom; - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 1; } - -.hinge-out-from-bottom.mui-leave.mui-leave-active { - -webkit-transform: perspective(2000px) rotateX(90deg); - transform: perspective(2000px) rotateX(90deg); - opacity: 0; } - -.hinge-out-from-left.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: perspective(2000px) rotate(0deg); - transform: perspective(2000px) rotate(0deg); - -webkit-transform-origin: left; - -ms-transform-origin: left; - transform-origin: left; - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 1; } - -.hinge-out-from-left.mui-leave.mui-leave-active { - -webkit-transform: perspective(2000px) rotateY(90deg); - transform: perspective(2000px) rotateY(90deg); - opacity: 0; } - -.hinge-out-from-middle-x.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: perspective(2000px) rotate(0deg); - transform: perspective(2000px) rotate(0deg); - -webkit-transform-origin: center; - -ms-transform-origin: center; - transform-origin: center; - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 1; } - -.hinge-out-from-middle-x.mui-leave.mui-leave-active { - -webkit-transform: perspective(2000px) rotateX(-90deg); - transform: perspective(2000px) rotateX(-90deg); - opacity: 0; } - -.hinge-out-from-middle-y.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: perspective(2000px) rotate(0deg); - transform: perspective(2000px) rotate(0deg); - -webkit-transform-origin: center; - -ms-transform-origin: center; - transform-origin: center; - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 1; } - -.hinge-out-from-middle-y.mui-leave.mui-leave-active { - -webkit-transform: perspective(2000px) rotateY(-90deg); - transform: perspective(2000px) rotateY(-90deg); - opacity: 0; } - -.scale-in-up.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: scale(0.5); - -ms-transform: scale(0.5); - transform: scale(0.5); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 0; } - -.scale-in-up.mui-enter.mui-enter-active { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - opacity: 1; } - -.scale-in-down.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: scale(1.5); - -ms-transform: scale(1.5); - transform: scale(1.5); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 0; } - -.scale-in-down.mui-enter.mui-enter-active { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - opacity: 1; } - -.scale-out-up.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 1; } - -.scale-out-up.mui-leave.mui-leave-active { - -webkit-transform: scale(1.5); - -ms-transform: scale(1.5); - transform: scale(1.5); - opacity: 0; } - -.scale-out-down.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 1; } - -.scale-out-down.mui-leave.mui-leave-active { - -webkit-transform: scale(0.5); - -ms-transform: scale(0.5); - transform: scale(0.5); - opacity: 0; } - -.spin-in.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: rotate(-0.75turn); - -ms-transform: rotate(-0.75turn); - transform: rotate(-0.75turn); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 0; } - -.spin-in.mui-enter.mui-enter-active { - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; } - -.spin-out.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 1; } - -.spin-out.mui-leave.mui-leave-active { - -webkit-transform: rotate(0.75turn); - -ms-transform: rotate(0.75turn); - transform: rotate(0.75turn); - opacity: 0; } - -.spin-in-ccw.mui-enter { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: rotate(0.75turn); - -ms-transform: rotate(0.75turn); - transform: rotate(0.75turn); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 0; } - -.spin-in-ccw.mui-enter.mui-enter-active { - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; } - -.spin-out-ccw.mui-leave { - transition-duration: 500ms; - transition-timing-function: linear; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - transition-property: -webkit-transform, opacity; - transition-property: transform, opacity; - opacity: 1; } - -.spin-out-ccw.mui-leave.mui-leave-active { - -webkit-transform: rotate(-0.75turn); - -ms-transform: rotate(-0.75turn); - transform: rotate(-0.75turn); - opacity: 0; } - -.slow { - transition-duration: 750ms !important; } - -.fast { - transition-duration: 250ms !important; } - -.linear { - transition-timing-function: linear !important; } - -.ease { - transition-timing-function: ease !important; } - -.ease-in { - transition-timing-function: ease-in !important; } - -.ease-out { - transition-timing-function: ease-out !important; } - -.ease-in-out { - transition-timing-function: ease-in-out !important; } - -.bounce-in { - transition-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; } - -.bounce-out { - transition-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; } - -.bounce-in-out { - transition-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; } - -.short-delay { - transition-delay: 300ms !important; } - -.long-delay { - transition-delay: 700ms !important; } - -.shake { - -webkit-animation-name: shake-7; - animation-name: shake-7; } - -@-webkit-keyframes shake-7 { - 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% { - -webkit-transform: translateX(7%); - transform: translateX(7%); } - 5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% { - -webkit-transform: translateX(-7%); - transform: translateX(-7%); } } - -@keyframes shake-7 { - 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% { - -webkit-transform: translateX(7%); - transform: translateX(7%); } - 5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% { - -webkit-transform: translateX(-7%); - transform: translateX(-7%); } } - -.spin-cw { - -webkit-animation-name: spin-cw-1turn; - animation-name: spin-cw-1turn; } - -@-webkit-keyframes spin-cw-1turn { - 0% { - -webkit-transform: rotate(-1turn); - transform: rotate(-1turn); } - 100% { - -webkit-transform: rotate(0); - transform: rotate(0); } } - -@keyframes spin-cw-1turn { - 0% { - -webkit-transform: rotate(-1turn); - transform: rotate(-1turn); } - 100% { - -webkit-transform: rotate(0); - transform: rotate(0); } } - -.spin-ccw { - -webkit-animation-name: spin-cw-1turn; - animation-name: spin-cw-1turn; } - -@keyframes spin-cw-1turn { - 0% { - -webkit-transform: rotate(0); - transform: rotate(0); } - 100% { - -webkit-transform: rotate(1turn); - transform: rotate(1turn); } } - -.wiggle { - -webkit-animation-name: wiggle-7deg; - animation-name: wiggle-7deg; } - -@-webkit-keyframes wiggle-7deg { - 40%, 50%, 60% { - -webkit-transform: rotate(7deg); - transform: rotate(7deg); } - 35%, 45%, 55%, 65% { - -webkit-transform: rotate(-7deg); - transform: rotate(-7deg); } - 0%, 30%, 70%, 100% { - -webkit-transform: rotate(0); - transform: rotate(0); } } - -@keyframes wiggle-7deg { - 40%, 50%, 60% { - -webkit-transform: rotate(7deg); - transform: rotate(7deg); } - 35%, 45%, 55%, 65% { - -webkit-transform: rotate(-7deg); - transform: rotate(-7deg); } - 0%, 30%, 70%, 100% { - -webkit-transform: rotate(0); - transform: rotate(0); } } - -.shake, -.spin-cw, -.spin-ccw, -.wiggle { - -webkit-animation-duration: 500ms; - animation-duration: 500ms; } - -.infinite { - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; } - -.slow { - -webkit-animation-duration: 750ms !important; - animation-duration: 750ms !important; } - -.fast { - -webkit-animation-duration: 250ms !important; - animation-duration: 250ms !important; } - -.linear { - -webkit-animation-timing-function: linear !important; - animation-timing-function: linear !important; } - -.ease { - -webkit-animation-timing-function: ease !important; - animation-timing-function: ease !important; } - -.ease-in { - -webkit-animation-timing-function: ease-in !important; - animation-timing-function: ease-in !important; } - -.ease-out { - -webkit-animation-timing-function: ease-out !important; - animation-timing-function: ease-out !important; } - -.ease-in-out { - -webkit-animation-timing-function: ease-in-out !important; - animation-timing-function: ease-in-out !important; } - -.bounce-in { - -webkit-animation-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; - animation-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; } - -.bounce-out { - -webkit-animation-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; - animation-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; } - -.bounce-in-out { - -webkit-animation-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; - animation-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; } - -.short-delay { - -webkit-animation-delay: 300ms !important; - animation-delay: 300ms !important; } - -.long-delay { - -webkit-animation-delay: 700ms !important; - animation-delay: 700ms !important; } diff --git a/libraries/foundation-6/css/foundation.min.css b/libraries/foundation-6/css/foundation.min.css index fe291e80..40fc1efa 100644 --- a/libraries/foundation-6/css/foundation.min.css +++ b/libraries/foundation-6/css/foundation.min.css @@ -1,2 +1,3 @@ @charset "UTF-8"; -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:not-allowed}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{font-size:100%;box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{padding:0;margin:0;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;line-height:1.5;color:#0a0a0a;background:#fefefe;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{max-width:100%;height:auto;-ms-interpolation-mode:bicubic;display:inline-block;vertical-align:middle}textarea{height:auto;min-height:50px;border-radius:0}select{width:100%;border-radius:0}#map_canvas embed,#map_canvas img,#map_canvas object,.map_canvas embed,.map_canvas img,.map_canvas object,.mqa-display embed,.mqa-display img,.mqa-display object{max-width:none!important}button{-webkit-appearance:none;-moz-appearance:none;background:transparent;padding:0;border:0;border-radius:0;line-height:1}[data-whatinput=mouse] button{outline:0}.is-visible{display:block!important}.is-hidden{display:none!important}.row{max-width:75rem;margin-left:auto;margin-right:auto}.row:after,.row:before{content:' ';display:table}.row:after{clear:both}.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0}.row .row{max-width:none;margin-left:-.625rem;margin-right:-.625rem}@media screen and (min-width:40em){.row .row{margin-left:-.9375rem;margin-right:-.9375rem}}.row .row.collapse{margin-left:0;margin-right:0}.row.expanded{max-width:none}.row.expanded .row{margin-left:auto;margin-right:auto}.column,.columns{width:100%;float:left;padding-left:.625rem;padding-right:.625rem}@media screen and (min-width:40em){.column,.columns{padding-left:.9375rem;padding-right:.9375rem}}.column:last-child:not(:first-child),.columns:last-child:not(:first-child){float:right}.column.end:last-child:last-child,.end.columns:last-child:last-child{float:left}.column.row.row,.row.row.columns{float:none}.row .column.row.row,.row .row.row.columns{padding-left:0;padding-right:0;margin-left:0;margin-right:0}.small-1{width:8.33333%}.small-push-1{position:relative;left:8.33333%}.small-pull-1{position:relative;left:-8.33333%}.small-offset-0{margin-left:0}.small-2{width:16.66667%}.small-push-2{position:relative;left:16.66667%}.small-pull-2{position:relative;left:-16.66667%}.small-offset-1{margin-left:8.33333%}.small-3{width:25%}.small-push-3{position:relative;left:25%}.small-pull-3{position:relative;left:-25%}.small-offset-2{margin-left:16.66667%}.small-4{width:33.33333%}.small-push-4{position:relative;left:33.33333%}.small-pull-4{position:relative;left:-33.33333%}.small-offset-3{margin-left:25%}.small-5{width:41.66667%}.small-push-5{position:relative;left:41.66667%}.small-pull-5{position:relative;left:-41.66667%}.small-offset-4{margin-left:33.33333%}.small-6{width:50%}.small-push-6{position:relative;left:50%}.small-pull-6{position:relative;left:-50%}.small-offset-5{margin-left:41.66667%}.small-7{width:58.33333%}.small-push-7{position:relative;left:58.33333%}.small-pull-7{position:relative;left:-58.33333%}.small-offset-6{margin-left:50%}.small-8{width:66.66667%}.small-push-8{position:relative;left:66.66667%}.small-pull-8{position:relative;left:-66.66667%}.small-offset-7{margin-left:58.33333%}.small-9{width:75%}.small-push-9{position:relative;left:75%}.small-pull-9{position:relative;left:-75%}.small-offset-8{margin-left:66.66667%}.small-10{width:83.33333%}.small-push-10{position:relative;left:83.33333%}.small-pull-10{position:relative;left:-83.33333%}.small-offset-9{margin-left:75%}.small-11{width:91.66667%}.small-push-11{position:relative;left:91.66667%}.small-pull-11{position:relative;left:-91.66667%}.small-offset-10{margin-left:83.33333%}.small-12{width:100%}.small-offset-11{margin-left:91.66667%}.small-up-1>.column,.small-up-1>.columns{width:100%;float:left}.small-up-1>.column:nth-of-type(1n),.small-up-1>.columns:nth-of-type(1n){clear:none}.small-up-1>.column:nth-of-type(1n+1),.small-up-1>.columns:nth-of-type(1n+1){clear:both}.small-up-1>.column:last-child,.small-up-1>.columns:last-child{float:left}.small-up-2>.column,.small-up-2>.columns{width:50%;float:left}.small-up-2>.column:nth-of-type(1n),.small-up-2>.columns:nth-of-type(1n){clear:none}.small-up-2>.column:nth-of-type(2n+1),.small-up-2>.columns:nth-of-type(2n+1){clear:both}.small-up-2>.column:last-child,.small-up-2>.columns:last-child{float:left}.small-up-3>.column,.small-up-3>.columns{width:33.33333%;float:left}.small-up-3>.column:nth-of-type(1n),.small-up-3>.columns:nth-of-type(1n){clear:none}.small-up-3>.column:nth-of-type(3n+1),.small-up-3>.columns:nth-of-type(3n+1){clear:both}.small-up-3>.column:last-child,.small-up-3>.columns:last-child{float:left}.small-up-4>.column,.small-up-4>.columns{width:25%;float:left}.small-up-4>.column:nth-of-type(1n),.small-up-4>.columns:nth-of-type(1n){clear:none}.small-up-4>.column:nth-of-type(4n+1),.small-up-4>.columns:nth-of-type(4n+1){clear:both}.small-up-4>.column:last-child,.small-up-4>.columns:last-child{float:left}.small-up-5>.column,.small-up-5>.columns{width:20%;float:left}.small-up-5>.column:nth-of-type(1n),.small-up-5>.columns:nth-of-type(1n){clear:none}.small-up-5>.column:nth-of-type(5n+1),.small-up-5>.columns:nth-of-type(5n+1){clear:both}.small-up-5>.column:last-child,.small-up-5>.columns:last-child{float:left}.small-up-6>.column,.small-up-6>.columns{width:16.66667%;float:left}.small-up-6>.column:nth-of-type(1n),.small-up-6>.columns:nth-of-type(1n){clear:none}.small-up-6>.column:nth-of-type(6n+1),.small-up-6>.columns:nth-of-type(6n+1){clear:both}.small-up-6>.column:last-child,.small-up-6>.columns:last-child{float:left}.small-up-7>.column,.small-up-7>.columns{width:14.28571%;float:left}.small-up-7>.column:nth-of-type(1n),.small-up-7>.columns:nth-of-type(1n){clear:none}.small-up-7>.column:nth-of-type(7n+1),.small-up-7>.columns:nth-of-type(7n+1){clear:both}.small-up-7>.column:last-child,.small-up-7>.columns:last-child{float:left}.small-up-8>.column,.small-up-8>.columns{width:12.5%;float:left}.small-up-8>.column:nth-of-type(1n),.small-up-8>.columns:nth-of-type(1n){clear:none}.small-up-8>.column:nth-of-type(8n+1),.small-up-8>.columns:nth-of-type(8n+1){clear:both}.small-up-8>.column:last-child,.small-up-8>.columns:last-child{float:left}.small-collapse>.column,.small-collapse>.columns{padding-left:0;padding-right:0}.expanded.row .small-collapse.row,.small-collapse .row{margin-left:0;margin-right:0}.small-uncollapse>.column,.small-uncollapse>.columns{padding-left:.625rem;padding-right:.625rem}.small-centered{float:none;margin-left:auto;margin-right:auto}.small-pull-0,.small-push-0,.small-uncentered{position:static;margin-left:0;margin-right:0;float:left}@media screen and (min-width:40em){.medium-1{width:8.33333%}.medium-push-1{position:relative;left:8.33333%}.medium-pull-1{position:relative;left:-8.33333%}.medium-offset-0{margin-left:0}.medium-2{width:16.66667%}.medium-push-2{position:relative;left:16.66667%}.medium-pull-2{position:relative;left:-16.66667%}.medium-offset-1{margin-left:8.33333%}.medium-3{width:25%}.medium-push-3{position:relative;left:25%}.medium-pull-3{position:relative;left:-25%}.medium-offset-2{margin-left:16.66667%}.medium-4{width:33.33333%}.medium-push-4{position:relative;left:33.33333%}.medium-pull-4{position:relative;left:-33.33333%}.medium-offset-3{margin-left:25%}.medium-5{width:41.66667%}.medium-push-5{position:relative;left:41.66667%}.medium-pull-5{position:relative;left:-41.66667%}.medium-offset-4{margin-left:33.33333%}.medium-6{width:50%}.medium-push-6{position:relative;left:50%}.medium-pull-6{position:relative;left:-50%}.medium-offset-5{margin-left:41.66667%}.medium-7{width:58.33333%}.medium-push-7{position:relative;left:58.33333%}.medium-pull-7{position:relative;left:-58.33333%}.medium-offset-6{margin-left:50%}.medium-8{width:66.66667%}.medium-push-8{position:relative;left:66.66667%}.medium-pull-8{position:relative;left:-66.66667%}.medium-offset-7{margin-left:58.33333%}.medium-9{width:75%}.medium-push-9{position:relative;left:75%}.medium-pull-9{position:relative;left:-75%}.medium-offset-8{margin-left:66.66667%}.medium-10{width:83.33333%}.medium-push-10{position:relative;left:83.33333%}.medium-pull-10{position:relative;left:-83.33333%}.medium-offset-9{margin-left:75%}.medium-11{width:91.66667%}.medium-push-11{position:relative;left:91.66667%}.medium-pull-11{position:relative;left:-91.66667%}.medium-offset-10{margin-left:83.33333%}.medium-12{width:100%}.medium-offset-11{margin-left:91.66667%}.medium-up-1>.column,.medium-up-1>.columns{width:100%;float:left}.medium-up-1>.column:nth-of-type(1n),.medium-up-1>.columns:nth-of-type(1n){clear:none}.medium-up-1>.column:nth-of-type(1n+1),.medium-up-1>.columns:nth-of-type(1n+1){clear:both}.medium-up-1>.column:last-child,.medium-up-1>.columns:last-child{float:left}.medium-up-2>.column,.medium-up-2>.columns{width:50%;float:left}.medium-up-2>.column:nth-of-type(1n),.medium-up-2>.columns:nth-of-type(1n){clear:none}.medium-up-2>.column:nth-of-type(2n+1),.medium-up-2>.columns:nth-of-type(2n+1){clear:both}.medium-up-2>.column:last-child,.medium-up-2>.columns:last-child{float:left}.medium-up-3>.column,.medium-up-3>.columns{width:33.33333%;float:left}.medium-up-3>.column:nth-of-type(1n),.medium-up-3>.columns:nth-of-type(1n){clear:none}.medium-up-3>.column:nth-of-type(3n+1),.medium-up-3>.columns:nth-of-type(3n+1){clear:both}.medium-up-3>.column:last-child,.medium-up-3>.columns:last-child{float:left}.medium-up-4>.column,.medium-up-4>.columns{width:25%;float:left}.medium-up-4>.column:nth-of-type(1n),.medium-up-4>.columns:nth-of-type(1n){clear:none}.medium-up-4>.column:nth-of-type(4n+1),.medium-up-4>.columns:nth-of-type(4n+1){clear:both}.medium-up-4>.column:last-child,.medium-up-4>.columns:last-child{float:left}.medium-up-5>.column,.medium-up-5>.columns{width:20%;float:left}.medium-up-5>.column:nth-of-type(1n),.medium-up-5>.columns:nth-of-type(1n){clear:none}.medium-up-5>.column:nth-of-type(5n+1),.medium-up-5>.columns:nth-of-type(5n+1){clear:both}.medium-up-5>.column:last-child,.medium-up-5>.columns:last-child{float:left}.medium-up-6>.column,.medium-up-6>.columns{width:16.66667%;float:left}.medium-up-6>.column:nth-of-type(1n),.medium-up-6>.columns:nth-of-type(1n){clear:none}.medium-up-6>.column:nth-of-type(6n+1),.medium-up-6>.columns:nth-of-type(6n+1){clear:both}.medium-up-6>.column:last-child,.medium-up-6>.columns:last-child{float:left}.medium-up-7>.column,.medium-up-7>.columns{width:14.28571%;float:left}.medium-up-7>.column:nth-of-type(1n),.medium-up-7>.columns:nth-of-type(1n){clear:none}.medium-up-7>.column:nth-of-type(7n+1),.medium-up-7>.columns:nth-of-type(7n+1){clear:both}.medium-up-7>.column:last-child,.medium-up-7>.columns:last-child{float:left}.medium-up-8>.column,.medium-up-8>.columns{width:12.5%;float:left}.medium-up-8>.column:nth-of-type(1n),.medium-up-8>.columns:nth-of-type(1n){clear:none}.medium-up-8>.column:nth-of-type(8n+1),.medium-up-8>.columns:nth-of-type(8n+1){clear:both}.medium-up-8>.column:last-child,.medium-up-8>.columns:last-child{float:left}.medium-collapse>.column,.medium-collapse>.columns{padding-left:0;padding-right:0}.expanded.row .medium-collapse.row,.medium-collapse .row{margin-left:0;margin-right:0}.medium-uncollapse>.column,.medium-uncollapse>.columns{padding-left:.9375rem;padding-right:.9375rem}.medium-centered{float:none;margin-left:auto;margin-right:auto}.medium-pull-0,.medium-push-0,.medium-uncentered{position:static;margin-left:0;margin-right:0;float:left}}@media screen and (min-width:64em){.large-1{width:8.33333%}.large-push-1{position:relative;left:8.33333%}.large-pull-1{position:relative;left:-8.33333%}.large-offset-0{margin-left:0}.large-2{width:16.66667%}.large-push-2{position:relative;left:16.66667%}.large-pull-2{position:relative;left:-16.66667%}.large-offset-1{margin-left:8.33333%}.large-3{width:25%}.large-push-3{position:relative;left:25%}.large-pull-3{position:relative;left:-25%}.large-offset-2{margin-left:16.66667%}.large-4{width:33.33333%}.large-push-4{position:relative;left:33.33333%}.large-pull-4{position:relative;left:-33.33333%}.large-offset-3{margin-left:25%}.large-5{width:41.66667%}.large-push-5{position:relative;left:41.66667%}.large-pull-5{position:relative;left:-41.66667%}.large-offset-4{margin-left:33.33333%}.large-6{width:50%}.large-push-6{position:relative;left:50%}.large-pull-6{position:relative;left:-50%}.large-offset-5{margin-left:41.66667%}.large-7{width:58.33333%}.large-push-7{position:relative;left:58.33333%}.large-pull-7{position:relative;left:-58.33333%}.large-offset-6{margin-left:50%}.large-8{width:66.66667%}.large-push-8{position:relative;left:66.66667%}.large-pull-8{position:relative;left:-66.66667%}.large-offset-7{margin-left:58.33333%}.large-9{width:75%}.large-push-9{position:relative;left:75%}.large-pull-9{position:relative;left:-75%}.large-offset-8{margin-left:66.66667%}.large-10{width:83.33333%}.large-push-10{position:relative;left:83.33333%}.large-pull-10{position:relative;left:-83.33333%}.large-offset-9{margin-left:75%}.large-11{width:91.66667%}.large-push-11{position:relative;left:91.66667%}.large-pull-11{position:relative;left:-91.66667%}.large-offset-10{margin-left:83.33333%}.large-12{width:100%}.large-offset-11{margin-left:91.66667%}.large-up-1>.column,.large-up-1>.columns{width:100%;float:left}.large-up-1>.column:nth-of-type(1n),.large-up-1>.columns:nth-of-type(1n){clear:none}.large-up-1>.column:nth-of-type(1n+1),.large-up-1>.columns:nth-of-type(1n+1){clear:both}.large-up-1>.column:last-child,.large-up-1>.columns:last-child{float:left}.large-up-2>.column,.large-up-2>.columns{width:50%;float:left}.large-up-2>.column:nth-of-type(1n),.large-up-2>.columns:nth-of-type(1n){clear:none}.large-up-2>.column:nth-of-type(2n+1),.large-up-2>.columns:nth-of-type(2n+1){clear:both}.large-up-2>.column:last-child,.large-up-2>.columns:last-child{float:left}.large-up-3>.column,.large-up-3>.columns{width:33.33333%;float:left}.large-up-3>.column:nth-of-type(1n),.large-up-3>.columns:nth-of-type(1n){clear:none}.large-up-3>.column:nth-of-type(3n+1),.large-up-3>.columns:nth-of-type(3n+1){clear:both}.large-up-3>.column:last-child,.large-up-3>.columns:last-child{float:left}.large-up-4>.column,.large-up-4>.columns{width:25%;float:left}.large-up-4>.column:nth-of-type(1n),.large-up-4>.columns:nth-of-type(1n){clear:none}.large-up-4>.column:nth-of-type(4n+1),.large-up-4>.columns:nth-of-type(4n+1){clear:both}.large-up-4>.column:last-child,.large-up-4>.columns:last-child{float:left}.large-up-5>.column,.large-up-5>.columns{width:20%;float:left}.large-up-5>.column:nth-of-type(1n),.large-up-5>.columns:nth-of-type(1n){clear:none}.large-up-5>.column:nth-of-type(5n+1),.large-up-5>.columns:nth-of-type(5n+1){clear:both}.large-up-5>.column:last-child,.large-up-5>.columns:last-child{float:left}.large-up-6>.column,.large-up-6>.columns{width:16.66667%;float:left}.large-up-6>.column:nth-of-type(1n),.large-up-6>.columns:nth-of-type(1n){clear:none}.large-up-6>.column:nth-of-type(6n+1),.large-up-6>.columns:nth-of-type(6n+1){clear:both}.large-up-6>.column:last-child,.large-up-6>.columns:last-child{float:left}.large-up-7>.column,.large-up-7>.columns{width:14.28571%;float:left}.large-up-7>.column:nth-of-type(1n),.large-up-7>.columns:nth-of-type(1n){clear:none}.large-up-7>.column:nth-of-type(7n+1),.large-up-7>.columns:nth-of-type(7n+1){clear:both}.large-up-7>.column:last-child,.large-up-7>.columns:last-child{float:left}.large-up-8>.column,.large-up-8>.columns{width:12.5%;float:left}.large-up-8>.column:nth-of-type(1n),.large-up-8>.columns:nth-of-type(1n){clear:none}.large-up-8>.column:nth-of-type(8n+1),.large-up-8>.columns:nth-of-type(8n+1){clear:both}.large-up-8>.column:last-child,.large-up-8>.columns:last-child{float:left}.large-collapse>.column,.large-collapse>.columns{padding-left:0;padding-right:0}.expanded.row .large-collapse.row,.large-collapse .row{margin-left:0;margin-right:0}.large-uncollapse>.column,.large-uncollapse>.columns{padding-left:.9375rem;padding-right:.9375rem}.large-centered{float:none;margin-left:auto;margin-right:auto}.large-pull-0,.large-push-0,.large-uncentered{position:static;margin-left:0;margin-right:0;float:left}}blockquote,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,li,ol,p,pre,td,th,ul{margin:0;padding:0}p{font-size:inherit;line-height:1.6;margin-bottom:1rem;text-rendering:optimizeLegibility}em,i{font-style:italic}b,em,i,strong{line-height:inherit}b,strong{font-weight:700}small{font-size:80%;line-height:inherit}h1,h2,h3,h4,h5,h6{font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;font-style:normal;color:inherit;text-rendering:optimizeLegibility;margin-top:0;margin-bottom:.5rem;line-height:1.4}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#cacaca;line-height:0}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.1875rem}h4{font-size:1.125rem}h5{font-size:1.0625rem}h6{font-size:1rem}@media screen and (min-width:40em){h1{font-size:3rem}h2{font-size:2.5rem}h3{font-size:1.9375rem}h4{font-size:1.5625rem}h5{font-size:1.25rem}h6{font-size:1rem}}a{color:#2199e8;text-decoration:none;line-height:inherit;cursor:pointer}a:focus,a:hover{color:#1585cf}a img{border:0}hr{max-width:75rem;height:0;border-right:0;border-top:0;border-bottom:1px solid #cacaca;border-left:0;margin:1.25rem auto;clear:both}dl,ol,ul{line-height:1.6;margin-bottom:1rem;list-style-position:outside}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-left:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-left:1.25rem;margin-bottom:0}dl{margin-bottom:1rem}dl dt{margin-bottom:.3rem;font-weight:700}blockquote{margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #cacaca}blockquote,blockquote p{line-height:1.6;color:#8a8a8a}cite{display:block;font-size:.8125rem;color:#8a8a8a}cite:before{content:'\2014 \0020'}abbr{color:#0a0a0a;cursor:help;border-bottom:1px dotted #0a0a0a}code{font-weight:400;border:1px solid #cacaca;padding:.125rem .3125rem .0625rem}code,kbd{font-family:Consolas,Liberation Mono,Courier,monospace;color:#0a0a0a;background-color:#e6e6e6}kbd{padding:.125rem .25rem 0;margin:0}.subheader{margin-top:.2rem;margin-bottom:.5rem;font-weight:400;line-height:1.4;color:#8a8a8a}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}.no-bullet{margin-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none!important}@media print{*{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}.show-for-print{display:block!important}.hide-for-print{display:none!important}table.show-for-print{display:table!important}thead.show-for-print{display:table-header-group!important}tbody.show-for-print{display:table-row-group!important}tr.show-for-print{display:table-row!important}td.show-for-print,th.show-for-print{display:table-cell!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^='#']:after,a[href^='javascript:']:after{content:''}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.button{display:inline-block;text-align:center;line-height:1;cursor:pointer;-webkit-appearance:none;transition:background-color .25s ease-out,color .25s ease-out;vertical-align:middle;border:1px solid transparent;border-radius:0;padding:.85em 1em;margin:0 0 1rem;font-size:.9rem;background-color:#2199e8;color:#fefefe}[data-whatinput=mouse] .button{outline:0}.button:focus,.button:hover{background-color:#1583cc;color:#fefefe}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;width:100%;margin-left:0;margin-right:0}.button.primary{background-color:#2199e8;color:#fefefe}.button.primary:focus,.button.primary:hover{background-color:#147cc0;color:#fefefe}.button.secondary{background-color:#777;color:#fefefe}.button.secondary:focus,.button.secondary:hover{background-color:#5f5f5f;color:#fefefe}.button.success{background-color:#3adb76;color:#fefefe}.button.success:focus,.button.success:hover{background-color:#22bb5b;color:#fefefe}.button.warning{background-color:#ffae00;color:#fefefe}.button.warning:focus,.button.warning:hover{background-color:#cc8b00;color:#fefefe}.button.alert{background-color:#ec5840;color:#fefefe}.button.alert:focus,.button.alert:hover{background-color:#da3116;color:#fefefe}.button.hollow{border:1px solid #2199e8;color:#2199e8}.button.hollow,.button.hollow:focus,.button.hollow:hover{background-color:transparent}.button.hollow:focus,.button.hollow:hover{border-color:#0c4d78;color:#0c4d78}.button.hollow.primary{border:1px solid #2199e8;color:#2199e8}.button.hollow.primary:focus,.button.hollow.primary:hover{border-color:#0c4d78;color:#0c4d78}.button.hollow.secondary{border:1px solid #777;color:#777}.button.hollow.secondary:focus,.button.hollow.secondary:hover{border-color:#3c3c3c;color:#3c3c3c}.button.hollow.success{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:focus,.button.hollow.success:hover{border-color:#157539;color:#157539}.button.hollow.warning{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:focus,.button.hollow.warning:hover{border-color:#805700;color:#805700}.button.hollow.alert{border:1px solid #ec5840;color:#ec5840}.button.hollow.alert:focus,.button.hollow.alert:hover{border-color:#881f0e;color:#881f0e}.button.disabled,.button[disabled]{opacity:.25;cursor:not-allowed}.button.disabled:focus,.button.disabled:hover,.button[disabled]:focus,.button[disabled]:hover{background-color:#2199e8;color:#fefefe}.button.dropdown:after{content:'';display:block;width:0;height:0;border:.4em inset;border-color:#fefefe transparent transparent;border-top-style:solid;border-bottom-width:0;position:relative;top:.4em;float:right;margin-left:1em;display:inline-block}.button.arrow-only:after{margin-left:0;float:none;top:-.1em}[type=color],[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],textarea{display:block;box-sizing:border-box;width:100%;height:2.4375rem;padding:.5rem;border:1px solid #cacaca;margin:0 0 1rem;font-family:inherit;font-size:1rem;color:#0a0a0a;background-color:#fefefe;box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);border-radius:0;transition:box-shadow .5s,border-color .25s ease-in-out;-webkit-appearance:none;-moz-appearance:none}[type=color]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=datetime]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,textarea:focus{border:1px solid #8a8a8a;background-color:#fefefe;outline:none;box-shadow:0 0 5px #cacaca;transition:box-shadow .5s,border-color .25s ease-in-out}textarea{max-width:100%}textarea[rows]{height:auto}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#cacaca}input::-moz-placeholder,textarea::-moz-placeholder{color:#cacaca}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#cacaca}input::placeholder,textarea::placeholder{color:#cacaca}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type=button],[type=submit]{border-radius:0;-webkit-appearance:none;-moz-appearance:none}input[type=search]{box-sizing:border-box}[type=checkbox],[type=file],[type=radio]{margin:0 0 1rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;margin-left:.5rem;margin-right:1rem;margin-bottom:0;vertical-align:baseline}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-right:.5rem}[type=file]{width:100%}label{display:block;margin:0;font-size:.875rem;font-weight:400;line-height:1.8;color:#0a0a0a}label.middle{margin:0 0 1rem;padding:.5625rem 0}.help-text{margin-top:-.5rem;font-size:.8125rem;font-style:italic;color:#0a0a0a}.input-group{display:table;width:100%;margin-bottom:1rem}.input-group>:first-child,.input-group>:last-child>*{border-radius:0 0 0 0}.input-group-button,.input-group-field,.input-group-label{margin:0;white-space:nowrap;display:table-cell;vertical-align:middle}.input-group-label{text-align:center;padding:0 1rem;background:#e6e6e6;color:#0a0a0a;border:1px solid #cacaca;white-space:nowrap;width:1%;height:100%}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;height:2.5rem}.input-group-button{padding-top:0;padding-bottom:0;text-align:center;height:100%;width:1%}.input-group-button a,.input-group-button button,.input-group-button input{margin:0}.input-group .input-group-button{display:table-cell}fieldset{border:0;padding:0;margin:0}legend{margin-bottom:.5rem;max-width:100%}.fieldset{border:1px solid #cacaca;padding:1.25rem;margin:1.125rem 0}.fieldset legend{background:#fefefe;padding:0 .1875rem;margin:0;margin-left:-.1875rem}select{height:2.4375rem;padding:.5rem;border:1px solid #cacaca;margin:0 0 1rem;font-size:1rem;font-family:inherit;line-height:normal;color:#0a0a0a;background-color:#fefefe;border-radius:0;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%28138, 138, 138%29'></polygon></svg>");background-size:9px 6px;background-position:right -1rem center;background-origin:content-box;background-repeat:no-repeat;padding-right:1.5rem}@media screen and (min-width:0\0){select{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==")}}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{height:auto;background-image:none}.is-invalid-input:not(:focus){background-color:rgba(236,88,64,.1);border-color:#ec5840}.form-error,.is-invalid-label{color:#ec5840}.form-error{display:none;margin-top:-.5rem;margin-bottom:1rem;font-size:.75rem;font-weight:700}.form-error.is-visible{display:block}.accordion{list-style-type:none;background:#fefefe;margin-left:0}.accordion-item:first-child>:first-child,.accordion-item:last-child>:last-child{border-radius:0 0 0 0}.accordion-title{display:block;padding:1.25rem 1rem;line-height:1;font-size:.75rem;color:#2199e8;position:relative;border:1px solid #e6e6e6;border-bottom:0}:last-child:not(.is-active)>.accordion-title{border-radius:0 0 0 0;border-bottom:1px solid #e6e6e6}.accordion-title:focus,.accordion-title:hover{background-color:#e6e6e6}.accordion-title:before{content:'+';position:absolute;right:1rem;top:50%;margin-top:-.5rem}.is-active>.accordion-title:before{content:'–'}.accordion-content{padding:1rem;display:none;border:1px solid #e6e6e6;border-bottom:0;background-color:#fefefe;color:#0a0a0a}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.is-accordion-submenu-parent>a{position:relative}.is-accordion-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:6px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;position:absolute;top:50%;margin-top:-4px;right:1rem}.is-accordion-submenu-parent[aria-expanded=true]>a:after{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:scaleY(-1);transform:scaleY(-1)}.badge{display:inline-block;padding:.3em;min-width:2.1em;font-size:.6rem;text-align:center;border-radius:50%;background:#2199e8;color:#fefefe}.badge.secondary{background:#777;color:#fefefe}.badge.success{background:#3adb76;color:#fefefe}.badge.warning{background:#ffae00;color:#fefefe}.badge.alert{background:#ec5840;color:#fefefe}.breadcrumbs{list-style:none;margin:0 0 1rem}.breadcrumbs:after,.breadcrumbs:before{content:' ';display:table}.breadcrumbs:after{clear:both}.breadcrumbs li{float:left;color:#0a0a0a;font-size:.6875rem;cursor:default;text-transform:uppercase}.breadcrumbs li:not(:last-child):after{color:#cacaca;content:"/";margin:0 .75rem;position:relative;top:1px;opacity:1}.breadcrumbs a{color:#2199e8}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.button-group{margin-bottom:1rem;font-size:0}.button-group:after,.button-group:before{content:' ';display:table}.button-group:after{clear:both}.button-group .button{margin:0;margin-right:1px;margin-bottom:1px;font-size:.9rem}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded{margin-right:-1px}.button-group.expanded:after,.button-group.expanded:before{display:none}.button-group.expanded .button:first-child:nth-last-child(2),.button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2)~.button{display:inline-block;width:calc(50% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(2):last-child{margin-right:-6px}.button-group.expanded .button:first-child:nth-last-child(3),.button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3)~.button{display:inline-block;width:calc(33.33333% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(3):last-child{margin-right:-6px}.button-group.expanded .button:first-child:nth-last-child(4),.button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4)~.button{display:inline-block;width:calc(25% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(4):last-child{margin-right:-6px}.button-group.expanded .button:first-child:nth-last-child(5),.button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5)~.button{display:inline-block;width:calc(20% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(5):last-child{margin-right:-6px}.button-group.expanded .button:first-child:nth-last-child(6),.button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6)~.button{display:inline-block;width:calc(16.66667% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(6):last-child{margin-right:-6px}.button-group.primary .button{background-color:#2199e8;color:#fefefe}.button-group.primary .button:focus,.button-group.primary .button:hover{background-color:#147cc0;color:#fefefe}.button-group.secondary .button{background-color:#777;color:#fefefe}.button-group.secondary .button:focus,.button-group.secondary .button:hover{background-color:#5f5f5f;color:#fefefe}.button-group.success .button{background-color:#3adb76;color:#fefefe}.button-group.success .button:focus,.button-group.success .button:hover{background-color:#22bb5b;color:#fefefe}.button-group.warning .button{background-color:#ffae00;color:#fefefe}.button-group.warning .button:focus,.button-group.warning .button:hover{background-color:#cc8b00;color:#fefefe}.button-group.alert .button{background-color:#ec5840;color:#fefefe}.button-group.alert .button:focus,.button-group.alert .button:hover{background-color:#da3116;color:#fefefe}.button-group.stacked-for-medium .button,.button-group.stacked-for-small .button,.button-group.stacked .button{width:100%}.button-group.stacked-for-medium .button:last-child,.button-group.stacked-for-small .button:last-child,.button-group.stacked .button:last-child{margin-bottom:0}@media screen and (min-width:40em){.button-group.stacked-for-small .button{width:auto;margin-bottom:0}}@media screen and (min-width:64em){.button-group.stacked-for-medium .button{width:auto;margin-bottom:0}}@media screen and (max-width:39.9375em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}.callout{margin:0 0 1rem;padding:1rem;border:1px solid hsla(0,0%,4%,.25);border-radius:0;position:relative;color:#0a0a0a;background-color:#fff}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#def0fc}.callout.secondary{background-color:#ebebeb}.callout.success{background-color:#e1faea}.callout.warning{background-color:#fff3d9}.callout.alert{background-color:#fce6e2}.callout.small{padding:.5rem}.callout.large{padding:3rem}.close-button{position:absolute;color:#8a8a8a;right:1rem;top:.5rem;font-size:2em;line-height:1;cursor:pointer}[data-whatinput=mouse] .close-button{outline:0}.close-button:focus,.close-button:hover{color:#0a0a0a}.menu{margin:0;list-style-type:none}.menu>li{display:table-cell;vertical-align:middle}[data-whatinput=mouse] .menu>li{outline:0}.menu>li>a{display:block;padding:.7rem 1rem;line-height:1}.menu a,.menu button,.menu input{margin-bottom:0}.menu>li>a i,.menu>li>a i+span,.menu>li>a img,.menu>li>a img+span,.menu>li>a svg,.menu>li>a svg+span{vertical-align:middle}.menu>li>a i,.menu>li>a img,.menu>li>a svg{margin-right:.25rem;display:inline-block}.menu>li{display:table-cell}.menu.vertical>li{display:block}@media screen and (min-width:40em){.menu.medium-horizontal>li{display:table-cell}.menu.medium-vertical>li{display:block}}@media screen and (min-width:64em){.menu.large-horizontal>li{display:table-cell}.menu.large-vertical>li{display:block}}.menu.simple li{line-height:1;display:inline-block;margin-right:1rem}.menu.simple a{padding:0}.menu.align-right:after,.menu.align-right:before{content:' ';display:table}.menu.align-right:after{clear:both}.menu.align-right>li{float:right}.menu.expanded{width:100%;display:table;table-layout:fixed}.menu.expanded>li:first-child:last-child{width:100%}.menu.icon-top>li>a{text-align:center}.menu.icon-top>li>a i,.menu.icon-top>li>a img,.menu.icon-top>li>a svg{display:block;margin:0 auto .25rem}.menu.nested{margin-left:1rem}.menu .active>a{color:#fefefe;background:#2199e8}.menu-text{font-weight:700;color:inherit;line-height:1;padding-top:0;padding-bottom:0;padding:.7rem 1rem}.menu-centered{text-align:center}.menu-centered>.menu{display:inline-block}.no-js [data-responsive-menu] ul{display:none}.menu-icon{position:relative;display:inline-block;vertical-align:middle;cursor:pointer;width:20px;height:16px}.menu-icon:after{content:'';position:absolute;display:block;width:100%;height:2px;background:#fefefe;top:0;left:0;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe}.menu-icon:hover:after{background:#cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.is-drilldown{position:relative;overflow:hidden}.is-drilldown li{display:block!important}.is-drilldown-submenu{position:absolute;top:0;left:100%;z-index:-1;height:100%;width:100%;background:#fefefe;transition:-webkit-transform .15s linear;transition:transform .15s linear}.is-drilldown-submenu.is-active{z-index:1;display:block;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.is-drilldown-submenu.is-closing{-webkit-transform:translateX(100%);transform:translateX(100%)}.is-drilldown-submenu-parent>a{position:relative}.is-drilldown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:6px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0;position:absolute;top:50%;margin-top:-6px;right:1rem}.js-drilldown-back>a:before{content:'';display:block;width:0;height:0;border:6px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0;display:inline-block;vertical-align:middle;margin-right:.75rem}.dropdown-pane{background-color:#fefefe;border:1px solid #cacaca;border-radius:0;display:block;font-size:1rem;padding:1rem;position:absolute;visibility:hidden;width:300px;z-index:3}.dropdown-pane.is-open{visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.dropdown.menu>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}[data-whatinput=mouse] .dropdown.menu a{outline:0}.no-js .dropdown.menu ul{display:none}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.vertical>li>a:after{right:14px;margin-top:-3px}.dropdown.menu.vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}@media screen and (min-width:40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.medium-vertical>li>a:after{right:14px;margin-top:-3px}.dropdown.menu.medium-vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.medium-vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}}@media screen and (min-width:64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.large-vertical>li>a:after{right:14px;margin-top:-3px}.dropdown.menu.large-vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.large-vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{top:100%;left:auto;right:0}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a:after{position:absolute;top:50%;right:5px;margin-top:-2px}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{top:100%;left:auto}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{left:auto;right:100%}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{right:auto;left:100%}.is-dropdown-submenu{display:none;position:absolute;top:0;left:100%;min-width:200px;z-index:1;background:#fefefe;border:1px solid #cacaca}.is-dropdown-submenu .is-dropdown-submenu-parent>a:after{right:14px;margin-top:-3px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.flex-video{position:relative;height:0;padding-bottom:75%;margin-bottom:1rem;overflow:hidden}.flex-video embed,.flex-video iframe,.flex-video object,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}.flex-video.widescreen{padding-bottom:56.25%}.flex-video.vimeo{padding-top:0}.label{display:inline-block;padding:.33333rem .5rem;font-size:.8rem;line-height:1;white-space:nowrap;cursor:default;border-radius:0;background:#2199e8;color:#fefefe}.label.secondary{background:#777;color:#fefefe}.label.success{background:#3adb76;color:#fefefe}.label.warning{background:#ffae00;color:#fefefe}.label.alert{background:#ec5840;color:#fefefe}.media-object{margin-bottom:1rem;display:block}.media-object img{max-width:none}@media screen and (max-width:39.9375em){.media-object.stack-for-small .media-object-section{padding:0;padding-bottom:1rem;display:block}.media-object.stack-for-small .media-object-section img{width:100%}}.media-object-section{display:table-cell;vertical-align:top}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}.media-object-section.middle{vertical-align:middle}.media-object-section.bottom{vertical-align:bottom}body,html{height:100%}.off-canvas-wrapper{width:100%;overflow-x:hidden;position:relative;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-overflow-scrolling:auto}.off-canvas-wrapper-inner{position:relative;width:100%;transition:-webkit-transform .5s ease;transition:transform .5s ease}.off-canvas-wrapper-inner:after,.off-canvas-wrapper-inner:before{content:' ';display:table}.off-canvas-wrapper-inner:after{clear:both}.off-canvas-content{min-height:100%;background:#fefefe;transition:-webkit-transform .5s ease;transition:transform .5s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;padding-bottom:.1px;box-shadow:0 0 10px hsla(0,0%,4%,.5)}.js-off-canvas-exit{display:none;position:absolute;top:0;left:0;width:100%;height:100%;background:hsla(0,0%,100%,.25);cursor:pointer;transition:background .5s ease}.off-canvas{position:absolute;background:#e6e6e6;z-index:-1;max-height:100%;overflow-y:auto;-webkit-transform:translateX(0);transform:translateX(0)}[data-whatinput=mouse] .off-canvas{outline:0}.off-canvas.position-left{left:-250px;top:0;width:250px}.is-open-left{-webkit-transform:translateX(250px);transform:translateX(250px)}.off-canvas.position-right{right:-250px;top:0;width:250px}.is-open-right{-webkit-transform:translateX(-250px);transform:translateX(-250px)}@media screen and (min-width:40em){.position-left.reveal-for-medium{left:0;z-index:auto;position:fixed}.position-left.reveal-for-medium~.off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{right:0;z-index:auto;position:fixed}.position-right.reveal-for-medium~.off-canvas-content{margin-right:250px}}@media screen and (min-width:64em){.position-left.reveal-for-large{left:0;z-index:auto;position:fixed}.position-left.reveal-for-large~.off-canvas-content{margin-left:250px}.position-right.reveal-for-large{right:0;z-index:auto;position:fixed}.position-right.reveal-for-large~.off-canvas-content{margin-right:250px}}.orbit,.orbit-container{position:relative}.orbit-container{margin:0;overflow:hidden;list-style:none}.orbit-slide{width:100%;max-height:100%}.orbit-slide.no-motionui.is-active{top:0;left:0}.orbit-figure{margin:0}.orbit-image{margin:0;width:100%;max-width:100%}.orbit-caption{bottom:0;width:100%;margin-bottom:0;background-color:hsla(0,0%,4%,.5)}.orbit-caption,.orbit-next,.orbit-previous{position:absolute;padding:1rem;color:#fefefe}.orbit-next,.orbit-previous{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:3}[data-whatinput=mouse] .orbit-next,[data-whatinput=mouse] .orbit-previous{outline:0}.orbit-next:active,.orbit-next:focus,.orbit-next:hover,.orbit-previous:active,.orbit-previous:focus,.orbit-previous:hover{background-color:hsla(0,0%,4%,.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{position:relative;margin-top:.8rem;margin-bottom:.8rem;text-align:center}[data-whatinput=mouse] .orbit-bullets{outline:0}.orbit-bullets button{width:1.2rem;height:1.2rem;margin:.1rem;background-color:#cacaca;border-radius:50%}.orbit-bullets button.is-active,.orbit-bullets button:hover{background-color:#8a8a8a}.pagination{margin-left:0;margin-bottom:1rem}.pagination:after,.pagination:before{content:' ';display:table}.pagination:after{clear:both}.pagination li{font-size:.875rem;margin-right:.0625rem;border-radius:0;display:none}.pagination li:first-child,.pagination li:last-child{display:inline-block}@media screen and (min-width:40em){.pagination li{display:inline-block}}.pagination a,.pagination button{color:#0a0a0a;display:block;padding:.1875rem .625rem;border-radius:0}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{padding:.1875rem .625rem;background:#2199e8;color:#fefefe;cursor:default}.pagination .disabled{padding:.1875rem .625rem;color:#cacaca;cursor:not-allowed}.pagination .disabled:hover{background:transparent}.pagination .ellipsis:after{content:'\2026';padding:.1875rem .625rem;color:#0a0a0a}.pagination-previous.disabled:before,.pagination-previous a:before{content:'\00ab';display:inline-block;margin-right:.5rem}.pagination-next.disabled:after,.pagination-next a:after{content:'\00bb';display:inline-block;margin-left:.5rem}.progress{background-color:#cacaca;height:1rem;margin-bottom:1rem;border-radius:0}.progress.primary .progress-meter{background-color:#2199e8}.progress.secondary .progress-meter{background-color:#777}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#ec5840}.progress-meter{position:relative;display:block;width:0;height:100%;background-color:#2199e8}.progress-meter-text{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;margin:0;font-size:.75rem;font-weight:700;color:#fefefe;white-space:nowrap}body.is-reveal-open{overflow:hidden}html.is-reveal-open,html.is-reveal-open body{height:100%;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reveal-overlay{display:none;position:fixed;top:0;bottom:0;left:0;right:0;z-index:4;background-color:hsla(0,0%,4%,.45);overflow-y:scroll}.reveal{display:none;z-index:5;padding:1rem;border:1px solid #cacaca;background-color:#fefefe;border-radius:0;position:relative;top:100px;margin-left:auto;margin-right:auto;overflow-y:auto}[data-whatinput=mouse] .reveal{outline:0}@media screen and (min-width:40em){.reveal{min-height:0}}.reveal .column,.reveal .columns{min-width:0}.reveal>:last-child{margin-bottom:0}@media screen and (min-width:40em){.reveal{width:600px;max-width:75rem}}@media screen and (min-width:40em){.reveal .reveal{left:auto;right:auto;margin:0 auto}}.reveal.collapse{padding:0}@media screen and (min-width:40em){.reveal.tiny{width:30%;max-width:75rem}}@media screen and (min-width:40em){.reveal.small{width:50%;max-width:75rem}}@media screen and (min-width:40em){.reveal.large{width:90%;max-width:75rem}}.reveal.full{top:0;left:0;width:100%;height:100%;height:100vh;min-height:100vh;max-width:none;margin-left:0;border:0;border-radius:0}@media screen and (max-width:39.9375em){.reveal{top:0;left:0;width:100%;height:100%;height:100vh;min-height:100vh;max-width:none;margin-left:0;border:0;border-radius:0}}.reveal.without-overlay{position:fixed}.slider{position:relative;height:.5rem;margin-top:1.25rem;margin-bottom:2.25rem;background-color:#e6e6e6;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:none;touch-action:none}.slider-fill{position:absolute;top:0;left:0;display:inline-block;max-width:100%;height:.5rem;background-color:#cacaca;transition:all .2s ease-in-out}.slider-fill.is-dragging{transition:all 0s linear}.slider-handle{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);position:absolute;left:0;z-index:1;display:inline-block;width:1.4rem;height:1.4rem;background-color:#2199e8;transition:all .2s ease-in-out;-ms-touch-action:manipulation;touch-action:manipulation;border-radius:0}[data-whatinput=mouse] .slider-handle{outline:0}.slider-handle:hover{background-color:#1583cc}.slider-handle.is-dragging{transition:all 0s linear}.slider.disabled,.slider[disabled]{opacity:.25;cursor:not-allowed}.slider.vertical{display:inline-block;width:.5rem;height:12.5rem;margin:0 1.25rem;-webkit-transform:scaleY(-1);transform:scaleY(-1)}.slider.vertical .slider-fill{top:0;width:.5rem;max-height:100%}.slider.vertical .slider-handle{position:absolute;top:0;left:50%;width:1.4rem;height:1.4rem;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.sticky-container{position:relative}.sticky{position:absolute;z-index:0;-webkit-transform:translateZ(0);transform:translateZ(0)}.sticky.is-stuck{position:fixed;z-index:2}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{position:absolute;left:auto;right:auto}.sticky.is-anchored.is-at-bottom{bottom:0}.switch{margin-bottom:1rem;outline:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#fefefe;font-weight:700;font-size:.875rem}.switch-input{opacity:0;position:absolute}.switch-paddle{background:#cacaca;cursor:pointer;display:block;position:relative;width:4rem;height:2rem;transition:all .25s ease-out;border-radius:0;color:inherit;font-weight:inherit}input+.switch-paddle{margin:0}.switch-paddle:after{background:#fefefe;content:'';display:block;position:absolute;height:1.5rem;left:.25rem;top:.25rem;width:1.5rem;transition:all .25s ease-out;-webkit-transform:translateZ(0);transform:translateZ(0);border-radius:0}input:checked~.switch-paddle{background:#2199e8}input:checked~.switch-paddle:after{left:2.25rem}[data-whatinput=mouse] input:focus~.switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.switch-active{left:8%;display:none}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny .switch-paddle{width:3rem;height:1.5rem;font-size:.625rem}.switch.tiny .switch-paddle:after{width:1rem;height:1rem}.switch.tiny input:checked~.switch-paddle:after{left:1.75rem}.switch.small .switch-paddle{width:3.5rem;height:1.75rem;font-size:.75rem}.switch.small .switch-paddle:after{width:1.25rem;height:1.25rem}.switch.small input:checked~.switch-paddle:after{left:2rem}.switch.large .switch-paddle{width:5rem;height:2.5rem;font-size:1rem}.switch.large .switch-paddle:after{width:2rem;height:2rem}.switch.large input:checked~.switch-paddle:after{left:2.75rem}table{width:100%;margin-bottom:1rem;border-radius:0}table tbody,table tfoot,table thead{border:1px solid #f1f1f1;background-color:#fefefe}table caption{font-weight:700;padding:.5rem .625rem .625rem}table tfoot,table thead{background:#f8f8f8;color:#0a0a0a}table tfoot tr,table thead tr{background:transparent}table tfoot td,table tfoot th,table thead td,table thead th{padding:.5rem .625rem .625rem;font-weight:700;text-align:left}table tbody tr:nth-child(even){background-color:#f1f1f1}table tbody td,table tbody th{padding:.5rem .625rem .625rem}@media screen and (max-width:63.9375em){table.stack tfoot,table.stack thead{display:none}table.stack td,table.stack th,table.stack tr{display:block}table.stack td{border-top:0}}table.scroll{display:block;width:100%;overflow-x:auto}table.hover tr:hover{background-color:#f9f9f9}table.hover tr:nth-of-type(even):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.table-scroll table{width:auto}.tabs{margin:0;list-style-type:none;background:#fefefe;border:1px solid #e6e6e6}.tabs:after,.tabs:before{content:' ';display:table}.tabs:after{clear:both}.tabs.vertical>li{width:auto;float:none;display:block}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:transparent}.tabs.primary{background:#2199e8}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:focus,.tabs.primary>li>a:hover{background:#1893e4}.tabs-title{float:left}.tabs-title>a{display:block;padding:1.25rem 1.5rem;line-height:1;font-size:.75rem}.tabs-title>a:hover{background:#fefefe}.tabs-title>a:focus,.tabs-title>a[aria-selected=true]{background:#e6e6e6}.tabs-content{background:#fefefe;transition:all .5s ease;border:1px solid #e6e6e6;border-top:0}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{border:4px solid #fefefe;box-shadow:0 0 0 1px hsla(0,0%,4%,.2);display:inline-block;line-height:0;max-width:100%;transition:box-shadow .2s ease-out;border-radius:0;margin-bottom:1rem}.thumbnail:focus,.thumbnail:hover{box-shadow:0 0 6px 1px rgba(33,153,232,.5)}.title-bar{background:#0a0a0a;color:#fefefe;padding:.5rem}.title-bar:after,.title-bar:before{content:' ';display:table}.title-bar:after{clear:both}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left{float:left}.title-bar-right{float:right;text-align:right}.title-bar-title{font-weight:700}.menu-icon.dark,.title-bar-title{vertical-align:middle;display:inline-block}.menu-icon.dark{position:relative;cursor:pointer;width:20px;height:16px}.menu-icon.dark:after{content:'';position:absolute;display:block;width:100%;height:2px;background:#0a0a0a;top:0;left:0;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a}.menu-icon.dark:hover:after{background:#8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.has-tip{border-bottom:1px dotted #8a8a8a;font-weight:700;position:relative;display:inline-block;cursor:help}.tooltip{background-color:#0a0a0a;color:#fefefe;font-size:80%;padding:.75rem;position:absolute;z-index:3;top:calc(100% + .6495rem);max-width:10rem!important;border-radius:0}.tooltip:before{border-color:transparent transparent #0a0a0a;border-bottom-style:solid;border-top-width:0;bottom:100%;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.top:before,.tooltip:before{content:'';display:block;width:0;height:0;border:.75rem inset}.tooltip.top:before{border-color:#0a0a0a transparent transparent;border-top-style:solid;border-bottom-width:0;top:100%;bottom:auto}.tooltip.left:before{border-color:transparent transparent transparent #0a0a0a;border-left-style:solid;border-right-width:0;left:100%}.tooltip.left:before,.tooltip.right:before{content:'';display:block;width:0;height:0;border:.75rem inset;bottom:auto;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.right:before{border-color:transparent #0a0a0a transparent transparent;border-right-style:solid;border-left-width:0;left:auto;right:100%}.top-bar{padding:.5rem}.top-bar:after,.top-bar:before{content:' ';display:table}.top-bar:after{clear:both}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{max-width:200px;margin-right:1rem}.top-bar .input-group-field{width:100%;margin-right:0}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{width:100%}@media screen and (min-width:40em){.top-bar .top-bar-left,.top-bar .top-bar-right{width:auto}}@media screen and (max-width:63.9375em){.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{width:100%}}@media screen and (max-width:74.9375em){.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{width:100%}}.top-bar-title{float:left;margin-right:1rem}.top-bar-left{float:left}.top-bar-right{float:right}.hide{display:none!important}.invisible{visibility:hidden}@media screen and (max-width:39.9375em){.hide-for-small-only{display:none!important}}@media screen and (max-width:0em),screen and (min-width:40em){.show-for-small-only{display:none!important}}@media screen and (min-width:40em){.hide-for-medium{display:none!important}}@media screen and (max-width:39.9375em){.show-for-medium{display:none!important}}@media screen and (min-width:40em) and (max-width:63.9375em){.hide-for-medium-only{display:none!important}}@media screen and (max-width:39.9375em),screen and (min-width:64em){.show-for-medium-only{display:none!important}}@media screen and (min-width:64em){.hide-for-large{display:none!important}}@media screen and (max-width:63.9375em){.show-for-large{display:none!important}}@media screen and (min-width:64em) and (max-width:74.9375em){.hide-for-large-only{display:none!important}}@media screen and (max-width:63.9375em),screen and (min-width:75em){.show-for-large-only{display:none!important}}.show-for-sr,.show-on-focus{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.show-on-focus:active,.show-on-focus:focus{position:static!important;height:auto;width:auto;overflow:visible;clip:auto}.hide-for-portrait,.show-for-landscape{display:block!important}@media screen and (orientation:landscape){.hide-for-portrait,.show-for-landscape{display:block!important}}@media screen and (orientation:portrait){.hide-for-portrait,.show-for-landscape{display:none!important}}.hide-for-landscape,.show-for-portrait{display:none!important}@media screen and (orientation:landscape){.hide-for-landscape,.show-for-portrait{display:none!important}}@media screen and (orientation:portrait){.hide-for-landscape,.show-for-portrait{display:block!important}}.float-left{float:left!important}.float-right{float:right!important}.float-center{display:block;margin-left:auto;margin-right:auto}.clearfix:after,.clearfix:before{content:' ';display:table}.clearfix:after{clear:both}.slide-in-down.mui-enter{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:translateY(-100%);transform:translateY(-100%);transition-property:-webkit-transform,opacity;transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-down.mui-enter.mui-enter-active{-webkit-transform:translateY(0);transform:translateY(0)}.slide-in-left.mui-enter{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:translateX(-100%);transform:translateX(-100%);transition-property:-webkit-transform,opacity;transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-left.mui-enter.mui-enter-active{-webkit-transform:translateX(0);transform:translateX(0)}.slide-in-up.mui-enter{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:translateY(100%);transform:translateY(100%);transition-property:-webkit-transform,opacity;transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-up.mui-enter.mui-enter-active{-webkit-transform:translateY(0);transform:translateY(0)}.slide-in-right.mui-enter{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:translateX(100%);transform:translateX(100%);transition-property:-webkit-transform,opacity;transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-right.mui-enter.mui-enter-active{-webkit-transform:translateX(0);transform:translateX(0)}.slide-out-down.mui-leave{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:translateY(0);transform:translateY(0);transition-property:-webkit-transform,opacity;transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-down.mui-leave.mui-leave-active{-webkit-transform:translateY(100%);transform:translateY(100%)}.slide-out-right.mui-leave{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:translateX(0);transform:translateX(0);transition-property:-webkit-transform,opacity;transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-right.mui-leave.mui-leave-active{-webkit-transform:translateX(100%);transform:translateX(100%)}.slide-out-up.mui-leave{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:translateY(0);transform:translateY(0);transition-property:-webkit-transform,opacity;transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-up.mui-leave.mui-leave-active{-webkit-transform:translateY(-100%);transform:translateY(-100%)}.slide-out-left.mui-leave{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:translateX(0);transform:translateX(0);transition-property:-webkit-transform,opacity;transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-left.mui-leave.mui-leave-active{-webkit-transform:translateX(-100%);transform:translateX(-100%)}.fade-in.mui-enter{transition-duration:.5s;transition-timing-function:linear;opacity:0;transition-property:opacity}.fade-in.mui-enter.mui-enter-active{opacity:1}.fade-out.mui-leave{transition-duration:.5s;transition-timing-function:linear;opacity:1;transition-property:opacity}.fade-out.mui-leave.mui-leave-active{opacity:0}.hinge-in-from-top.mui-enter{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);-webkit-transform-origin:top;transform-origin:top;transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:0}.hinge-in-from-top.mui-enter.mui-enter-active{-webkit-transform:perspective(2000px) rotate(0deg);transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-right.mui-enter{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:perspective(2000px) rotateY(-90deg);transform:perspective(2000px) rotateY(-90deg);-webkit-transform-origin:right;transform-origin:right;transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:0}.hinge-in-from-right.mui-enter.mui-enter-active{-webkit-transform:perspective(2000px) rotate(0deg);transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-bottom.mui-enter{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:perspective(2000px) rotateX(90deg);transform:perspective(2000px) rotateX(90deg);-webkit-transform-origin:bottom;transform-origin:bottom;transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:0}.hinge-in-from-bottom.mui-enter.mui-enter-active{-webkit-transform:perspective(2000px) rotate(0deg);transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-left.mui-enter{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:perspective(2000px) rotateY(90deg);transform:perspective(2000px) rotateY(90deg);-webkit-transform-origin:left;transform-origin:left;transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:0}.hinge-in-from-left.mui-enter.mui-enter-active{-webkit-transform:perspective(2000px) rotate(0deg);transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-x.mui-enter{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);-webkit-transform-origin:center;transform-origin:center;transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:0}.hinge-in-from-middle-x.mui-enter.mui-enter-active{-webkit-transform:perspective(2000px) rotate(0deg);transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-y.mui-enter{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:perspective(2000px) rotateY(-90deg);transform:perspective(2000px) rotateY(-90deg);-webkit-transform-origin:center;transform-origin:center;transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:0}.hinge-in-from-middle-y.mui-enter.mui-enter-active,.hinge-out-from-top.mui-leave{-webkit-transform:perspective(2000px) rotate(0deg);transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-out-from-top.mui-leave{transition-duration:.5s;transition-timing-function:linear;-webkit-transform-origin:top;transform-origin:top;transition-property:-webkit-transform,opacity;transition-property:transform,opacity}.hinge-out-from-top.mui-leave.mui-leave-active{-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-right.mui-leave{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:perspective(2000px) rotate(0deg);transform:perspective(2000px) rotate(0deg);-webkit-transform-origin:right;transform-origin:right;transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:1}.hinge-out-from-right.mui-leave.mui-leave-active{-webkit-transform:perspective(2000px) rotateY(-90deg);transform:perspective(2000px) rotateY(-90deg);opacity:0}.hinge-out-from-bottom.mui-leave{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:perspective(2000px) rotate(0deg);transform:perspective(2000px) rotate(0deg);-webkit-transform-origin:bottom;transform-origin:bottom;transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:1}.hinge-out-from-bottom.mui-leave.mui-leave-active{-webkit-transform:perspective(2000px) rotateX(90deg);transform:perspective(2000px) rotateX(90deg);opacity:0}.hinge-out-from-left.mui-leave{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:perspective(2000px) rotate(0deg);transform:perspective(2000px) rotate(0deg);-webkit-transform-origin:left;transform-origin:left;transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:1}.hinge-out-from-left.mui-leave.mui-leave-active{-webkit-transform:perspective(2000px) rotateY(90deg);transform:perspective(2000px) rotateY(90deg);opacity:0}.hinge-out-from-middle-x.mui-leave{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:perspective(2000px) rotate(0deg);transform:perspective(2000px) rotate(0deg);-webkit-transform-origin:center;transform-origin:center;transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:1}.hinge-out-from-middle-x.mui-leave.mui-leave-active{-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-middle-y.mui-leave{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:perspective(2000px) rotate(0deg);transform:perspective(2000px) rotate(0deg);-webkit-transform-origin:center;transform-origin:center;transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:1}.hinge-out-from-middle-y.mui-leave.mui-leave-active{-webkit-transform:perspective(2000px) rotateY(-90deg);transform:perspective(2000px) rotateY(-90deg);opacity:0}.scale-in-up.mui-enter{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:scale(.5);transform:scale(.5);transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:0}.scale-in-up.mui-enter.mui-enter-active{-webkit-transform:scale(1);transform:scale(1);opacity:1}.scale-in-down.mui-enter{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:scale(1.5);transform:scale(1.5);transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:0}.scale-in-down.mui-enter.mui-enter-active,.scale-out-up.mui-leave{-webkit-transform:scale(1);transform:scale(1);opacity:1}.scale-out-up.mui-leave{transition-duration:.5s;transition-timing-function:linear;transition-property:-webkit-transform,opacity;transition-property:transform,opacity}.scale-out-up.mui-leave.mui-leave-active{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}.scale-out-down.mui-leave{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:scale(1);transform:scale(1);transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:1}.scale-out-down.mui-leave.mui-leave-active{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}.spin-in.mui-enter{transition-duration:.5s;transition-timing-function:linear;-webkit-transform:rotate(-270deg);transform:rotate(-270deg);transition-property:-webkit-transform,opacity;transition-property:transform,opacity;opacity:0}.spin-in.mui-enter.mui-enter-active,.spin-out.mui-leave{-webkit-transform:rotate(0);transform:rotate(0);opacity:1}.spin-out.mui-leave{transition-duration:.5s;transition-timing-function:linear;transition-property:-webkit-transform,opacity;transition-property:transform,opacity}.spin-in-ccw.mui-enter,.spin-out.mui-leave.mui-leave-active{-webkit-transform:rotate(270deg);transform:rotate(270deg);opacity:0}.spin-in-ccw.mui-enter{transition-duration:.5s;transition-timing-function:linear;transition-property:-webkit-transform,opacity;transition-property:transform,opacity}.spin-in-ccw.mui-enter.mui-enter-active,.spin-out-ccw.mui-leave{-webkit-transform:rotate(0);transform:rotate(0);opacity:1}.spin-out-ccw.mui-leave{transition-duration:.5s;transition-timing-function:linear;transition-property:-webkit-transform,opacity;transition-property:transform,opacity}.spin-out-ccw.mui-leave.mui-leave-active{-webkit-transform:rotate(-270deg);transform:rotate(-270deg);opacity:0}.slow{transition-duration:.75s!important}.fast{transition-duration:.25s!important}.linear{transition-timing-function:linear!important}.ease{transition-timing-function:ease!important}.ease-in{transition-timing-function:ease-in!important}.ease-out{transition-timing-function:ease-out!important}.ease-in-out{transition-timing-function:ease-in-out!important}.bounce-in{transition-timing-function:cubic-bezier(.485,.155,.24,1.245)!important}.bounce-out{transition-timing-function:cubic-bezier(.485,.155,.515,.845)!important}.bounce-in-out{transition-timing-function:cubic-bezier(.76,-.245,.24,1.245)!important}.short-delay{transition-delay:.3s!important}.long-delay{transition-delay:.7s!important}.shake{-webkit-animation-name:a;animation-name:a}@-webkit-keyframes a{0%,10%,20%,30%,40%,50%,60%,70%,80%,90%{-webkit-transform:translateX(7%);transform:translateX(7%)}5%,15%,25%,35%,45%,55%,65%,75%,85%,95%{-webkit-transform:translateX(-7%);transform:translateX(-7%)}}@keyframes a{0%,10%,20%,30%,40%,50%,60%,70%,80%,90%{-webkit-transform:translateX(7%);transform:translateX(7%)}5%,15%,25%,35%,45%,55%,65%,75%,85%,95%{-webkit-transform:translateX(-7%);transform:translateX(-7%)}}.spin-cw{-webkit-animation-name:b;animation-name:b}@-webkit-keyframes b{0%{-webkit-transform:rotate(-1turn);transform:rotate(-1turn)}to{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes b{0%{-webkit-transform:rotate(-1turn);transform:rotate(-1turn)}to{-webkit-transform:rotate(0);transform:rotate(0)}}.spin-ccw{-webkit-animation-name:b;animation-name:b}@keyframes b{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.wiggle{-webkit-animation-name:c;animation-name:c}@-webkit-keyframes c{40%,50%,60%{-webkit-transform:rotate(7deg);transform:rotate(7deg)}35%,45%,55%,65%{-webkit-transform:rotate(-7deg);transform:rotate(-7deg)}0%,30%,70%,to{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes c{40%,50%,60%{-webkit-transform:rotate(7deg);transform:rotate(7deg)}35%,45%,55%,65%{-webkit-transform:rotate(-7deg);transform:rotate(-7deg)}0%,30%,70%,to{-webkit-transform:rotate(0);transform:rotate(0)}}.shake,.spin-ccw,.spin-cw,.wiggle{-webkit-animation-duration:.5s;animation-duration:.5s}.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.slow{-webkit-animation-duration:.75s!important;animation-duration:.75s!important}.fast{-webkit-animation-duration:.25s!important;animation-duration:.25s!important}.linear{-webkit-animation-timing-function:linear!important;animation-timing-function:linear!important}.ease{-webkit-animation-timing-function:ease!important;animation-timing-function:ease!important}.ease-in{-webkit-animation-timing-function:ease-in!important;animation-timing-function:ease-in!important}.ease-out{-webkit-animation-timing-function:ease-out!important;animation-timing-function:ease-out!important}.ease-in-out{-webkit-animation-timing-function:ease-in-out!important;animation-timing-function:ease-in-out!important}.bounce-in{-webkit-animation-timing-function:cubic-bezier(.485,.155,.24,1.245)!important;animation-timing-function:cubic-bezier(.485,.155,.24,1.245)!important}.bounce-out{-webkit-animation-timing-function:cubic-bezier(.485,.155,.515,.845)!important;animation-timing-function:cubic-bezier(.485,.155,.515,.845)!important}.bounce-in-out{-webkit-animation-timing-function:cubic-bezier(.76,-.245,.24,1.245)!important;animation-timing-function:cubic-bezier(.76,-.245,.24,1.245)!important}.short-delay{-webkit-animation-delay:.3s!important;animation-delay:.3s!important}.long-delay{-webkit-animation-delay:.7s!important;animation-delay:.7s!important} \ No newline at end of file +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:100%;box-sizing:border-box}body{padding:0;margin:0;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:400;line-height:1.5;color:#0a0a0a;background:#fefefe;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a,small{line-height:inherit}a{background-color:transparent;color:#2199e8;text-decoration:none;cursor:pointer}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}dfn{font-style:italic}h1{font-size:2em}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0;max-width:100%;height:auto;-ms-interpolation-mode:bicubic;display:inline-block;vertical-align:middle}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;max-width:75rem;height:0;border-right:0;border-top:0;border-bottom:1px solid #cacaca;border-left:0;margin:1.25rem auto;clear:both}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}pre,samp{font-family:monospace,monospace}button,input,optgroup{color:inherit;font:inherit;margin:0}select,textarea{font:inherit;margin:0}button{overflow:visible;cursor:pointer}button,select{text-transform:none}html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:not-allowed}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{border:0;padding:0;margin-bottom:.5rem;max-width:100%}textarea{overflow:auto;height:auto;min-height:50px}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0;width:100%;margin-bottom:1rem;border-radius:0}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}*,::after,::before{box-sizing:inherit}button,select{-webkit-appearance:none;-moz-appearance:none;border-radius:0}select{width:100%;height:2.4375rem;margin:0 0 1rem;font-size:1rem;font-family:inherit;color:#0a0a0a;background-color:#fefefe;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%28138, 138, 138%29'></polygon></svg>");background-size:9px 6px;background-position:right -1rem center;background-origin:content-box;background-repeat:no-repeat;padding:.5rem 1.5rem .5rem .5rem;border:1px solid #cacaca;line-height:normal}#map_canvas embed,#map_canvas img,#map_canvas object,.map_canvas embed,.map_canvas img,.map_canvas object,.mqa-display embed,.mqa-display img,.mqa-display object{max-width:none!important}button{background:0 0;padding:0;border:0;line-height:1}[data-whatinput=mouse] button{outline:0}.is-visible{display:block!important}.is-hidden{display:none!important}.row{max-width:75rem;margin-left:auto;margin-right:auto}.row::after,.row::before{content:' ';display:table}.row::after{clear:both}.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0}.row .row{max-width:none;margin-left:-.625rem;margin-right:-.625rem}@media screen and (min-width:40em){.row .row{margin-left:-.9375rem;margin-right:-.9375rem}}.row .row.collapse{margin-left:0;margin-right:0}.media-object img,.row.expanded{max-width:none}.row.expanded .row{margin-left:auto;margin-right:auto}.column,.columns{width:100%;float:left;padding-left:.625rem;padding-right:.625rem}@media screen and (min-width:40em){.column,.columns{padding-left:.9375rem;padding-right:.9375rem}}.column:last-child:not(:first-child),.columns:last-child:not(:first-child){float:right}.column.end:last-child:last-child,.end.columns:last-child:last-child{float:left}.column.row.row,.row.row.columns{float:none}.row .column.row.row,.row .row.row.columns{padding-left:0;padding-right:0;margin-left:0;margin-right:0}.small-1{width:8.33333%}.small-pull-1,.small-push-1{position:relative;left:8.33333%}.small-pull-1{left:-8.33333%}.small-offset-0{margin-left:0%}.small-2{width:16.66667%}.small-pull-2,.small-push-2{position:relative;left:16.66667%}.small-pull-2{left:-16.66667%}.small-offset-1{margin-left:8.33333%}.small-3{width:25%}.small-pull-3,.small-push-3{position:relative;left:25%}.small-pull-3{left:-25%}.small-offset-2{margin-left:16.66667%}.small-4{width:33.33333%}.small-pull-4,.small-push-4{position:relative;left:33.33333%}.small-pull-4{left:-33.33333%}.small-offset-3{margin-left:25%}.small-5{width:41.66667%}.small-pull-5,.small-push-5{position:relative;left:41.66667%}.small-pull-5{left:-41.66667%}.small-offset-4{margin-left:33.33333%}.small-6{width:50%}.small-pull-6,.small-push-6{position:relative;left:50%}.small-pull-6{left:-50%}.small-offset-5{margin-left:41.66667%}.small-7{width:58.33333%}.small-pull-7,.small-push-7{position:relative;left:58.33333%}.small-pull-7{left:-58.33333%}.small-offset-6{margin-left:50%}.small-8{width:66.66667%}.small-pull-8,.small-push-8{position:relative;left:66.66667%}.small-pull-8{left:-66.66667%}.small-offset-7{margin-left:58.33333%}.small-9{width:75%}.small-pull-9,.small-push-9{position:relative;left:75%}.small-pull-9{left:-75%}.small-offset-8{margin-left:66.66667%}.small-10{width:83.33333%}.small-pull-10,.small-push-10{position:relative;left:83.33333%}.small-pull-10{left:-83.33333%}.small-offset-9{margin-left:75%}.small-11{width:91.66667%}.small-pull-11,.small-push-11{position:relative;left:91.66667%}.small-pull-11{left:-91.66667%}.small-offset-10{margin-left:83.33333%}.small-12{width:100%}.small-offset-11{margin-left:91.66667%}.small-up-1>.column,.small-up-1>.columns{width:100%;float:left}.small-up-1>.column:nth-of-type(1n),.small-up-1>.columns:nth-of-type(1n){clear:none}.small-up-1>.column:nth-of-type(1n+1),.small-up-1>.columns:nth-of-type(1n+1){clear:both}.small-up-1>.column:last-child,.small-up-1>.columns:last-child{float:left}.small-up-2>.column,.small-up-2>.columns{width:50%;float:left}.small-up-2>.column:nth-of-type(1n),.small-up-2>.columns:nth-of-type(1n){clear:none}.small-up-2>.column:nth-of-type(2n+1),.small-up-2>.columns:nth-of-type(2n+1){clear:both}.small-up-2>.column:last-child,.small-up-2>.columns:last-child{float:left}.small-up-3>.column,.small-up-3>.columns{width:33.33333%;float:left}.small-up-3>.column:nth-of-type(1n),.small-up-3>.columns:nth-of-type(1n){clear:none}.small-up-3>.column:nth-of-type(3n+1),.small-up-3>.columns:nth-of-type(3n+1){clear:both}.small-up-3>.column:last-child,.small-up-3>.columns:last-child{float:left}.small-up-4>.column,.small-up-4>.columns{width:25%;float:left}.small-up-4>.column:nth-of-type(1n),.small-up-4>.columns:nth-of-type(1n){clear:none}.small-up-4>.column:nth-of-type(4n+1),.small-up-4>.columns:nth-of-type(4n+1){clear:both}.small-up-4>.column:last-child,.small-up-4>.columns:last-child{float:left}.small-up-5>.column,.small-up-5>.columns{width:20%;float:left}.small-up-5>.column:nth-of-type(1n),.small-up-5>.columns:nth-of-type(1n){clear:none}.small-up-5>.column:nth-of-type(5n+1),.small-up-5>.columns:nth-of-type(5n+1){clear:both}.small-up-5>.column:last-child,.small-up-5>.columns:last-child{float:left}.small-up-6>.column,.small-up-6>.columns{width:16.66667%;float:left}.small-up-6>.column:nth-of-type(1n),.small-up-6>.columns:nth-of-type(1n){clear:none}.small-up-6>.column:nth-of-type(6n+1),.small-up-6>.columns:nth-of-type(6n+1){clear:both}.small-up-6>.column:last-child,.small-up-6>.columns:last-child{float:left}.small-up-7>.column,.small-up-7>.columns{width:14.28571%;float:left}.small-up-7>.column:nth-of-type(1n),.small-up-7>.columns:nth-of-type(1n){clear:none}.small-up-7>.column:nth-of-type(7n+1),.small-up-7>.columns:nth-of-type(7n+1){clear:both}.small-up-7>.column:last-child,.small-up-7>.columns:last-child{float:left}.small-up-8>.column,.small-up-8>.columns{width:12.5%;float:left}.small-up-8>.column:nth-of-type(1n),.small-up-8>.columns:nth-of-type(1n){clear:none}.small-up-8>.column:nth-of-type(8n+1),.small-up-8>.columns:nth-of-type(8n+1){clear:both}.small-up-8>.column:last-child,.small-up-8>.columns:last-child{float:left}.small-collapse>.column,.small-collapse>.columns{padding-left:0;padding-right:0}.expanded.row .small-collapse.row,.small-collapse .row{margin-left:0;margin-right:0}.small-uncollapse>.column,.small-uncollapse>.columns{padding-left:.625rem;padding-right:.625rem}.small-centered{float:none;margin-left:auto;margin-right:auto}.small-pull-0,.small-push-0,.small-uncentered{position:static;margin-left:0;margin-right:0;float:left}@media screen and (min-width:40em){.medium-1{width:8.33333%}.medium-pull-1,.medium-push-1{position:relative;left:8.33333%}.medium-pull-1{left:-8.33333%}.medium-offset-0{margin-left:0%}.medium-2{width:16.66667%}.medium-pull-2,.medium-push-2{position:relative;left:16.66667%}.medium-pull-2{left:-16.66667%}.medium-offset-1{margin-left:8.33333%}.medium-3{width:25%}.medium-pull-3,.medium-push-3{position:relative;left:25%}.medium-pull-3{left:-25%}.medium-offset-2{margin-left:16.66667%}.medium-4{width:33.33333%}.medium-pull-4,.medium-push-4{position:relative;left:33.33333%}.medium-pull-4{left:-33.33333%}.medium-offset-3{margin-left:25%}.medium-5{width:41.66667%}.medium-pull-5,.medium-push-5{position:relative;left:41.66667%}.medium-pull-5{left:-41.66667%}.medium-offset-4{margin-left:33.33333%}.medium-6{width:50%}.medium-pull-6,.medium-push-6{position:relative;left:50%}.medium-pull-6{left:-50%}.medium-offset-5{margin-left:41.66667%}.medium-7{width:58.33333%}.medium-pull-7,.medium-push-7{position:relative;left:58.33333%}.medium-pull-7{left:-58.33333%}.medium-offset-6{margin-left:50%}.medium-8{width:66.66667%}.medium-pull-8,.medium-push-8{position:relative;left:66.66667%}.medium-pull-8{left:-66.66667%}.medium-offset-7{margin-left:58.33333%}.medium-9{width:75%}.medium-pull-9,.medium-push-9{position:relative;left:75%}.medium-pull-9{left:-75%}.medium-offset-8{margin-left:66.66667%}.medium-10{width:83.33333%}.medium-pull-10,.medium-push-10{position:relative;left:83.33333%}.medium-pull-10{left:-83.33333%}.medium-offset-9{margin-left:75%}.medium-11{width:91.66667%}.medium-pull-11,.medium-push-11{position:relative;left:91.66667%}.medium-pull-11{left:-91.66667%}.medium-offset-10{margin-left:83.33333%}.medium-12{width:100%}.medium-offset-11{margin-left:91.66667%}.medium-up-1>.column,.medium-up-1>.columns{width:100%;float:left}.medium-up-1>.column:nth-of-type(1n),.medium-up-1>.columns:nth-of-type(1n){clear:none}.medium-up-1>.column:nth-of-type(1n+1),.medium-up-1>.columns:nth-of-type(1n+1){clear:both}.medium-up-1>.column:last-child,.medium-up-1>.columns:last-child{float:left}.medium-up-2>.column,.medium-up-2>.columns{width:50%;float:left}.medium-up-2>.column:nth-of-type(1n),.medium-up-2>.columns:nth-of-type(1n){clear:none}.medium-up-2>.column:nth-of-type(2n+1),.medium-up-2>.columns:nth-of-type(2n+1){clear:both}.medium-up-2>.column:last-child,.medium-up-2>.columns:last-child{float:left}.medium-up-3>.column,.medium-up-3>.columns{width:33.33333%;float:left}.medium-up-3>.column:nth-of-type(1n),.medium-up-3>.columns:nth-of-type(1n){clear:none}.medium-up-3>.column:nth-of-type(3n+1),.medium-up-3>.columns:nth-of-type(3n+1){clear:both}.medium-up-3>.column:last-child,.medium-up-3>.columns:last-child{float:left}.medium-up-4>.column,.medium-up-4>.columns{width:25%;float:left}.medium-up-4>.column:nth-of-type(1n),.medium-up-4>.columns:nth-of-type(1n){clear:none}.medium-up-4>.column:nth-of-type(4n+1),.medium-up-4>.columns:nth-of-type(4n+1){clear:both}.medium-up-4>.column:last-child,.medium-up-4>.columns:last-child{float:left}.medium-up-5>.column,.medium-up-5>.columns{width:20%;float:left}.medium-up-5>.column:nth-of-type(1n),.medium-up-5>.columns:nth-of-type(1n){clear:none}.medium-up-5>.column:nth-of-type(5n+1),.medium-up-5>.columns:nth-of-type(5n+1){clear:both}.medium-up-5>.column:last-child,.medium-up-5>.columns:last-child{float:left}.medium-up-6>.column,.medium-up-6>.columns{width:16.66667%;float:left}.medium-up-6>.column:nth-of-type(1n),.medium-up-6>.columns:nth-of-type(1n){clear:none}.medium-up-6>.column:nth-of-type(6n+1),.medium-up-6>.columns:nth-of-type(6n+1){clear:both}.medium-up-6>.column:last-child,.medium-up-6>.columns:last-child{float:left}.medium-up-7>.column,.medium-up-7>.columns{width:14.28571%;float:left}.medium-up-7>.column:nth-of-type(1n),.medium-up-7>.columns:nth-of-type(1n){clear:none}.medium-up-7>.column:nth-of-type(7n+1),.medium-up-7>.columns:nth-of-type(7n+1){clear:both}.medium-up-7>.column:last-child,.medium-up-7>.columns:last-child{float:left}.medium-up-8>.column,.medium-up-8>.columns{width:12.5%;float:left}.medium-up-8>.column:nth-of-type(1n),.medium-up-8>.columns:nth-of-type(1n){clear:none}.medium-up-8>.column:nth-of-type(8n+1),.medium-up-8>.columns:nth-of-type(8n+1){clear:both}.medium-up-8>.column:last-child,.medium-up-8>.columns:last-child{float:left}.medium-collapse>.column,.medium-collapse>.columns{padding-left:0;padding-right:0}.expanded.row .medium-collapse.row,.medium-collapse .row{margin-left:0;margin-right:0}.medium-uncollapse>.column,.medium-uncollapse>.columns{padding-left:.9375rem;padding-right:.9375rem}.medium-centered{float:none;margin-left:auto;margin-right:auto}.medium-pull-0,.medium-push-0,.medium-uncentered{position:static;margin-left:0;margin-right:0;float:left}}@media screen and (min-width:64em){.large-1{width:8.33333%}.large-pull-1,.large-push-1{position:relative;left:8.33333%}.large-pull-1{left:-8.33333%}.large-offset-0{margin-left:0%}.large-2{width:16.66667%}.large-pull-2,.large-push-2{position:relative;left:16.66667%}.large-pull-2{left:-16.66667%}.large-offset-1{margin-left:8.33333%}.large-3{width:25%}.large-pull-3,.large-push-3{position:relative;left:25%}.large-pull-3{left:-25%}.large-offset-2{margin-left:16.66667%}.large-4{width:33.33333%}.large-pull-4,.large-push-4{position:relative;left:33.33333%}.large-pull-4{left:-33.33333%}.large-offset-3{margin-left:25%}.large-5{width:41.66667%}.large-pull-5,.large-push-5{position:relative;left:41.66667%}.large-pull-5{left:-41.66667%}.large-offset-4{margin-left:33.33333%}.large-6{width:50%}.large-pull-6,.large-push-6{position:relative;left:50%}.large-pull-6{left:-50%}.large-offset-5{margin-left:41.66667%}.large-7{width:58.33333%}.large-pull-7,.large-push-7{position:relative;left:58.33333%}.large-pull-7{left:-58.33333%}.large-offset-6{margin-left:50%}.large-8{width:66.66667%}.large-pull-8,.large-push-8{position:relative;left:66.66667%}.large-pull-8{left:-66.66667%}.large-offset-7{margin-left:58.33333%}.large-9{width:75%}.large-pull-9,.large-push-9{position:relative;left:75%}.large-pull-9{left:-75%}.large-offset-8{margin-left:66.66667%}.large-10{width:83.33333%}.large-pull-10,.large-push-10{position:relative;left:83.33333%}.large-pull-10{left:-83.33333%}.large-offset-9{margin-left:75%}.large-11{width:91.66667%}.large-pull-11,.large-push-11{position:relative;left:91.66667%}.large-pull-11{left:-91.66667%}.large-offset-10{margin-left:83.33333%}.large-12{width:100%}.large-offset-11{margin-left:91.66667%}.large-up-1>.column,.large-up-1>.columns{width:100%;float:left}.large-up-1>.column:nth-of-type(1n),.large-up-1>.columns:nth-of-type(1n){clear:none}.large-up-1>.column:nth-of-type(1n+1),.large-up-1>.columns:nth-of-type(1n+1){clear:both}.large-up-1>.column:last-child,.large-up-1>.columns:last-child{float:left}.large-up-2>.column,.large-up-2>.columns{width:50%;float:left}.large-up-2>.column:nth-of-type(1n),.large-up-2>.columns:nth-of-type(1n){clear:none}.large-up-2>.column:nth-of-type(2n+1),.large-up-2>.columns:nth-of-type(2n+1){clear:both}.large-up-2>.column:last-child,.large-up-2>.columns:last-child{float:left}.large-up-3>.column,.large-up-3>.columns{width:33.33333%;float:left}.large-up-3>.column:nth-of-type(1n),.large-up-3>.columns:nth-of-type(1n){clear:none}.large-up-3>.column:nth-of-type(3n+1),.large-up-3>.columns:nth-of-type(3n+1){clear:both}.large-up-3>.column:last-child,.large-up-3>.columns:last-child{float:left}.large-up-4>.column,.large-up-4>.columns{width:25%;float:left}.large-up-4>.column:nth-of-type(1n),.large-up-4>.columns:nth-of-type(1n){clear:none}.large-up-4>.column:nth-of-type(4n+1),.large-up-4>.columns:nth-of-type(4n+1){clear:both}.large-up-4>.column:last-child,.large-up-4>.columns:last-child{float:left}.large-up-5>.column,.large-up-5>.columns{width:20%;float:left}.large-up-5>.column:nth-of-type(1n),.large-up-5>.columns:nth-of-type(1n){clear:none}.large-up-5>.column:nth-of-type(5n+1),.large-up-5>.columns:nth-of-type(5n+1){clear:both}.large-up-5>.column:last-child,.large-up-5>.columns:last-child{float:left}.large-up-6>.column,.large-up-6>.columns{width:16.66667%;float:left}.large-up-6>.column:nth-of-type(1n),.large-up-6>.columns:nth-of-type(1n){clear:none}.large-up-6>.column:nth-of-type(6n+1),.large-up-6>.columns:nth-of-type(6n+1){clear:both}.large-up-6>.column:last-child,.large-up-6>.columns:last-child{float:left}.large-up-7>.column,.large-up-7>.columns{width:14.28571%;float:left}.large-up-7>.column:nth-of-type(1n),.large-up-7>.columns:nth-of-type(1n){clear:none}.large-up-7>.column:nth-of-type(7n+1),.large-up-7>.columns:nth-of-type(7n+1){clear:both}.large-up-7>.column:last-child,.large-up-7>.columns:last-child{float:left}.large-up-8>.column,.large-up-8>.columns{width:12.5%;float:left}.large-up-8>.column:nth-of-type(1n),.large-up-8>.columns:nth-of-type(1n){clear:none}.large-up-8>.column:nth-of-type(8n+1),.large-up-8>.columns:nth-of-type(8n+1){clear:both}.large-up-8>.column:last-child,.large-up-8>.columns:last-child{float:left}.large-collapse>.column,.large-collapse>.columns{padding-left:0;padding-right:0}.expanded.row .large-collapse.row,.large-collapse .row{margin-left:0;margin-right:0}.large-uncollapse>.column,.large-uncollapse>.columns{padding-left:.9375rem;padding-right:.9375rem}.large-centered{float:none;margin-left:auto;margin-right:auto}.large-pull-0,.large-push-0,.large-uncentered{position:static;margin-left:0;margin-right:0;float:left}}blockquote,dd,div,dl,dt,form,li,ol,p,pre,td,th,ul{margin:0;padding:0}h1,h2,h3,h4,h5,h6{padding:0}h1,h2,h3,h4,h5,h6,p{text-rendering:optimizeLegibility}p{font-size:inherit;line-height:1.6;margin-bottom:1rem}b,em,i,strong{line-height:inherit}em,i{font-style:italic}b,strong{font-weight:700}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:400;font-style:normal;color:inherit;margin:0;margin-bottom:.5rem;line-height:1.4}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#cacaca;line-height:0}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.1875rem}h4{font-size:1.125rem}h5{font-size:1.0625rem}h6{font-size:1rem}@media screen and (min-width:40em){h1{font-size:3rem}h2{font-size:2.5rem}h3{font-size:1.9375rem}h4{font-size:1.5625rem}h5{font-size:1.25rem}h6{font-size:1rem}}a:focus,a:hover{color:#1585cf}a img{border:0}dl,ol,ul{line-height:1.6;list-style-position:outside;margin-bottom:1rem}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-left:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-left:1.25rem;margin-bottom:0}dl dt{margin-bottom:.3rem;font-weight:700}blockquote{margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #cacaca}.subheader,blockquote,blockquote p{line-height:1.6;color:#8a8a8a}cite{display:block;font-size:.8125rem;color:#8a8a8a}cite:before{content:'\2014 \0020'}abbr{color:#0a0a0a;cursor:help;border-bottom:1px dotted #0a0a0a}code,kbd{background-color:#e6e6e6;color:#0a0a0a;font-family:Consolas,"Liberation Mono",Courier,monospace}code{font-weight:400;border:1px solid #cacaca;padding:.125rem .3125rem .0625rem}kbd{padding:.125rem .25rem 0;margin:0}.subheader{margin-top:.2rem;margin-bottom:.5rem;font-weight:400;line-height:1.4}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}.no-bullet{margin-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none!important}@media print{*{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}.show-for-print{display:block!important}.hide-for-print{display:none!important}table.show-for-print{display:table!important}thead.show-for-print{display:table-header-group!important}tbody.show-for-print{display:table-row-group!important}tr.show-for-print{display:table-row!important}td.show-for-print,th.show-for-print{display:table-cell!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^='#']:after,a[href^='javascript:']:after{content:''}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #8a8a8a}thead{display:table-header-group}blockquote,img,pre,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}}[type=color],[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],textarea{display:block;box-sizing:border-box;width:100%;height:2.4375rem;padding:.5rem;border:1px solid #cacaca;margin:0 0 1rem;font-family:inherit;font-size:1rem;color:#0a0a0a;background-color:#fefefe;box-shadow:inset 0 1px 2px rgba(10,10,10,.1);border-radius:0;transition:box-shadow .5s,border-color .25s ease-in-out;-webkit-appearance:none;-moz-appearance:none}[type=color]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=datetime]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,textarea:focus{border:1px solid #8a8a8a;background-color:#fefefe;outline:none;box-shadow:0 0 5px #cacaca;transition:box-shadow .5s,border-color .25s ease-in-out}textarea{max-width:100%}textarea[rows]{height:auto}input::placeholder,textarea::placeholder{color:#cacaca}input:disabled,input[readonly],select:disabled,textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type=button],[type=submit]{border-radius:0;-webkit-appearance:none;-moz-appearance:none}input[type=search]{box-sizing:border-box}[type=checkbox],[type=file],[type=radio]{margin:0 0 1rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;margin-left:.5rem;margin-right:1rem;margin-bottom:0;vertical-align:baseline}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-right:.5rem}[type=file]{width:100%}label{display:block;margin:0;font-size:.875rem;font-weight:400;line-height:1.8;color:#0a0a0a}label.middle{margin:0 0 1rem;padding:.5625rem 0}.help-text{margin-top:-.5rem;font-size:.8125rem;font-style:italic;color:#0a0a0a}.input-group{display:table;width:100%;margin-bottom:1rem}.input-group>:first-child{border-radius:0 0 0 0}.input-group>:last-child>*{border-radius:0 0 0 0}.input-group-button,.input-group-field,.input-group-label{margin:0;display:table-cell;vertical-align:middle}.input-group-button,.input-group-field{white-space:nowrap}.input-group-label{text-align:center;padding:0 1rem;background:#e6e6e6;color:#0a0a0a;border:1px solid #cacaca;white-space:nowrap;width:1%;height:100%}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;height:2.5rem}.input-group-button{padding-top:0;padding-bottom:0;text-align:center;height:100%;width:1%}.input-group-button a,.input-group-button button,.input-group-button input{margin:0}.input-group .input-group-button{display:table-cell}fieldset{border:0;padding:0;margin:0}.fieldset{border:1px solid #cacaca;padding:1.25rem;margin:1.125rem 0}.fieldset legend{background:#fefefe;padding:0 .1875rem;margin:0;margin-left:-.1875rem}@media screen and (min-width:0\0){select{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==)}}select::-ms-expand{display:none}select[multiple]{height:auto;background-image:none}.is-invalid-input:not(:focus){background-color:rgba(236,88,64,.1);border-color:#ec5840}.form-error,.is-invalid-label{color:#ec5840}.form-error{display:none;margin-top:-.5rem;margin-bottom:1rem;font-size:.75rem;font-weight:700}.form-error.is-visible{display:block}.button{display:inline-block;text-align:center;line-height:1;cursor:pointer;-webkit-appearance:none;transition:background-color .25s ease-out,color .25s ease-out;vertical-align:middle;border:1px solid transparent;border-radius:0;padding:.85em 1em;margin:0 0 1rem;font-size:.9rem;background-color:#2199e8;color:#fefefe}[data-whatinput=mouse] .button{outline:0}.button:focus,.button:hover{background-color:#1583cc;color:#fefefe}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;width:100%;margin-left:0;margin-right:0}.button.primary{background-color:#2199e8;color:#fefefe}.button.primary:focus,.button.primary:hover{background-color:#147cc0;color:#fefefe}.button.secondary{background-color:#777;color:#fefefe}.button.secondary:focus,.button.secondary:hover{background-color:#5f5f5f;color:#fefefe}.button.success{background-color:#3adb76;color:#fefefe}.button.success:focus,.button.success:hover{background-color:#22bb5b;color:#fefefe}.button.warning{background-color:#ffae00;color:#fefefe}.button.warning:focus,.button.warning:hover{background-color:#cc8b00;color:#fefefe}.button.alert{background-color:#ec5840;color:#fefefe}.button.alert:focus,.button.alert:hover{background-color:#da3116;color:#fefefe}.button.hollow{border:1px solid #2199e8;color:#2199e8}.button.hollow,.button.hollow:focus,.button.hollow:hover{background-color:transparent}.button.hollow.primary:focus,.button.hollow.primary:hover,.button.hollow:focus,.button.hollow:hover{border-color:#0c4d78;color:#0c4d78}.button.hollow.primary{border:1px solid #2199e8;color:#2199e8}.button.hollow.secondary{border:1px solid #777;color:#777}.button.hollow.secondary:focus,.button.hollow.secondary:hover{border-color:#3c3c3c;color:#3c3c3c}.button.hollow.success{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:focus,.button.hollow.success:hover{border-color:#157539;color:#157539}.button.hollow.warning{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:focus,.button.hollow.warning:hover{border-color:#805700;color:#805700}.button.hollow.alert{border:1px solid #ec5840;color:#ec5840}.button.hollow.alert:focus,.button.hollow.alert:hover{border-color:#881f0e;color:#881f0e}.button.disabled,.button[disabled]{opacity:.25;cursor:not-allowed}.button.disabled:focus,.button.disabled:hover,.button[disabled]:focus,.button[disabled]:hover{background-color:#2199e8;color:#fefefe}.button.dropdown::after{content:'';width:0;height:0;border:inset .4em;border-color:#fefefe transparent transparent;border-top-style:solid;border-bottom-width:0;position:relative;top:.4em;float:right;margin-left:1em;display:inline-block}.button.arrow-only::after{margin-left:0;float:none;top:-.1em}.accordion{list-style-type:none;background:#fefefe;margin-left:0}.accordion-item:first-child>:first-child{border-radius:0 0 0 0}.accordion-item:last-child>:last-child{border-radius:0 0 0 0}.accordion-title{display:block;padding:1.25rem 1rem;line-height:1;font-size:.75rem;color:#2199e8;position:relative;border:1px solid #e6e6e6;border-bottom:0}:last-child:not(.is-active)>.accordion-title{border-radius:0 0 0 0;border-bottom:1px solid #e6e6e6}.accordion-title:focus,.accordion-title:hover{background-color:#e6e6e6}.accordion-title::before{content:'+';position:absolute;right:1rem;top:50%;margin-top:-.5rem}.is-active>.accordion-title::before{content:'–'}.accordion-content{padding:1rem;display:none;border:1px solid #e6e6e6;border-bottom:0;background-color:#fefefe;color:#0a0a0a}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.is-accordion-submenu-parent>a{position:relative}.is-accordion-submenu-parent>a::after{content:'';display:block;width:0;height:0;border:inset 6px;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;position:absolute;top:50%;margin-top:-4px;right:1rem}.is-accordion-submenu-parent[aria-expanded=true]>a::after{transform-origin:50% 50%;transform:scaleY(-1)}.badge{display:inline-block;padding:.3em;min-width:2.1em;font-size:.6rem;text-align:center;border-radius:50%;background:#2199e8;color:#fefefe}.badge.secondary{background:#777;color:#fefefe}.badge.success{background:#3adb76;color:#fefefe}.badge.warning{background:#ffae00;color:#fefefe}.badge.alert{background:#ec5840;color:#fefefe}.breadcrumbs{list-style:none;margin:0 0 1rem}.breadcrumbs::after,.breadcrumbs::before{content:' ';display:table}.breadcrumbs::after{clear:both}.breadcrumbs li{float:left;color:#0a0a0a;font-size:.6875rem;cursor:default;text-transform:uppercase}.breadcrumbs li:not(:last-child)::after{color:#cacaca;content:"/";margin:0 .75rem;position:relative;top:1px;opacity:1}.breadcrumbs a{color:#2199e8}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.button-group{margin-bottom:1rem;font-size:0}.button-group::after,.button-group::before{content:' ';display:table}.button-group::after{clear:both}.button-group .button{margin:0 1px 1px 0;font-size:.9rem}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded{margin-right:-1px}.button-group.expanded::after,.button-group.expanded::before,.no-js .dropdown.menu ul,.no-js [data-responsive-menu] ul{display:none}.button-group.expanded .button:first-child:nth-last-child(2),.button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2)~.button{display:inline-block;width:calc(50% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(2):last-child,.button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(3):last-child,.button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(4):last-child,.button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(5):last-child,.button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(6):last-child{margin-right:-6px}.button-group.expanded .button:first-child:nth-last-child(3),.button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3)~.button{display:inline-block;width:calc(33.33333% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(4),.button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4)~.button{display:inline-block;width:calc(25% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(5),.button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5)~.button{display:inline-block;width:calc(20% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(6),.button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6)~.button{display:inline-block;width:calc(16.66667% - 1px);margin-right:1px}.button-group.primary .button{background-color:#2199e8;color:#fefefe}.button-group.primary .button:focus,.button-group.primary .button:hover{background-color:#147cc0;color:#fefefe}.button-group.secondary .button{background-color:#777;color:#fefefe}.button-group.secondary .button:focus,.button-group.secondary .button:hover{background-color:#5f5f5f;color:#fefefe}.button-group.success .button{background-color:#3adb76;color:#fefefe}.button-group.success .button:focus,.button-group.success .button:hover{background-color:#22bb5b;color:#fefefe}.button-group.warning .button{background-color:#ffae00;color:#fefefe}.button-group.warning .button:focus,.button-group.warning .button:hover{background-color:#cc8b00;color:#fefefe}.button-group.alert .button{background-color:#ec5840;color:#fefefe}.button-group.alert .button:focus,.button-group.alert .button:hover{background-color:#da3116;color:#fefefe}.button-group.stacked .button,.button-group.stacked-for-medium .button,.button-group.stacked-for-small .button{width:100%}.button-group.stacked .button:last-child,.button-group.stacked-for-medium .button:last-child,.button-group.stacked-for-small .button:last-child{margin-bottom:0}@media screen and (min-width:40em){.button-group.stacked-for-small .button{width:auto;margin-bottom:0}}@media screen and (min-width:64em){.button-group.stacked-for-medium .button{width:auto;margin-bottom:0}}@media screen and (max-width:39.9375em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}.callout{margin:0 0 1rem;padding:1rem;border:1px solid rgba(10,10,10,.25);border-radius:0;position:relative;color:#0a0a0a;background-color:#fff}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#def0fc}.callout.secondary{background-color:#ebebeb}.callout.success{background-color:#e1faea}.callout.warning{background-color:#fff3d9}.callout.alert{background-color:#fce6e2}.callout.small{padding:.5rem}.callout.large{padding:3rem}.close-button{position:absolute;color:#8a8a8a;right:1rem;top:.5rem;font-size:2em;line-height:1;cursor:pointer}[data-whatinput=mouse] .close-button,[data-whatinput=mouse] .dropdown.menu a,[data-whatinput=mouse] .menu>li{outline:0}.close-button:focus,.close-button:hover{color:#0a0a0a}.menu{margin:0;list-style-type:none}.menu>li{display:table-cell}.menu>li>a{display:block;padding:.7rem 1rem;line-height:1}.menu a,.menu button,.menu input{margin-bottom:0}.menu>li,.menu>li>a i,.menu>li>a i+span,.menu>li>a img,.menu>li>a img+span,.menu>li>a svg,.menu>li>a svg+span{vertical-align:middle}.menu>li>a i,.menu>li>a img,.menu>li>a svg{margin-right:.25rem;display:inline-block}.menu.vertical>li{display:block}@media screen and (min-width:40em){.menu.medium-horizontal>li{display:table-cell}.menu.medium-vertical>li{display:block}}@media screen and (min-width:64em){.menu.large-horizontal>li{display:table-cell}.menu.large-vertical>li{display:block}}.menu.simple li{line-height:1;display:inline-block;margin-right:1rem}.menu.simple a{padding:0}.menu.align-right::after,.menu.align-right::before{content:' ';display:table}.menu.align-right::after{clear:both}.is-dropdown-menu.vertical.align-right,.menu.align-right>li{float:right}.menu.expanded{width:100%;display:table;table-layout:fixed}.menu.expanded>li:first-child:last-child{width:100%}.menu.icon-top>li>a i,.menu.icon-top>li>a img,.menu.icon-top>li>a svg{display:block;margin:0 auto .25rem}.menu.nested{margin-left:1rem}.menu .active>a{color:#fefefe;background:#2199e8}.menu-text{font-weight:700;color:inherit;line-height:1;padding-top:0;padding-bottom:0;padding:.7rem 1rem}.menu-centered,.menu.icon-top>li>a{text-align:center}.menu-centered>.menu,.menu-icon{display:inline-block}.menu-icon{position:relative;vertical-align:middle;cursor:pointer;width:20px;height:16px}.is-drilldown-submenu,.menu-icon::after{position:absolute;top:0;width:100%;background:#fefefe}.menu-icon::after{content:'';display:block;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;height:2px;left:0}.menu-icon:hover::after{background:#cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.is-drilldown{position:relative;overflow:hidden}.is-drilldown li{display:block!important}.is-drilldown-submenu{left:100%;z-index:-1;height:100%;transition:transform .15s linear}.is-drilldown-submenu.is-active{z-index:1;display:block;transform:translateX(-100%)}.is-drilldown-submenu.is-closing{transform:translateX(100%)}.is-drilldown-submenu-parent>a{position:relative}.is-drilldown-submenu-parent>a::after{content:'';display:block;width:0;height:0;border:inset 6px;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0;position:absolute;top:50%;margin-top:-6px;right:1rem}.js-drilldown-back>a::before{content:'';width:0;height:0;border:inset 6px;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0;display:inline-block;vertical-align:middle;margin-right:.75rem}.dropdown-pane{background-color:#fefefe;border:1px solid #cacaca;border-radius:0;display:block;font-size:1rem;padding:1rem;position:absolute;visibility:hidden;width:300px;z-index:10}.dropdown-pane.is-open{visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.dropdown.menu>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu>li.is-dropdown-submenu-parent>a::after{content:'';display:block;width:0;height:0;border:inset 5px;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.vertical>li>a::after,.is-dropdown-submenu .is-dropdown-submenu-parent>a::after{right:14px;margin-top:-3px}.dropdown.menu.vertical>li.opens-left>a::after,.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a::after{content:'';display:block;width:0;height:0;border:inset 5px;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.vertical>li.opens-right>a::after,.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a::after{content:'';display:block;width:0;height:0;border:inset 5px;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}@media screen and (min-width:40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a::after{content:'';display:block;width:0;height:0;border:inset 5px;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.medium-vertical>li>a::after{right:14px;margin-top:-3px}.dropdown.menu.medium-vertical>li.opens-left>a::after{content:'';display:block;width:0;height:0;border:inset 5px;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.medium-vertical>li.opens-right>a::after{content:'';display:block;width:0;height:0;border:inset 5px;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}}@media screen and (min-width:64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a::after{content:'';display:block;width:0;height:0;border:inset 5px;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.large-vertical>li>a::after{right:14px;margin-top:-3px}.dropdown.menu.large-vertical>li.opens-left>a::after{content:'';display:block;width:0;height:0;border:inset 5px;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.large-vertical>li.opens-right>a::after{content:'';display:block;width:0;height:0;border:inset 5px;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{top:100%;left:auto;right:0}.is-dropdown-menu.vertical{width:100px}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a::after{position:absolute;top:50%;right:5px;margin-top:-2px}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{top:100%;left:auto}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{left:auto;right:100%}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{right:auto;left:100%}.is-dropdown-submenu{display:none;position:absolute;top:0;left:100%;min-width:200px;z-index:1;background:#fefefe;border:1px solid #cacaca}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.flex-video{position:relative;height:0;padding-bottom:75%;margin-bottom:1rem;overflow:hidden}.flex-video embed,.flex-video iframe,.flex-video object,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}.flex-video.widescreen{padding-bottom:56.25%}.flex-video.vimeo{padding-top:0}.label{display:inline-block;padding:.33333rem .5rem;font-size:.8rem;line-height:1;white-space:nowrap;cursor:default;border-radius:0;background:#2199e8;color:#fefefe}.label.secondary{background:#777;color:#fefefe}.label.success{background:#3adb76;color:#fefefe}.label.warning{background:#ffae00;color:#fefefe}.label.alert{background:#ec5840;color:#fefefe}.media-object{margin-bottom:1rem;display:block}@media screen and (max-width:39.9375em){.media-object.stack-for-small .media-object-section{padding:0;padding-bottom:1rem;display:block}.media-object.stack-for-small .media-object-section img{width:100%}}.media-object-section{display:table-cell;vertical-align:top}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}.media-object-section.middle{vertical-align:middle}.media-object-section.bottom{vertical-align:bottom}body,html{height:100%}.off-canvas-wrapper{width:100%;overflow-x:hidden;position:relative;backface-visibility:hidden;-webkit-overflow-scrolling:auto}.off-canvas-wrapper-inner{position:relative;width:100%;transition:transform .5s ease}.off-canvas-wrapper-inner::after,.off-canvas-wrapper-inner::before{content:' ';display:table}.off-canvas-wrapper-inner::after{clear:both}.off-canvas-content{min-height:100%;background:#fefefe;transition:transform .5s ease;backface-visibility:hidden;z-index:1;padding-bottom:.1px;box-shadow:0 0 10px rgba(10,10,10,.5)}.js-off-canvas-exit{display:none;position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(254,254,254,.25);cursor:pointer;transition:background .5s ease}.off-canvas{position:absolute;background:#e6e6e6;z-index:-1;max-height:100%;overflow-y:auto;transform:translateX(0)}[data-whatinput=mouse] .off-canvas{outline:0}.off-canvas.position-left{left:-250px;top:0;width:250px}.is-open-left{transform:translateX(250px)}.off-canvas.position-right{right:-250px;top:0;width:250px}.is-open-right{transform:translateX(-250px)}@media screen and (min-width:40em){.position-left.reveal-for-medium{left:0;z-index:auto;position:fixed}.position-left.reveal-for-medium~.off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{right:0;z-index:auto;position:fixed}.position-right.reveal-for-medium~.off-canvas-content{margin-right:250px}}@media screen and (min-width:64em){.position-left.reveal-for-large{left:0;z-index:auto;position:fixed}.position-left.reveal-for-large~.off-canvas-content{margin-left:250px}.position-right.reveal-for-large{right:0;z-index:auto;position:fixed}.position-right.reveal-for-large~.off-canvas-content{margin-right:250px}}.orbit,.orbit-container{position:relative}.orbit-container{margin:0;overflow:hidden;list-style:none}.orbit-slide{width:100%;max-height:100%}.orbit-slide.no-motionui.is-active{top:0;left:0}.orbit-figure{margin:0}.orbit-image{margin:0;width:100%;max-width:100%}.orbit-caption,.orbit-next,.orbit-previous{position:absolute;padding:1rem;color:#fefefe}.orbit-caption{bottom:0;width:100%;margin-bottom:0;background-color:rgba(10,10,10,.5)}.orbit-next,.orbit-previous{top:50%;transform:translateY(-50%);z-index:10}[data-whatinput=mouse] .orbit-next,[data-whatinput=mouse] .orbit-previous{outline:0}.orbit-next:active,.orbit-next:focus,.orbit-next:hover,.orbit-previous:active,.orbit-previous:focus,.orbit-previous:hover{background-color:rgba(10,10,10,.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{position:relative;margin-top:.8rem;margin-bottom:.8rem;text-align:center}[data-whatinput=mouse] .orbit-bullets{outline:0}.orbit-bullets button{width:1.2rem;height:1.2rem;margin:.1rem;background-color:#cacaca;border-radius:50%}.orbit-bullets button.is-active,.orbit-bullets button:hover{background-color:#8a8a8a}.pagination{margin-left:0;margin-bottom:1rem}.pagination::after,.pagination::before{content:' ';display:table}.pagination::after{clear:both}.pagination li{font-size:.875rem;margin-right:.0625rem;border-radius:0;display:none}.pagination li:first-child,.pagination li:last-child{display:inline-block}@media screen and (min-width:40em){.pagination li{display:inline-block}}.pagination a,.pagination button{color:#0a0a0a;display:block;padding:.1875rem .625rem;border-radius:0}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{padding:.1875rem .625rem;background:#2199e8;color:#fefefe;cursor:default}.pagination .disabled{padding:.1875rem .625rem;color:#cacaca;cursor:not-allowed}.pagination .disabled:hover,.tabs.simple>li>a:hover,table tfoot tr,table thead tr{background:0 0}.pagination .ellipsis::after{content:'\2026';padding:.1875rem .625rem;color:#0a0a0a}.pagination-previous a::before,.pagination-previous.disabled::before{content:'\00ab';display:inline-block;margin-right:.5rem}.pagination-next a::after,.pagination-next.disabled::after{content:'\00bb';display:inline-block;margin-left:.5rem}.progress{background-color:#cacaca;height:1rem;margin-bottom:1rem;border-radius:0}.progress.primary .progress-meter{background-color:#2199e8}.progress.secondary .progress-meter{background-color:#777}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#ec5840}.progress-meter{position:relative;display:block;width:0%;height:100%;background-color:#2199e8}.progress-meter-text{top:50%;left:50%;transform:translate(-50%,-50%);position:absolute;margin:0;font-size:.75rem;font-weight:700;color:#fefefe;white-space:nowrap}.slider{position:relative;height:.5rem;margin-top:1.25rem;margin-bottom:2.25rem;background-color:#e6e6e6;cursor:pointer;user-select:none;touch-action:none}.slider-fill,.slider-handle{position:absolute;left:0;display:inline-block;transition:all .2s ease-in-out}.slider-fill{max-width:100%;top:0;height:.5rem;background-color:#cacaca}.slider-fill.is-dragging{transition:all 0s linear}.slider-handle{top:50%;transform:translateY(-50%);z-index:1;width:1.4rem;height:1.4rem;background-color:#2199e8;touch-action:manipulation;border-radius:0}[data-whatinput=mouse] .slider-handle{outline:0}.slider-handle:hover{background-color:#1583cc}.slider-handle.is-dragging{transition:all 0s linear}.slider.disabled,.slider[disabled]{opacity:.25;cursor:not-allowed}.slider.vertical{display:inline-block;width:.5rem;height:12.5rem;margin:0 1.25rem;transform:scale(1,-1)}.slider.vertical .slider-fill{top:0;width:.5rem;max-height:100%}.slider.vertical .slider-handle{position:absolute;top:0;left:50%;width:1.4rem;height:1.4rem;transform:translateX(-50%)}.sticky-container{position:relative}.sticky{position:absolute;z-index:0;transform:translate3d(0,0,0)}.sticky.is-stuck{position:fixed;z-index:5}.sticky.is-stuck.is-at-top{top:0}.sticky.is-anchored.is-at-bottom,.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{position:absolute;left:auto;right:auto}body.is-reveal-open{overflow:hidden}html.is-reveal-open,html.is-reveal-open body{height:100%;overflow:hidden;user-select:none}.reveal-overlay{display:none;position:fixed;top:0;bottom:0;left:0;right:0;z-index:1005;background-color:rgba(10,10,10,.45);overflow-y:scroll}.reveal{display:none;z-index:1006;padding:1rem;border:1px solid #cacaca;background-color:#fefefe;border-radius:0;position:relative;top:100px;margin-left:auto;margin-right:auto;overflow-y:auto}[data-whatinput=mouse] .reveal{outline:0}@media screen and (min-width:40em){.reveal{min-height:0}}.reveal .column,.reveal .columns{min-width:0}.reveal>:last-child{margin-bottom:0}@media screen and (min-width:40em){.reveal{width:600px;max-width:75rem}.reveal .reveal{left:auto;right:auto;margin:0 auto}}.reveal.collapse,.tabs.simple>li>a{padding:0}@media screen and (min-width:40em){.reveal.tiny{width:30%;max-width:75rem}.reveal.large,.reveal.small{width:50%;max-width:75rem}.reveal.large{width:90%}}.reveal.full{top:0;left:0;width:100%;height:100%;height:100vh;min-height:100vh;max-width:none;margin-left:0;border:0;border-radius:0}@media screen and (max-width:39.9375em){.reveal{top:0;left:0;width:100%;height:100%;height:100vh;min-height:100vh;max-width:none;margin-left:0;border:0;border-radius:0}}.reveal.without-overlay{position:fixed}.switch{height:2rem;margin-bottom:1rem;outline:0;position:relative;user-select:none;color:#fefefe;font-weight:700;font-size:.875rem}.switch-input{opacity:0;position:absolute;margin-bottom:0}.switch-paddle,.switch-paddle::after{display:block;transition:all .25s ease-out;border-radius:0}.switch-paddle{background:#cacaca;cursor:pointer;color:inherit;font-weight:inherit;position:relative;width:4rem;height:2rem}input+.switch-paddle{margin:0}.switch-paddle::after{background:#fefefe;content:'';position:absolute;height:1.5rem;left:.25rem;top:.25rem;width:1.5rem;transform:translate3d(0,0,0)}input:checked~.switch-paddle{background:#2199e8}input:checked~.switch-paddle::after{left:2.25rem}[data-whatinput=mouse] input:focus~.switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;transform:translateY(-50%)}.switch-active{left:8%;display:none}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny{height:1.5rem}.switch.tiny .switch-paddle{width:3rem;height:1.5rem;font-size:.625rem}.switch.tiny .switch-paddle::after{width:1rem;height:1rem}.switch.tiny input:checked~.switch-paddle::after{left:1.75rem}.switch.small{height:1.75rem}.switch.small .switch-paddle{width:3.5rem;height:1.75rem;font-size:.75rem}.switch.small .switch-paddle::after{width:1.25rem;height:1.25rem}.switch.small input:checked~.switch-paddle::after{left:2rem}.switch.large{height:2.5rem}.switch.large .switch-paddle{width:5rem;height:2.5rem;font-size:1rem}.switch.large .switch-paddle::after{width:2rem;height:2rem}.switch.large input:checked~.switch-paddle::after{left:2.75rem}table tbody,table tfoot,table thead{border:1px solid #f1f1f1;background-color:#fefefe}table caption{font-weight:700;padding:.5rem .625rem .625rem}table thead{background:#f8f8f8;color:#0a0a0a}table tfoot{background:#f1f1f1;color:#0a0a0a}table tfoot td,table tfoot th,table thead td,table thead th{padding:.5rem .625rem .625rem;font-weight:700;text-align:left}table tbody tr:nth-child(even){background-color:#f1f1f1}table tbody td,table tbody th{padding:.5rem .625rem .625rem}@media screen and (max-width:63.9375em){table.stack tfoot,table.stack thead{display:none}table.stack td,table.stack th,table.stack tr{display:block}table.stack td{border-top:0}}table.scroll{display:block;width:100%;overflow-x:auto}table.hover tr:hover{background-color:#f9f9f9}table.hover tr:nth-of-type(even):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.table-scroll table,.top-bar input.button{width:auto}.tabs{margin:0;list-style-type:none;background:#fefefe;border:1px solid #e6e6e6}.tabs::after,.tabs::before{content:' ';display:table}.tabs::after{clear:both}.tabs.vertical>li{width:auto;float:none;display:block}.tabs.primary{background:#2199e8}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:focus,.tabs.primary>li>a:hover{background:#1893e4}.tabs-title{float:left}.tabs-title>a{display:block;padding:1.25rem 1.5rem;line-height:1;font-size:.75rem}.tabs-title>a:hover{background:#fefefe}.tabs-title>a:focus,.tabs-title>a[aria-selected=true]{background:#e6e6e6}.tabs-content{background:#fefefe;transition:all .5s ease;border:1px solid #e6e6e6;border-top:0}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{border:solid 4px #fefefe;box-shadow:0 0 0 1px rgba(10,10,10,.2);display:inline-block;line-height:0;max-width:100%;transition:box-shadow 200ms ease-out;border-radius:0;margin-bottom:1rem}.thumbnail:focus,.thumbnail:hover{box-shadow:0 0 6px 1px rgba(33,153,232,.5)}.title-bar{background:#0a0a0a;color:#fefefe;padding:.5rem}.title-bar::after,.title-bar::before{content:' ';display:table}.title-bar::after{clear:both}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left{float:left}.title-bar-right{float:right;text-align:right}.title-bar-title{font-weight:700;vertical-align:middle;display:inline-block}.has-tip,.menu-icon.dark{position:relative;display:inline-block}.menu-icon.dark{vertical-align:middle;width:20px;height:16px;cursor:pointer}.menu-icon.dark::after{content:'';position:absolute;display:block;width:100%;height:2px;background:#0a0a0a;top:0;left:0;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a}.menu-icon.dark:hover::after{background:#8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.has-tip{border-bottom:dotted 1px #8a8a8a;font-weight:700;cursor:help}.tooltip{background-color:#0a0a0a;color:#fefefe;font-size:80%;padding:.75rem;position:absolute;z-index:10;top:calc(100% + .6495rem);max-width:10rem!important;border-radius:0}.tooltip::before{content:'';display:block;width:0;height:0;border:inset .75rem;border-color:transparent transparent #0a0a0a;border-bottom-style:solid;border-top-width:0;bottom:100%;position:absolute;left:50%;transform:translateX(-50%)}.tooltip.left::before,.tooltip.right::before,.tooltip.top::before{content:'';display:block;width:0;height:0;border:inset .75rem;bottom:auto}.tooltip.top::before{border-color:#0a0a0a transparent transparent;border-top-style:solid;border-bottom-width:0;top:100%}.tooltip.left::before,.tooltip.right::before{top:50%;transform:translateY(-50%)}.tooltip.left::before{border-left-style:solid;border-right-width:0;border-color:transparent transparent transparent #0a0a0a;left:100%}.tooltip.right::before{border-color:transparent #0a0a0a transparent transparent;border-right-style:solid;border-left-width:0;left:auto;right:100%}.top-bar{padding:.5rem}.top-bar::after,.top-bar::before{content:' ';display:table}.top-bar::after{clear:both}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{max-width:200px;margin-right:1rem}.top-bar .input-group-field{width:100%;margin-right:0}.top-bar .top-bar-left,.top-bar .top-bar-right{width:100%}@media screen and (min-width:40em){.top-bar .top-bar-left,.top-bar .top-bar-right{width:auto}}@media screen and (max-width:63.9375em){.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{width:100%}}@media screen and (max-width:74.9375em){.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{width:100%}}.top-bar-title{float:left;margin-right:1rem}.top-bar-left{float:left}.top-bar-right{float:right}.hide{display:none!important}.invisible{visibility:hidden}@media screen and (max-width:39.9375em){.hide-for-small-only{display:none!important}}@media screen and (max-width:0em),screen and (min-width:40em){.show-for-small-only{display:none!important}}@media screen and (min-width:40em){.hide-for-medium{display:none!important}}@media screen and (max-width:39.9375em){.show-for-medium{display:none!important}}@media screen and (min-width:40em) and (max-width:63.9375em){.hide-for-medium-only{display:none!important}}@media screen and (max-width:39.9375em),screen and (min-width:64em){.show-for-medium-only{display:none!important}}@media screen and (min-width:64em){.hide-for-large{display:none!important}}@media screen and (max-width:63.9375em){.show-for-large{display:none!important}}@media screen and (min-width:64em) and (max-width:74.9375em){.hide-for-large-only{display:none!important}}@media screen and (max-width:63.9375em),screen and (min-width:75em){.show-for-large-only{display:none!important}}.show-for-sr,.show-on-focus{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.show-on-focus:active,.show-on-focus:focus{position:static!important;height:auto;width:auto;overflow:visible;clip:auto}.hide-for-portrait,.show-for-landscape{display:block!important}@media screen and (orientation:landscape){.hide-for-portrait,.show-for-landscape{display:block!important}}@media screen and (orientation:portrait){.hide-for-portrait,.show-for-landscape{display:none!important}}.hide-for-landscape,.show-for-portrait{display:none!important}@media screen and (orientation:landscape){.hide-for-landscape,.show-for-portrait{display:none!important}}@media screen and (orientation:portrait){.hide-for-landscape,.show-for-portrait{display:block!important}}.float-left{float:left!important}.float-right{float:right!important}.float-center{display:block;margin-left:auto;margin-right:auto}.clearfix::after,.clearfix::before{content:' ';display:table}.clearfix::after{clear:both} \ No newline at end of file diff --git a/libraries/foundation-6/customizer/complete.json b/libraries/foundation-6/customizer/complete.json new file mode 100755 index 00000000..9244c561 --- /dev/null +++ b/libraries/foundation-6/customizer/complete.json @@ -0,0 +1,46 @@ +{ + "modules": [ + "grid", + "typography", + "button", + "forms", + "abide", + "accordion", + "accordion_menu", + "badge", + "breadcrumbs", + "button_group", + "callout", + "close_button", + "menu", + "menu_icon", + "drilldown_menu", + "dropdown", + "dropdown_menu", + "equalizer", + "flex_video", + "interchange", + "label", + "magellan", + "media_object", + "off_canvas", + "orbit", + "pagination", + "progress_bar", + "responsive_menu", + "responsive_toggle", + "reveal", + "slider", + "sticky", + "switch", + "table", + "tabs", + "thumbnail", + "title_bar", + "toggler", + "tooltip", + "top_bar", + "visibility", + "float" + ] +} diff --git a/libraries/foundation-6/customizer/config.yml b/libraries/foundation-6/customizer/config.yml new file mode 100755 index 00000000..de290ce1 --- /dev/null +++ b/libraries/foundation-6/customizer/config.yml @@ -0,0 +1,218 @@ +# This is the customizer's master module list. +# Each item in the list is a module with any of these keys: +# - sass: Name of the CSS export. 'grid' becomes '@include foundation-grid;' +# - js: Name of the JavaScript file. 'accordion' becomes 'foundation.accordion.js' +# - js_utils: Names of plugin dependencies. 'box' becomes 'foundation.util.box.js' + +grid: + sass: grid + +flex_grid: + sass: flex-grid + +flex_classes: + sass: flex-classes + +typography: + sass: typography + +button: + sass: button + +forms: + sass: forms + +input_range: + sass: range-input + +abide: + js: abide + +accordion: + sass: accordion + js: accordion + js_utils: + - keyboard + - motion + +accordion_menu: + sass: accordion-menu + js: accordionMenu + js_utils: + - keyboard + - motion + - nest + +badge: + sass: badge + +breadcrumbs: + sass: breadcrumbs + +button_group: + sass: button-group + +callout: + sass: callout + +close_button: + sass: close-button + +drilldown_menu: + sass: drilldown-menu + js: drilldown + js_utils: + - keyboard + - motion + - nest + +dropdown: + sass: dropdown + js: dropdown + js_utils: + - keyboard + - box + - triggers + +dropdown_menu: + sass: dropdown-menu + js: dropdownMenu + js_utils: + - keyboard + - motion + - box + - nest + +equalizer: + js: equalizer + +flex_video: + sass: flex-video + +interchange: + js: interchange + js_utils: + - triggers + - timerAndImageLoader + +label: + sass: label + +magellan: + js: magellan + js_utils: + - motion + +media_object: + sass: media-object + +menu: + sass: menu + +menu_icon: + sass: menu-icon + +off_canvas: + sass: off-canvas + js: offcanvas + +orbit: + sass: orbit + js: orbit + js_utils: + - motion + - timerAndImageLoader + - keyboard + - touch + +pagination: + sass: pagination + +progress_bar: + sass: progress-bar + +progress_element: + sass: progress-element + +responsive_menu: + js: responsiveMenu + js_utils: + - triggers + - mediaQuery + +responsive_toggle: + js: responsiveToggle + js_utils: + - mediaQuery + +meter_element: + sass: meter-element + +slider: + sass: slider + js: slider + js_utils: + - box + - motion + - triggers + - mediaQuery + - keyboard + +sticky: + sass: sticky + js: sticky + js_utils: + - triggers + - mediaQuery + +reveal: + sass: reveal + js: reveal + js_utils: + - box + - motion + - triggers + - mediaQuery + - keyboard + +switch: + sass: switch + +table: + sass: table + +tabs: + sass: tabs + js: tabs + js_utils: + - keyboard + - timerAndImageLoader + +thumbnail: + sass: thumbnail + +title_bar: + sass: title-bar + +toggler: + js: toggler + js_utils: + - motion + +tooltip: + sass: tooltip + js: tooltip + js_utils: + - box + - triggers + - mediaQuery + - motion + +top_bar: + sass: top-bar + +visibility: + sass: visibility-classes + +float: + sass: float-classes diff --git a/libraries/foundation-6/customizer/essential.json b/libraries/foundation-6/customizer/essential.json new file mode 100755 index 00000000..05ed3630 --- /dev/null +++ b/libraries/foundation-6/customizer/essential.json @@ -0,0 +1,11 @@ +{ + "modules": [ + "typography", + "grid", + "forms", + "button", + "callout", + "reveal" + ], + "variables": {} +} diff --git a/libraries/foundation-6/index.html b/libraries/foundation-6/customizer/index.html old mode 100644 new mode 100755 similarity index 100% rename from libraries/foundation-6/index.html rename to libraries/foundation-6/customizer/index.html diff --git a/libraries/foundation-6/customizer/lib/index.js b/libraries/foundation-6/customizer/lib/index.js new file mode 100755 index 00000000..ba43e9a8 --- /dev/null +++ b/libraries/foundation-6/customizer/lib/index.js @@ -0,0 +1,4 @@ +module.exports = { + sass: require('./sass'), + js: require('./js') +} diff --git a/libraries/foundation-6/customizer/lib/js.js b/libraries/foundation-6/customizer/lib/js.js new file mode 100755 index 00000000..e7763d1f --- /dev/null +++ b/libraries/foundation-6/customizer/lib/js.js @@ -0,0 +1,45 @@ +var empty = require('is-empty-object'); +var unique = require('array-uniq'); + +/** + * Creates an array of file paths that can be passed to `gulp.src()`. + * @param {Object} config - Customizer configuration file. + * @param {String[]} modules - Modules to include in the file list. + * @returns {String[]} Array of file paths. + */ +module.exports = function(config, modules) { + var files = ['core']; + var utils = ['mediaQuery']; + var libraries = []; + + if (empty(modules)) { + modules = Object.keys(config); + } + + for (var i in modules) { + var name = modules[i]; + + // Check if the module has JS files + if (config[name] && config[name].js) { + libraries.push(config[name].js); + + // Check if the module has dependencies + if (config[name].js_utils) { + utils = utils.concat(config[name].js_utils); + } + } + } + + // Prune duplicate entries from the list of utility files + utils = unique(utils).map(function(name) { + return 'util.' + name; + }); + + // Combine foundation.core.js, utilities, and plugins into one array + files = files.concat(utils, libraries); + + // Format the modules as paths + return files.map(function(file) { + return 'js/foundation.' + file + '.js'; + }); +} diff --git a/libraries/foundation-6/customizer/lib/sass.js b/libraries/foundation-6/customizer/lib/sass.js new file mode 100755 index 00000000..1df0a107 --- /dev/null +++ b/libraries/foundation-6/customizer/lib/sass.js @@ -0,0 +1,76 @@ +var empty = require('is-empty-object'); +var format = require('util').format; +var multiline = require('multiline').stripIndent; + +var SASS_TEMPLATE = multiline(function() {/* + @charset 'utf-8'; + + // Variables go here + %s + + // Core imports go here + @import 'foundation'; + @import 'motion-ui'; + + // Modules go here + %s + + // Motion UI goes here + @include motion-ui-transitions; + @include motion-ui-animations; +*/}); + +/** + * Generates an entry point Sass file with a custom list of CSS exports and Sass variables. + * @param {Object} config - Customizer configuration object. + * @param {String[]} modules - Modules to include CSS for. + * @param {Object} variables - Sass variable overrides to include. The key is the name of the variable, and the value is the value. + * @returns {String} Formatted Sass file. + */ +module.exports = function(config, modules, variables) { + var variableList = []; + var colorList = {}; + var exportList = ['@include foundation-global-styles;']; + + if (empty(modules)) { + modules = Object.keys(config); + } + + // Create variable overrides code + for (var i in variables) { + var name = i.replace('_', '-'); + if (name.match(/-color$/)) { + var key = name.replace('-color', ''); + colorList[key] = variables[i]; + } + else { + variableList.push(format('$%s: %s;', name, variables[i])); + } + } + + if (!empty(colorList)) { + variableList.push(createPaletteMap(colorList)); + } + + // Create module exports with @include + for (var i in modules) { + var name = modules[i]; + + if (config[name] && config[name].sass) { + exportList.push(format('@include foundation-%s;', config[name].sass)); + } + } + + return format(SASS_TEMPLATE, variableList.join('\n'), exportList.join('\n')) +} + +function createPaletteMap(colors) { + var output = '$foundation-palette: (%s\n);'; + var keys = ''; + + for (var i in colors) { + keys += format('\n %s: %s,', i, colors[i]); + } + + return format(output, keys); +} diff --git a/libraries/foundation-6/dist/foundation-flex.css b/libraries/foundation-6/dist/foundation-flex.css new file mode 100755 index 00000000..3e7e2886 --- /dev/null +++ b/libraries/foundation-6/dist/foundation-flex.css @@ -0,0 +1,4028 @@ +@charset "UTF-8"; +/** + * Foundation for Sites by ZURB + * Version 6.2.3 + * foundation.zurb.com + * Licensed under MIT Open Source + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS and IE text size adjust after device orientation change, + * without disabling user zoom. + */ +html { + font-family: sans-serif; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/** + * Remove default margin. + */ +body { + margin: 0; } + +/* HTML5 display definitions + ========================================================================== */ +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; } + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ +audio, +canvas, +progress, +video { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ } + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. + */ +[hidden], +template { + display: none; } + +/* Links + ========================================================================== */ +/** + * Remove the gray background color from active links in IE 10. + */ +a { + background-color: transparent; } + +/** + * Improve readability of focused elements when they are also in an + * active/hover state. + */ +a:active, +a:hover { + outline: 0; } + +/* Text-level semantics + ========================================================================== */ +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ +abbr[title] { + border-bottom: 1px dotted; } + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ +b, +strong { + font-weight: bold; } + +/** + * Address styling not present in Safari and Chrome. + */ +dfn { + font-style: italic; } + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/** + * Address styling not present in IE 8/9. + */ +mark { + background: #ff0; + color: #000; } + +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +/* Embedded content + ========================================================================== */ +/** + * Remove border when inside `a` element in IE 8/9/10. + */ +img { + border: 0; } + +/** + * Correct overflow not hidden in IE 9/10/11. + */ +svg:not(:root) { + overflow: hidden; } + +/* Grouping content + ========================================================================== */ +/** + * Address margin not present in IE 8/9 and Safari. + */ +figure { + margin: 1em 40px; } + +/** + * Address differences between Firefox and other browsers. + */ +hr { + -webkit-box-sizing: content-box; + box-sizing: content-box; + height: 0; } + +/** + * Contain overflow in all browsers. + */ +pre { + overflow: auto; } + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; } + +/* Forms + ========================================================================== */ +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ +button, +input, +optgroup, +select, +textarea { + color: inherit; + /* 1 */ + font: inherit; + /* 2 */ + margin: 0; + /* 3 */ } + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ +button { + overflow: visible; } + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ +button, +select { + text-transform: none; } + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ } + +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: not-allowed; } + +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; } + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +input { + line-height: normal; } + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + -webkit-box-sizing: content-box; + box-sizing: content-box; + /* 2 */ } + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * Define consistent border, margin, and padding. + * [NOTE] We don't enable this ruleset in Foundation, because we want the <fieldset> element to have plain styling. + */ +/* fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; + } */ +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + border: 0; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ +textarea { + overflow: auto; } + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ +optgroup { + font-weight: bold; } + +/* Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; } + +td, +th { + padding: 0; } + +.foundation-mq { + font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; } + +html { + font-size: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box; } + +*, +*::before, +*::after { + -webkit-box-sizing: inherit; + box-sizing: inherit; } + +body { + padding: 0; + margin: 0; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + line-height: 1.5; + color: #0a0a0a; + background: #fefefe; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + +img { + max-width: 100%; + height: auto; + -ms-interpolation-mode: bicubic; + display: inline-block; + vertical-align: middle; } + +textarea { + height: auto; + min-height: 50px; + border-radius: 0; } + +select { + width: 100%; + border-radius: 0; } + +#map_canvas img, +#map_canvas embed, +#map_canvas object, +.map_canvas img, +.map_canvas embed, +.map_canvas object, +.mqa-display img, +.mqa-display embed, +.mqa-display object { + max-width: none !important; } + +button { + -webkit-appearance: none; + -moz-appearance: none; + background: transparent; + padding: 0; + border: 0; + border-radius: 0; + line-height: 1; } + [data-whatinput='mouse'] button { + outline: 0; } + +.is-visible { + display: block !important; } + +.is-hidden { + display: none !important; } + +.row { + max-width: 75rem; + margin-left: auto; + margin-right: auto; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; } + .row .row { + max-width: none; + margin-left: -0.625rem; + margin-right: -0.625rem; } + @media screen and (min-width: 40em) { + .row .row { + margin-left: -0.9375rem; + margin-right: -0.9375rem; } } + .row.expanded { + max-width: none; } + .row.collapse > .column, .row.collapse > .columns { + padding-left: 0; + padding-right: 0; } + +.column, .columns { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0px; + -ms-flex: 1 1 0px; + flex: 1 1 0px; + padding-left: 0.625rem; + padding-right: 0.625rem; + min-width: initial; } + @media screen and (min-width: 40em) { + .column, .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } } + +.column.row.row, .row.row.columns { + float: none; + display: block; } + .row .column.row.row, .row .row.row.columns { + padding-left: 0; + padding-right: 0; + margin-left: 0; + margin-right: 0; } + +.small-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.33333%; + -ms-flex: 0 0 8.33333%; + flex: 0 0 8.33333%; + max-width: 8.33333%; } + +.small-offset-0 { + margin-left: 0%; } + +.small-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.66667%; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; } + +.small-offset-1 { + margin-left: 8.33333%; } + +.small-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; } + +.small-offset-2 { + margin-left: 16.66667%; } + +.small-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.33333%; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; } + +.small-offset-3 { + margin-left: 25%; } + +.small-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.66667%; + -ms-flex: 0 0 41.66667%; + flex: 0 0 41.66667%; + max-width: 41.66667%; } + +.small-offset-4 { + margin-left: 33.33333%; } + +.small-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; } + +.small-offset-5 { + margin-left: 41.66667%; } + +.small-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.33333%; + -ms-flex: 0 0 58.33333%; + flex: 0 0 58.33333%; + max-width: 58.33333%; } + +.small-offset-6 { + margin-left: 50%; } + +.small-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.66667%; + -ms-flex: 0 0 66.66667%; + flex: 0 0 66.66667%; + max-width: 66.66667%; } + +.small-offset-7 { + margin-left: 58.33333%; } + +.small-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; } + +.small-offset-8 { + margin-left: 66.66667%; } + +.small-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.33333%; + -ms-flex: 0 0 83.33333%; + flex: 0 0 83.33333%; + max-width: 83.33333%; } + +.small-offset-9 { + margin-left: 75%; } + +.small-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.66667%; + -ms-flex: 0 0 91.66667%; + flex: 0 0 91.66667%; + max-width: 91.66667%; } + +.small-offset-10 { + margin-left: 83.33333%; } + +.small-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + +.small-offset-11 { + margin-left: 91.66667%; } + +.small-order-1 { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; } + +.small-order-2 { + -webkit-box-ordinal-group: 3; + -webkit-order: 2; + -ms-flex-order: 2; + order: 2; } + +.small-order-3 { + -webkit-box-ordinal-group: 4; + -webkit-order: 3; + -ms-flex-order: 3; + order: 3; } + +.small-order-4 { + -webkit-box-ordinal-group: 5; + -webkit-order: 4; + -ms-flex-order: 4; + order: 4; } + +.small-order-5 { + -webkit-box-ordinal-group: 6; + -webkit-order: 5; + -ms-flex-order: 5; + order: 5; } + +.small-order-6 { + -webkit-box-ordinal-group: 7; + -webkit-order: 6; + -ms-flex-order: 6; + order: 6; } + +.small-up-1 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .small-up-1 > .column, .small-up-1 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + +.small-up-2 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .small-up-2 > .column, .small-up-2 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; } + +.small-up-3 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .small-up-3 > .column, .small-up-3 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.33333%; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; } + +.small-up-4 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .small-up-4 > .column, .small-up-4 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; } + +.small-up-5 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .small-up-5 > .column, .small-up-5 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 20%; + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20%; } + +.small-up-6 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .small-up-6 > .column, .small-up-6 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.66667%; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; } + +.small-up-7 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .small-up-7 > .column, .small-up-7 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 14.28571%; + -ms-flex: 0 0 14.28571%; + flex: 0 0 14.28571%; + max-width: 14.28571%; } + +.small-up-8 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .small-up-8 > .column, .small-up-8 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 12.5%; + -ms-flex: 0 0 12.5%; + flex: 0 0 12.5%; + max-width: 12.5%; } + +.small-collapse > .column, .small-collapse > .columns { + padding-left: 0; + padding-right: 0; } + +.small-uncollapse > .column, .small-uncollapse > .columns { + padding-left: 0.625rem; + padding-right: 0.625rem; } + +@media screen and (min-width: 40em) { + .medium-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.33333%; + -ms-flex: 0 0 8.33333%; + flex: 0 0 8.33333%; + max-width: 8.33333%; } + .medium-offset-0 { + margin-left: 0%; } + .medium-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.66667%; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; } + .medium-offset-1 { + margin-left: 8.33333%; } + .medium-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; } + .medium-offset-2 { + margin-left: 16.66667%; } + .medium-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.33333%; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; } + .medium-offset-3 { + margin-left: 25%; } + .medium-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.66667%; + -ms-flex: 0 0 41.66667%; + flex: 0 0 41.66667%; + max-width: 41.66667%; } + .medium-offset-4 { + margin-left: 33.33333%; } + .medium-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; } + .medium-offset-5 { + margin-left: 41.66667%; } + .medium-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.33333%; + -ms-flex: 0 0 58.33333%; + flex: 0 0 58.33333%; + max-width: 58.33333%; } + .medium-offset-6 { + margin-left: 50%; } + .medium-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.66667%; + -ms-flex: 0 0 66.66667%; + flex: 0 0 66.66667%; + max-width: 66.66667%; } + .medium-offset-7 { + margin-left: 58.33333%; } + .medium-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; } + .medium-offset-8 { + margin-left: 66.66667%; } + .medium-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.33333%; + -ms-flex: 0 0 83.33333%; + flex: 0 0 83.33333%; + max-width: 83.33333%; } + .medium-offset-9 { + margin-left: 75%; } + .medium-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.66667%; + -ms-flex: 0 0 91.66667%; + flex: 0 0 91.66667%; + max-width: 91.66667%; } + .medium-offset-10 { + margin-left: 83.33333%; } + .medium-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + .medium-offset-11 { + margin-left: 91.66667%; } + .medium-order-1 { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; } + .medium-order-2 { + -webkit-box-ordinal-group: 3; + -webkit-order: 2; + -ms-flex-order: 2; + order: 2; } + .medium-order-3 { + -webkit-box-ordinal-group: 4; + -webkit-order: 3; + -ms-flex-order: 3; + order: 3; } + .medium-order-4 { + -webkit-box-ordinal-group: 5; + -webkit-order: 4; + -ms-flex-order: 4; + order: 4; } + .medium-order-5 { + -webkit-box-ordinal-group: 6; + -webkit-order: 5; + -ms-flex-order: 5; + order: 5; } + .medium-order-6 { + -webkit-box-ordinal-group: 7; + -webkit-order: 6; + -ms-flex-order: 6; + order: 6; } + .medium-up-1 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .medium-up-1 > .column, .medium-up-1 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + .medium-up-2 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .medium-up-2 > .column, .medium-up-2 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; } + .medium-up-3 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .medium-up-3 > .column, .medium-up-3 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.33333%; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; } + .medium-up-4 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .medium-up-4 > .column, .medium-up-4 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; } + .medium-up-5 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .medium-up-5 > .column, .medium-up-5 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 20%; + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20%; } + .medium-up-6 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .medium-up-6 > .column, .medium-up-6 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.66667%; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; } + .medium-up-7 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .medium-up-7 > .column, .medium-up-7 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 14.28571%; + -ms-flex: 0 0 14.28571%; + flex: 0 0 14.28571%; + max-width: 14.28571%; } + .medium-up-8 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .medium-up-8 > .column, .medium-up-8 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 12.5%; + -ms-flex: 0 0 12.5%; + flex: 0 0 12.5%; + max-width: 12.5%; } } + +@media screen and (min-width: 40em) and (min-width: 40em) { + .medium-expand { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0px; + -ms-flex: 1 1 0px; + flex: 1 1 0px; } } + +.row.medium-unstack > .column, .row.medium-unstack > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; } + @media screen and (min-width: 40em) { + .row.medium-unstack > .column, .row.medium-unstack > .columns { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0px; + -ms-flex: 1 1 0px; + flex: 1 1 0px; } } + +@media screen and (min-width: 40em) { + .medium-collapse > .column, .medium-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .medium-uncollapse > .column, .medium-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } } + +@media screen and (min-width: 64em) { + .large-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.33333%; + -ms-flex: 0 0 8.33333%; + flex: 0 0 8.33333%; + max-width: 8.33333%; } + .large-offset-0 { + margin-left: 0%; } + .large-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.66667%; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; } + .large-offset-1 { + margin-left: 8.33333%; } + .large-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; } + .large-offset-2 { + margin-left: 16.66667%; } + .large-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.33333%; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; } + .large-offset-3 { + margin-left: 25%; } + .large-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.66667%; + -ms-flex: 0 0 41.66667%; + flex: 0 0 41.66667%; + max-width: 41.66667%; } + .large-offset-4 { + margin-left: 33.33333%; } + .large-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; } + .large-offset-5 { + margin-left: 41.66667%; } + .large-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.33333%; + -ms-flex: 0 0 58.33333%; + flex: 0 0 58.33333%; + max-width: 58.33333%; } + .large-offset-6 { + margin-left: 50%; } + .large-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.66667%; + -ms-flex: 0 0 66.66667%; + flex: 0 0 66.66667%; + max-width: 66.66667%; } + .large-offset-7 { + margin-left: 58.33333%; } + .large-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; } + .large-offset-8 { + margin-left: 66.66667%; } + .large-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.33333%; + -ms-flex: 0 0 83.33333%; + flex: 0 0 83.33333%; + max-width: 83.33333%; } + .large-offset-9 { + margin-left: 75%; } + .large-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.66667%; + -ms-flex: 0 0 91.66667%; + flex: 0 0 91.66667%; + max-width: 91.66667%; } + .large-offset-10 { + margin-left: 83.33333%; } + .large-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + .large-offset-11 { + margin-left: 91.66667%; } + .large-order-1 { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; } + .large-order-2 { + -webkit-box-ordinal-group: 3; + -webkit-order: 2; + -ms-flex-order: 2; + order: 2; } + .large-order-3 { + -webkit-box-ordinal-group: 4; + -webkit-order: 3; + -ms-flex-order: 3; + order: 3; } + .large-order-4 { + -webkit-box-ordinal-group: 5; + -webkit-order: 4; + -ms-flex-order: 4; + order: 4; } + .large-order-5 { + -webkit-box-ordinal-group: 6; + -webkit-order: 5; + -ms-flex-order: 5; + order: 5; } + .large-order-6 { + -webkit-box-ordinal-group: 7; + -webkit-order: 6; + -ms-flex-order: 6; + order: 6; } + .large-up-1 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .large-up-1 > .column, .large-up-1 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + .large-up-2 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .large-up-2 > .column, .large-up-2 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; } + .large-up-3 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .large-up-3 > .column, .large-up-3 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.33333%; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; } + .large-up-4 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .large-up-4 > .column, .large-up-4 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; } + .large-up-5 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .large-up-5 > .column, .large-up-5 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 20%; + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20%; } + .large-up-6 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .large-up-6 > .column, .large-up-6 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.66667%; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; } + .large-up-7 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .large-up-7 > .column, .large-up-7 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 14.28571%; + -ms-flex: 0 0 14.28571%; + flex: 0 0 14.28571%; + max-width: 14.28571%; } + .large-up-8 { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .large-up-8 > .column, .large-up-8 > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 12.5%; + -ms-flex: 0 0 12.5%; + flex: 0 0 12.5%; + max-width: 12.5%; } } + +@media screen and (min-width: 64em) and (min-width: 64em) { + .large-expand { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0px; + -ms-flex: 1 1 0px; + flex: 1 1 0px; } } + +.row.large-unstack > .column, .row.large-unstack > .columns { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; } + @media screen and (min-width: 64em) { + .row.large-unstack > .column, .row.large-unstack > .columns { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0px; + -ms-flex: 1 1 0px; + flex: 1 1 0px; } } + +@media screen and (min-width: 64em) { + .large-collapse > .column, .large-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .large-uncollapse > .column, .large-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } } + +.shrink { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + max-width: 100%; } + +.column.align-top, .align-top.columns { + -webkit-align-self: flex-start; + -ms-flex-item-align: start; + align-self: flex-start; } + +.column.align-bottom, .align-bottom.columns { + -webkit-align-self: flex-end; + -ms-flex-item-align: end; + align-self: flex-end; } + +.column.align-middle, .align-middle.columns { + -webkit-align-self: center; + -ms-flex-item-align: center; + align-self: center; } + +.column.align-stretch, .align-stretch.columns { + -webkit-align-self: stretch; + -ms-flex-item-align: stretch; + align-self: stretch; } + +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +form, +p, +blockquote, +th, +td { + margin: 0; + padding: 0; } + +p { + font-size: inherit; + line-height: 1.6; + margin-bottom: 1rem; + text-rendering: optimizeLegibility; } + +em, +i { + font-style: italic; + line-height: inherit; } + +strong, +b { + font-weight: bold; + line-height: inherit; } + +small { + font-size: 80%; + line-height: inherit; } + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + font-style: normal; + color: inherit; + text-rendering: optimizeLegibility; + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.4; } + h1 small, + h2 small, + h3 small, + h4 small, + h5 small, + h6 small { + color: #cacaca; + line-height: 0; } + +h1 { + font-size: 1.5rem; } + +h2 { + font-size: 1.25rem; } + +h3 { + font-size: 1.1875rem; } + +h4 { + font-size: 1.125rem; } + +h5 { + font-size: 1.0625rem; } + +h6 { + font-size: 1rem; } + +@media screen and (min-width: 40em) { + h1 { + font-size: 3rem; } + h2 { + font-size: 2.5rem; } + h3 { + font-size: 1.9375rem; } + h4 { + font-size: 1.5625rem; } + h5 { + font-size: 1.25rem; } + h6 { + font-size: 1rem; } } + +a { + color: #2199e8; + text-decoration: none; + line-height: inherit; + cursor: pointer; } + a:hover, a:focus { + color: #1585cf; } + a img { + border: 0; } + +hr { + max-width: 75rem; + height: 0; + border-right: 0; + border-top: 0; + border-bottom: 1px solid #cacaca; + border-left: 0; + margin: 1.25rem auto; + clear: both; } + +ul, +ol, +dl { + line-height: 1.6; + margin-bottom: 1rem; + list-style-position: outside; } + +li { + font-size: inherit; } + +ul { + list-style-type: disc; + margin-left: 1.25rem; } + +ol { + margin-left: 1.25rem; } + +ul ul, ol ul, ul ol, ol ol { + margin-left: 1.25rem; + margin-bottom: 0; } + +dl { + margin-bottom: 1rem; } + dl dt { + margin-bottom: 0.3rem; + font-weight: bold; } + +blockquote { + margin: 0 0 1rem; + padding: 0.5625rem 1.25rem 0 1.1875rem; + border-left: 1px solid #cacaca; } + blockquote, blockquote p { + line-height: 1.6; + color: #8a8a8a; } + +cite { + display: block; + font-size: 0.8125rem; + color: #8a8a8a; } + cite:before { + content: '\2014 \0020'; } + +abbr { + color: #0a0a0a; + cursor: help; + border-bottom: 1px dotted #0a0a0a; } + +code { + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-weight: normal; + color: #0a0a0a; + background-color: #e6e6e6; + border: 1px solid #cacaca; + padding: 0.125rem 0.3125rem 0.0625rem; } + +kbd { + padding: 0.125rem 0.25rem 0; + margin: 0; + background-color: #e6e6e6; + color: #0a0a0a; + font-family: Consolas, "Liberation Mono", Courier, monospace; } + +.subheader { + margin-top: 0.2rem; + margin-bottom: 0.5rem; + font-weight: normal; + line-height: 1.4; + color: #8a8a8a; } + +.lead { + font-size: 125%; + line-height: 1.6; } + +.stat { + font-size: 2.5rem; + line-height: 1; } + p + .stat { + margin-top: -1rem; } + +.no-bullet { + margin-left: 0; + list-style: none; } + +.text-left { + text-align: left; } + +.text-right { + text-align: right; } + +.text-center { + text-align: center; } + +.text-justify { + text-align: justify; } + +@media screen and (min-width: 40em) { + .medium-text-left { + text-align: left; } + .medium-text-right { + text-align: right; } + .medium-text-center { + text-align: center; } + .medium-text-justify { + text-align: justify; } } + +@media screen and (min-width: 64em) { + .large-text-left { + text-align: left; } + .large-text-right { + text-align: right; } + .large-text-center { + text-align: center; } + .large-text-justify { + text-align: justify; } } + +.show-for-print { + display: none !important; } + +@media print { + * { + background: transparent !important; + color: black !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: none !important; } + .show-for-print { + display: block !important; } + .hide-for-print { + display: none !important; } + table.show-for-print { + display: table !important; } + thead.show-for-print { + display: table-header-group !important; } + tbody.show-for-print { + display: table-row-group !important; } + tr.show-for-print { + display: table-row !important; } + td.show-for-print { + display: table-cell !important; } + th.show-for-print { + display: table-cell !important; } + a, + a:visited { + text-decoration: underline; } + a[href]:after { + content: " (" attr(href) ")"; } + .ir a:after, + a[href^='javascript:']:after, + a[href^='#']:after { + content: ''; } + abbr[title]:after { + content: " (" attr(title) ")"; } + pre, + blockquote { + border: 1px solid #8a8a8a; + page-break-inside: avoid; } + thead { + display: table-header-group; } + tr, + img { + page-break-inside: avoid; } + img { + max-width: 100% !important; } + @page { + margin: 0.5cm; } + p, + h2, + h3 { + orphans: 3; + widows: 3; } + h2, + h3 { + page-break-after: avoid; } } + +[type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'], +textarea { + display: block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + height: 2.4375rem; + padding: 0.5rem; + border: 1px solid #cacaca; + margin: 0 0 1rem; + font-family: inherit; + font-size: 1rem; + color: #0a0a0a; + background-color: #fefefe; + -webkit-box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + border-radius: 0; + -webkit-transition: -webkit-box-shadow 0.5s, border-color 0.25s ease-in-out; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; + -webkit-appearance: none; + -moz-appearance: none; } + [type='text']:focus, [type='password']:focus, [type='date']:focus, [type='datetime']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='week']:focus, [type='email']:focus, [type='number']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='url']:focus, [type='color']:focus, + textarea:focus { + border: 1px solid #8a8a8a; + background-color: #fefefe; + outline: none; + -webkit-box-shadow: 0 0 5px #cacaca; + box-shadow: 0 0 5px #cacaca; + -webkit-transition: -webkit-box-shadow 0.5s, border-color 0.25s ease-in-out; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; } + +textarea { + max-width: 100%; } + textarea[rows] { + height: auto; } + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #cacaca; } + +input::-moz-placeholder, +textarea::-moz-placeholder { + color: #cacaca; } + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #cacaca; } + +input::placeholder, +textarea::placeholder { + color: #cacaca; } + +input:disabled, input[readonly], +textarea:disabled, +textarea[readonly] { + background-color: #e6e6e6; + cursor: not-allowed; } + +[type='submit'], +[type='button'] { + border-radius: 0; + -webkit-appearance: none; + -moz-appearance: none; } + +input[type='search'] { + -webkit-box-sizing: border-box; + box-sizing: border-box; } + +[type='file'], +[type='checkbox'], +[type='radio'] { + margin: 0 0 1rem; } + +[type='checkbox'] + label, +[type='radio'] + label { + display: inline-block; + margin-left: 0.5rem; + margin-right: 1rem; + margin-bottom: 0; + vertical-align: baseline; } + [type='checkbox'] + label[for], + [type='radio'] + label[for] { + cursor: pointer; } + +label > [type='checkbox'], +label > [type='radio'] { + margin-right: 0.5rem; } + +[type='file'] { + width: 100%; } + +label { + display: block; + margin: 0; + font-size: 0.875rem; + font-weight: normal; + line-height: 1.8; + color: #0a0a0a; } + label.middle { + margin: 0 0 1rem; + padding: 0.5625rem 0; } + +.help-text { + margin-top: -0.5rem; + font-size: 0.8125rem; + font-style: italic; + color: #0a0a0a; } + +.input-group { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + width: 100%; + margin-bottom: 1rem; + -webkit-box-align: stretch; + -webkit-align-items: stretch; + -ms-flex-align: stretch; + align-items: stretch; } + .input-group > :first-child { + border-radius: 0 0 0 0; } + .input-group > :last-child > * { + border-radius: 0 0 0 0; } + +.input-group-label, .input-group-field, .input-group-button { + margin: 0; + white-space: nowrap; } + +.input-group-label { + text-align: center; + padding: 0 1rem; + background: #e6e6e6; + color: #0a0a0a; + border: 1px solid #cacaca; + white-space: nowrap; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; } + .input-group-label:first-child { + border-right: 0; } + .input-group-label:last-child { + border-left: 0; } + +.input-group-field { + border-radius: 0; + -webkit-box-flex: 1; + -webkit-flex: 1 1 0px; + -ms-flex: 1 1 0px; + flex: 1 1 0px; + width: auto; + height: auto; } + +.input-group-button { + padding-top: 0; + padding-bottom: 0; + text-align: center; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .input-group-button a, + .input-group-button input, + .input-group-button button { + margin: 0; } + +.input-group .input-group-button { + display: table-cell; } + +fieldset { + border: 0; + padding: 0; + margin: 0; } + +legend { + margin-bottom: 0.5rem; + max-width: 100%; } + +.fieldset { + border: 1px solid #cacaca; + padding: 1.25rem; + margin: 1.125rem 0; } + .fieldset legend { + background: #fefefe; + padding: 0 0.1875rem; + margin: 0; + margin-left: -0.1875rem; } + +select { + height: 2.4375rem; + padding: 0.5rem; + border: 1px solid #cacaca; + margin: 0 0 1rem; + font-size: 1rem; + font-family: inherit; + line-height: normal; + color: #0a0a0a; + background-color: #fefefe; + border-radius: 0; + -webkit-appearance: none; + -moz-appearance: none; + background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%28138, 138, 138%29'></polygon></svg>"); + -webkit-background-size: 9px 6px; + background-size: 9px 6px; + background-position: right -1rem center; + -webkit-background-origin: content-box; + background-origin: content-box; + background-repeat: no-repeat; + padding-right: 1.5rem; } + @media screen and (min-width: 0\0) { + select { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); } } + select:disabled { + background-color: #e6e6e6; + cursor: not-allowed; } + select::-ms-expand { + display: none; } + select[multiple] { + height: auto; + background-image: none; } + +.is-invalid-input:not(:focus) { + background-color: rgba(236, 88, 64, 0.1); + border-color: #ec5840; } + +.is-invalid-label { + color: #ec5840; } + +.form-error { + display: none; + margin-top: -0.5rem; + margin-bottom: 1rem; + font-size: 0.75rem; + font-weight: bold; + color: #ec5840; } + .form-error.is-visible { + display: block; } + +.button { + display: inline-block; + text-align: center; + line-height: 1; + cursor: pointer; + -webkit-appearance: none; + -webkit-transition: background-color 0.25s ease-out, color 0.25s ease-out; + transition: background-color 0.25s ease-out, color 0.25s ease-out; + vertical-align: middle; + border: 1px solid transparent; + border-radius: 0; + padding: 0.85em 1em; + margin: 0 0 1rem 0; + font-size: 0.9rem; + background-color: #2199e8; + color: #fefefe; } + [data-whatinput='mouse'] .button { + outline: 0; } + .button:hover, .button:focus { + background-color: #1583cc; + color: #fefefe; } + .button.tiny { + font-size: 0.6rem; } + .button.small { + font-size: 0.75rem; } + .button.large { + font-size: 1.25rem; } + .button.expanded { + display: block; + width: 100%; + margin-left: 0; + margin-right: 0; } + .button.primary { + background-color: #2199e8; + color: #fefefe; } + .button.primary:hover, .button.primary:focus { + background-color: #147cc0; + color: #fefefe; } + .button.secondary { + background-color: #777; + color: #fefefe; } + .button.secondary:hover, .button.secondary:focus { + background-color: #5f5f5f; + color: #fefefe; } + .button.success { + background-color: #3adb76; + color: #fefefe; } + .button.success:hover, .button.success:focus { + background-color: #22bb5b; + color: #fefefe; } + .button.warning { + background-color: #ffae00; + color: #fefefe; } + .button.warning:hover, .button.warning:focus { + background-color: #cc8b00; + color: #fefefe; } + .button.alert { + background-color: #ec5840; + color: #fefefe; } + .button.alert:hover, .button.alert:focus { + background-color: #da3116; + color: #fefefe; } + .button.hollow { + border: 1px solid #2199e8; + color: #2199e8; } + .button.hollow, .button.hollow:hover, .button.hollow:focus { + background-color: transparent; } + .button.hollow:hover, .button.hollow:focus { + border-color: #0c4d78; + color: #0c4d78; } + .button.hollow.primary { + border: 1px solid #2199e8; + color: #2199e8; } + .button.hollow.primary:hover, .button.hollow.primary:focus { + border-color: #0c4d78; + color: #0c4d78; } + .button.hollow.secondary { + border: 1px solid #777; + color: #777; } + .button.hollow.secondary:hover, .button.hollow.secondary:focus { + border-color: #3c3c3c; + color: #3c3c3c; } + .button.hollow.success { + border: 1px solid #3adb76; + color: #3adb76; } + .button.hollow.success:hover, .button.hollow.success:focus { + border-color: #157539; + color: #157539; } + .button.hollow.warning { + border: 1px solid #ffae00; + color: #ffae00; } + .button.hollow.warning:hover, .button.hollow.warning:focus { + border-color: #805700; + color: #805700; } + .button.hollow.alert { + border: 1px solid #ec5840; + color: #ec5840; } + .button.hollow.alert:hover, .button.hollow.alert:focus { + border-color: #881f0e; + color: #881f0e; } + .button.disabled, .button[disabled] { + opacity: 0.25; + cursor: not-allowed; } + .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { + background-color: #2199e8; + color: #fefefe; } + .button.dropdown::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.4em; + border-color: #fefefe transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + position: relative; + top: 0.4em; + float: right; + margin-left: 1em; + display: inline-block; } + .button.arrow-only::after { + margin-left: 0; + float: none; + top: -0.1em; } + +.accordion { + list-style-type: none; + background: #fefefe; + margin-left: 0; } + +.accordion-item:first-child > :first-child { + border-radius: 0 0 0 0; } + +.accordion-item:last-child > :last-child { + border-radius: 0 0 0 0; } + +.accordion-title { + display: block; + padding: 1.25rem 1rem; + line-height: 1; + font-size: 0.75rem; + color: #2199e8; + position: relative; + border: 1px solid #e6e6e6; + border-bottom: 0; } + :last-child:not(.is-active) > .accordion-title { + border-radius: 0 0 0 0; + border-bottom: 1px solid #e6e6e6; } + .accordion-title:hover, .accordion-title:focus { + background-color: #e6e6e6; } + .accordion-title::before { + content: '+'; + position: absolute; + right: 1rem; + top: 50%; + margin-top: -0.5rem; } + .is-active > .accordion-title::before { + content: '–'; } + +.accordion-content { + padding: 1rem; + display: none; + border: 1px solid #e6e6e6; + border-bottom: 0; + background-color: #fefefe; + color: #0a0a0a; } + :last-child > .accordion-content:last-child { + border-bottom: 1px solid #e6e6e6; } + +.is-accordion-submenu-parent > a { + position: relative; } + .is-accordion-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + position: absolute; + top: 50%; + margin-top: -4px; + right: 1rem; } + +.is-accordion-submenu-parent[aria-expanded='true'] > a::after { + -webkit-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transform: scaleY(-1); + -ms-transform: scaleY(-1); + transform: scaleY(-1); } + +.badge { + display: inline-block; + padding: 0.3em; + min-width: 2.1em; + font-size: 0.6rem; + text-align: center; + border-radius: 50%; + background: #2199e8; + color: #fefefe; } + .badge.secondary { + background: #777; + color: #fefefe; } + .badge.success { + background: #3adb76; + color: #fefefe; } + .badge.warning { + background: #ffae00; + color: #fefefe; } + .badge.alert { + background: #ec5840; + color: #fefefe; } + +.breadcrumbs { + list-style: none; + margin: 0 0 1rem 0; } + .breadcrumbs::before, .breadcrumbs::after { + content: ' '; + display: table; + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; } + .breadcrumbs::after { + clear: both; } + .breadcrumbs li { + float: left; + color: #0a0a0a; + font-size: 0.6875rem; + cursor: default; + text-transform: uppercase; } + .breadcrumbs li:not(:last-child)::after { + color: #cacaca; + content: "/"; + margin: 0 0.75rem; + position: relative; + top: 1px; + opacity: 1; } + .breadcrumbs a { + color: #2199e8; } + .breadcrumbs a:hover { + text-decoration: underline; } + .breadcrumbs .disabled { + color: #cacaca; + cursor: not-allowed; } + +.button-group { + margin-bottom: 1rem; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-align: stretch; + -webkit-align-items: stretch; + -ms-flex-align: stretch; + align-items: stretch; } + .button-group::before, .button-group::after { + content: ' '; + display: table; + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; } + .button-group::after { + clear: both; } + .button-group .button { + margin: 0; + margin-right: 1px; + margin-bottom: 1px; + font-size: 0.9rem; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .button-group .button:last-child { + margin-right: 0; } + .button-group.tiny .button { + font-size: 0.6rem; } + .button-group.small .button { + font-size: 0.75rem; } + .button-group.large .button { + font-size: 1.25rem; } + .button-group.expanded .button { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0px; + -ms-flex: 1 1 0px; + flex: 1 1 0px; } + .button-group.primary .button { + background-color: #2199e8; + color: #fefefe; } + .button-group.primary .button:hover, .button-group.primary .button:focus { + background-color: #147cc0; + color: #fefefe; } + .button-group.secondary .button { + background-color: #777; + color: #fefefe; } + .button-group.secondary .button:hover, .button-group.secondary .button:focus { + background-color: #5f5f5f; + color: #fefefe; } + .button-group.success .button { + background-color: #3adb76; + color: #fefefe; } + .button-group.success .button:hover, .button-group.success .button:focus { + background-color: #22bb5b; + color: #fefefe; } + .button-group.warning .button { + background-color: #ffae00; + color: #fefefe; } + .button-group.warning .button:hover, .button-group.warning .button:focus { + background-color: #cc8b00; + color: #fefefe; } + .button-group.alert .button { + background-color: #ec5840; + color: #fefefe; } + .button-group.alert .button:hover, .button-group.alert .button:focus { + background-color: #da3116; + color: #fefefe; } + .button-group.stacked, .button-group.stacked-for-small, .button-group.stacked-for-medium { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .button-group.stacked .button, .button-group.stacked-for-small .button, .button-group.stacked-for-medium .button { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; } + .button-group.stacked .button:last-child, .button-group.stacked-for-small .button:last-child, .button-group.stacked-for-medium .button:last-child { + margin-bottom: 0; } + @media screen and (min-width: 40em) { + .button-group.stacked-for-small .button { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0px; + -ms-flex: 1 1 0px; + flex: 1 1 0px; + margin-bottom: 0; } } + @media screen and (min-width: 64em) { + .button-group.stacked-for-medium .button { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0px; + -ms-flex: 1 1 0px; + flex: 1 1 0px; + margin-bottom: 0; } } + @media screen and (max-width: 39.9375em) { + .button-group.stacked-for-small.expanded { + display: block; } + .button-group.stacked-for-small.expanded .button { + display: block; + margin-right: 0; } } + +.callout { + margin: 0 0 1rem 0; + padding: 1rem; + border: 1px solid rgba(10, 10, 10, 0.25); + border-radius: 0; + position: relative; + color: #0a0a0a; + background-color: white; } + .callout > :first-child { + margin-top: 0; } + .callout > :last-child { + margin-bottom: 0; } + .callout.primary { + background-color: #def0fc; } + .callout.secondary { + background-color: #ebebeb; } + .callout.success { + background-color: #e1faea; } + .callout.warning { + background-color: #fff3d9; } + .callout.alert { + background-color: #fce6e2; } + .callout.small { + padding-top: 0.5rem; + padding-right: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.5rem; } + .callout.large { + padding-top: 3rem; + padding-right: 3rem; + padding-bottom: 3rem; + padding-left: 3rem; } + +.close-button { + position: absolute; + color: #8a8a8a; + right: 1rem; + top: 0.5rem; + font-size: 2em; + line-height: 1; + cursor: pointer; } + [data-whatinput='mouse'] .close-button { + outline: 0; } + .close-button:hover, .close-button:focus { + color: #0a0a0a; } + +.menu { + margin: 0; + list-style-type: none; + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + .menu > li { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + [data-whatinput='mouse'] .menu > li { + outline: 0; } + .menu > li > a { + display: block; + padding: 0.7rem 1rem; + line-height: 1; } + .menu input, + .menu a, + .menu button { + margin-bottom: 0; } + .menu > li > a { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; } + .menu > li > a { + -webkit-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; } + .menu > li > a img, + .menu > li > a i, + .menu > li > a svg { + margin-right: 0.25rem; } + .menu > li { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .menu.vertical { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .menu.vertical > li { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + .menu.vertical > li > a { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } + @media screen and (min-width: 40em) { + .menu.medium-horizontal { + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + .menu.medium-horizontal > li { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .menu.medium-vertical { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .menu.medium-vertical > li { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + .menu.medium-vertical > li > a { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } } + @media screen and (min-width: 64em) { + .menu.large-horizontal { + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + .menu.large-horizontal > li { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .menu.large-vertical { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .menu.large-vertical > li { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + .menu.large-vertical > li > a { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; } } + .menu.simple li { + line-height: 1; + display: inline-block; + margin-right: 1rem; } + .menu.simple a { + padding: 0; } + .menu.align-right { + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; } + .menu.expanded > li { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0px; + -ms-flex: 1 1 0px; + flex: 1 1 0px; } + .menu.expanded > li:first-child:last-child { + width: 100%; } + .menu.icon-top > li > a { + -webkit-flex-flow: column nowrap; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; } + .menu.icon-top > li > a img, + .menu.icon-top > li > a i, + .menu.icon-top > li > a svg { + -webkit-align-self: stretch; + -ms-flex-item-align: stretch; + align-self: stretch; + text-align: center; + margin-bottom: 0.25rem; } + .menu.nested { + margin-left: 1rem; } + .menu .active > a { + color: #fefefe; + background: #2199e8; } + +.menu-text { + font-weight: bold; + color: inherit; + line-height: 1; + padding-top: 0; + padding-bottom: 0; + padding: 0.7rem 1rem; } + +.menu-centered { + text-align: center; } + .menu-centered > .menu { + display: inline-block; } + +.no-js [data-responsive-menu] ul { + display: none; } + +.menu-icon { + position: relative; + display: inline-block; + vertical-align: middle; + cursor: pointer; + width: 20px; + height: 16px; } + .menu-icon::after { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 2px; + background: #fefefe; + top: 0; + left: 0; + -webkit-box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; + box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; } + .menu-icon:hover::after { + background: #cacaca; + -webkit-box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; + box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; } + +.menu-icon.dark { + position: relative; + display: inline-block; + vertical-align: middle; + cursor: pointer; + width: 20px; + height: 16px; } + .menu-icon.dark::after { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 2px; + background: #0a0a0a; + top: 0; + left: 0; + -webkit-box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; + box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; } + .menu-icon.dark:hover::after { + background: #8a8a8a; + -webkit-box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; + box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; } + +.is-drilldown { + position: relative; + overflow: hidden; } + .is-drilldown li { + display: block !important; } + +.is-drilldown-submenu { + position: absolute; + top: 0; + left: 100%; + z-index: -1; + height: 100%; + width: 100%; + background: #fefefe; + -webkit-transition: -webkit-transform 0.15s linear; + transition: transform 0.15s linear; } + .is-drilldown-submenu.is-active { + z-index: 1; + display: block; + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); } + .is-drilldown-submenu.is-closing { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); } + +.is-drilldown-submenu-parent > a { + position: relative; } + .is-drilldown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; + position: absolute; + top: 50%; + margin-top: -6px; + right: 1rem; } + +.js-drilldown-back > a::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; + border-left-width: 0; + display: inline-block; + vertical-align: middle; + margin-right: 0.75rem; } + +.dropdown-pane { + background-color: #fefefe; + border: 1px solid #cacaca; + border-radius: 0; + display: block; + font-size: 1rem; + padding: 1rem; + position: absolute; + visibility: hidden; + width: 300px; + z-index: 10; } + .dropdown-pane.is-open { + visibility: visible; } + +.dropdown-pane.tiny { + width: 100px; } + +.dropdown-pane.small { + width: 200px; } + +.dropdown-pane.large { + width: 400px; } + +.dropdown.menu > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + +.dropdown.menu > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + +.dropdown.menu > li.is-dropdown-submenu-parent > a { + padding-right: 1.5rem; + position: relative; } + +.dropdown.menu > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + right: 5px; + margin-top: -2px; } + +[data-whatinput='mouse'] .dropdown.menu a { + outline: 0; } + +.no-js .dropdown.menu ul { + display: none; } + +.dropdown.menu.vertical > li .is-dropdown-submenu { + top: 0; } + +.dropdown.menu.vertical > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + +.dropdown.menu.vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + +.dropdown.menu.vertical > li > a::after { + right: 14px; + margin-top: -3px; } + +.dropdown.menu.vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + +.dropdown.menu.vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } + +@media screen and (min-width: 40em) { + .dropdown.menu.medium-horizontal > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + .dropdown.menu.medium-horizontal > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a { + padding-right: 1.5rem; + position: relative; } + .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + right: 5px; + margin-top: -2px; } + .dropdown.menu.medium-vertical > li .is-dropdown-submenu { + top: 0; } + .dropdown.menu.medium-vertical > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + .dropdown.menu.medium-vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + .dropdown.menu.medium-vertical > li > a::after { + right: 14px; + margin-top: -3px; } + .dropdown.menu.medium-vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .dropdown.menu.medium-vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } } + +@media screen and (min-width: 64em) { + .dropdown.menu.large-horizontal > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + .dropdown.menu.large-horizontal > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a { + padding-right: 1.5rem; + position: relative; } + .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + right: 5px; + margin-top: -2px; } + .dropdown.menu.large-vertical > li .is-dropdown-submenu { + top: 0; } + .dropdown.menu.large-vertical > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + .dropdown.menu.large-vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + .dropdown.menu.large-vertical > li > a::after { + right: 14px; + margin-top: -3px; } + .dropdown.menu.large-vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .dropdown.menu.large-vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } } + +.dropdown.menu.align-right .is-dropdown-submenu.first-sub { + top: 100%; + left: auto; + right: 0; } + +.is-dropdown-menu.vertical { + width: 100px; } + .is-dropdown-menu.vertical.align-right { + float: right; } + +.is-dropdown-submenu-parent { + position: relative; } + .is-dropdown-submenu-parent a::after { + position: absolute; + top: 50%; + right: 5px; + margin-top: -2px; } + .is-dropdown-submenu-parent.opens-inner > .is-dropdown-submenu { + top: 100%; + left: auto; } + .is-dropdown-submenu-parent.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + .is-dropdown-submenu-parent.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + +.is-dropdown-submenu { + display: none; + position: absolute; + top: 0; + left: 100%; + min-width: 200px; + z-index: 1; + background: #fefefe; + border: 1px solid #cacaca; } + .is-dropdown-submenu .is-dropdown-submenu-parent > a::after { + right: 14px; + margin-top: -3px; } + .is-dropdown-submenu .is-dropdown-submenu-parent.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .is-dropdown-submenu .is-dropdown-submenu-parent.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } + .is-dropdown-submenu .is-dropdown-submenu { + margin-top: -1px; } + .is-dropdown-submenu > li { + width: 100%; } + .is-dropdown-submenu.js-dropdown-active { + display: block; } + +.flex-video { + position: relative; + height: 0; + padding-bottom: 75%; + margin-bottom: 1rem; + overflow: hidden; } + .flex-video iframe, + .flex-video object, + .flex-video embed, + .flex-video video { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } + .flex-video.widescreen { + padding-bottom: 56.25%; } + .flex-video.vimeo { + padding-top: 0; } + +.label { + display: inline-block; + padding: 0.33333rem 0.5rem; + font-size: 0.8rem; + line-height: 1; + white-space: nowrap; + cursor: default; + border-radius: 0; + background: #2199e8; + color: #fefefe; } + .label.secondary { + background: #777; + color: #fefefe; } + .label.success { + background: #3adb76; + color: #fefefe; } + .label.warning { + background: #ffae00; + color: #fefefe; } + .label.alert { + background: #ec5840; + color: #fefefe; } + +.media-object { + margin-bottom: 1rem; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + .media-object img { + max-width: none; } + @media screen and (max-width: 39.9375em) { + .media-object.stack-for-small { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } } + @media screen and (max-width: 39.9375em) { + .media-object.stack-for-small .media-object-section { + padding: 0; + padding-bottom: 1rem; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; } + .media-object.stack-for-small .media-object-section img { + width: 100%; } } + +.media-object-section { + -webkit-box-flex: 0; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; } + .media-object-section:first-child { + padding-right: 1rem; } + .media-object-section:last-child:not(:nth-child(2)) { + padding-left: 1rem; } + .media-object-section > :last-child { + margin-bottom: 0; } + .media-object-section.main-section { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0px; + -ms-flex: 1 1 0px; + flex: 1 1 0px; } + +html, +body { + height: 100%; } + +.off-canvas-wrapper { + width: 100%; + overflow-x: hidden; + position: relative; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-overflow-scrolling: auto; } + +.off-canvas-wrapper-inner { + position: relative; + width: 100%; + -webkit-transition: -webkit-transform 0.5s ease; + transition: transform 0.5s ease; } + .off-canvas-wrapper-inner::before, .off-canvas-wrapper-inner::after { + content: ' '; + display: table; + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; } + .off-canvas-wrapper-inner::after { + clear: both; } + +.off-canvas-content, +.off-canvas-content { + min-height: 100%; + background: #fefefe; + -webkit-transition: -webkit-transform 0.5s ease; + transition: transform 0.5s ease; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + padding-bottom: 0.1px; + -webkit-box-shadow: 0 0 10px rgba(10, 10, 10, 0.5); + box-shadow: 0 0 10px rgba(10, 10, 10, 0.5); } + +.js-off-canvas-exit { + display: none; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(254, 254, 254, 0.25); + cursor: pointer; + -webkit-transition: background 0.5s ease; + transition: background 0.5s ease; } + +.off-canvas { + position: absolute; + background: #e6e6e6; + z-index: -1; + max-height: 100%; + overflow-y: auto; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); } + [data-whatinput='mouse'] .off-canvas { + outline: 0; } + .off-canvas.position-left { + left: -250px; + top: 0; + width: 250px; } + .is-open-left { + -webkit-transform: translateX(250px); + -ms-transform: translateX(250px); + transform: translateX(250px); } + .off-canvas.position-right { + right: -250px; + top: 0; + width: 250px; } + .is-open-right { + -webkit-transform: translateX(-250px); + -ms-transform: translateX(-250px); + transform: translateX(-250px); } + +@media screen and (min-width: 40em) { + .position-left.reveal-for-medium { + left: 0; + z-index: auto; + position: fixed; } + .position-left.reveal-for-medium ~ .off-canvas-content { + margin-left: 250px; } + .position-right.reveal-for-medium { + right: 0; + z-index: auto; + position: fixed; } + .position-right.reveal-for-medium ~ .off-canvas-content { + margin-right: 250px; } } + +@media screen and (min-width: 64em) { + .position-left.reveal-for-large { + left: 0; + z-index: auto; + position: fixed; } + .position-left.reveal-for-large ~ .off-canvas-content { + margin-left: 250px; } + .position-right.reveal-for-large { + right: 0; + z-index: auto; + position: fixed; } + .position-right.reveal-for-large ~ .off-canvas-content { + margin-right: 250px; } } + +.orbit { + position: relative; } + +.orbit-container { + position: relative; + margin: 0; + overflow: hidden; + list-style: none; } + +.orbit-slide { + width: 100%; + max-height: 100%; } + .orbit-slide.no-motionui.is-active { + top: 0; + left: 0; } + +.orbit-figure { + margin: 0; } + +.orbit-image { + margin: 0; + width: 100%; + max-width: 100%; } + +.orbit-caption { + position: absolute; + bottom: 0; + width: 100%; + padding: 1rem; + margin-bottom: 0; + color: #fefefe; + background-color: rgba(10, 10, 10, 0.5); } + +.orbit-previous, .orbit-next { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + z-index: 10; + padding: 1rem; + color: #fefefe; } + [data-whatinput='mouse'] .orbit-previous, [data-whatinput='mouse'] .orbit-next { + outline: 0; } + .orbit-previous:hover, .orbit-next:hover, .orbit-previous:active, .orbit-next:active, .orbit-previous:focus, .orbit-next:focus { + background-color: rgba(10, 10, 10, 0.5); } + +.orbit-previous { + left: 0; } + +.orbit-next { + left: auto; + right: 0; } + +.orbit-bullets { + position: relative; + margin-top: 0.8rem; + margin-bottom: 0.8rem; + text-align: center; } + [data-whatinput='mouse'] .orbit-bullets { + outline: 0; } + .orbit-bullets button { + width: 1.2rem; + height: 1.2rem; + margin: 0.1rem; + background-color: #cacaca; + border-radius: 50%; } + .orbit-bullets button:hover { + background-color: #8a8a8a; } + .orbit-bullets button.is-active { + background-color: #8a8a8a; } + +.pagination { + margin-left: 0; + margin-bottom: 1rem; } + .pagination::before, .pagination::after { + content: ' '; + display: table; + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; } + .pagination::after { + clear: both; } + .pagination li { + font-size: 0.875rem; + margin-right: 0.0625rem; + border-radius: 0; + display: none; } + .pagination li:last-child, .pagination li:first-child { + display: inline-block; } + @media screen and (min-width: 40em) { + .pagination li { + display: inline-block; } } + .pagination a, + .pagination button { + color: #0a0a0a; + display: block; + padding: 0.1875rem 0.625rem; + border-radius: 0; } + .pagination a:hover, + .pagination button:hover { + background: #e6e6e6; } + .pagination .current { + padding: 0.1875rem 0.625rem; + background: #2199e8; + color: #fefefe; + cursor: default; } + .pagination .disabled { + padding: 0.1875rem 0.625rem; + color: #cacaca; + cursor: not-allowed; } + .pagination .disabled:hover { + background: transparent; } + .pagination .ellipsis::after { + content: '\2026'; + padding: 0.1875rem 0.625rem; + color: #0a0a0a; } + +.pagination-previous a::before, +.pagination-previous.disabled::before { + content: '\00ab'; + display: inline-block; + margin-right: 0.5rem; } + +.pagination-next a::after, +.pagination-next.disabled::after { + content: '\00bb'; + display: inline-block; + margin-left: 0.5rem; } + +.progress { + background-color: #cacaca; + height: 1rem; + margin-bottom: 1rem; + border-radius: 0; } + .progress.primary .progress-meter { + background-color: #2199e8; } + .progress.secondary .progress-meter { + background-color: #777; } + .progress.success .progress-meter { + background-color: #3adb76; } + .progress.warning .progress-meter { + background-color: #ffae00; } + .progress.alert .progress-meter { + background-color: #ec5840; } + +.progress-meter { + position: relative; + display: block; + width: 0%; + height: 100%; + background-color: #2199e8; } + +.progress-meter-text { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + position: absolute; + margin: 0; + font-size: 0.75rem; + font-weight: bold; + color: #fefefe; + white-space: nowrap; } + +.slider { + position: relative; + height: 0.5rem; + margin-top: 1.25rem; + margin-bottom: 2.25rem; + background-color: #e6e6e6; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -ms-touch-action: none; + touch-action: none; } + +.slider-fill { + position: absolute; + top: 0; + left: 0; + display: inline-block; + max-width: 100%; + height: 0.5rem; + background-color: #cacaca; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; } + .slider-fill.is-dragging { + -webkit-transition: all 0s linear; + transition: all 0s linear; } + +.slider-handle { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + position: absolute; + left: 0; + z-index: 1; + display: inline-block; + width: 1.4rem; + height: 1.4rem; + background-color: #2199e8; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + -ms-touch-action: manipulation; + touch-action: manipulation; + border-radius: 0; } + [data-whatinput='mouse'] .slider-handle { + outline: 0; } + .slider-handle:hover { + background-color: #1583cc; } + .slider-handle.is-dragging { + -webkit-transition: all 0s linear; + transition: all 0s linear; } + +.slider.disabled, +.slider[disabled] { + opacity: 0.25; + cursor: not-allowed; } + +.slider.vertical { + display: inline-block; + width: 0.5rem; + height: 12.5rem; + margin: 0 1.25rem; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); } + .slider.vertical .slider-fill { + top: 0; + width: 0.5rem; + max-height: 100%; } + .slider.vertical .slider-handle { + position: absolute; + top: 0; + left: 50%; + width: 1.4rem; + height: 1.4rem; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); } + +.sticky-container { + position: relative; } + +.sticky { + position: absolute; + z-index: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.sticky.is-stuck { + position: fixed; + z-index: 5; } + .sticky.is-stuck.is-at-top { + top: 0; } + .sticky.is-stuck.is-at-bottom { + bottom: 0; } + +.sticky.is-anchored { + position: absolute; + left: auto; + right: auto; } + .sticky.is-anchored.is-at-bottom { + bottom: 0; } + +body.is-reveal-open { + overflow: hidden; } + +html.is-reveal-open, +html.is-reveal-open body { + height: 100%; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.reveal-overlay { + display: none; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1005; + background-color: rgba(10, 10, 10, 0.45); + overflow-y: scroll; } + +.reveal { + display: none; + z-index: 1006; + padding: 1rem; + border: 1px solid #cacaca; + background-color: #fefefe; + border-radius: 0; + position: relative; + top: 100px; + margin-left: auto; + margin-right: auto; + overflow-y: auto; } + [data-whatinput='mouse'] .reveal { + outline: 0; } + @media screen and (min-width: 40em) { + .reveal { + min-height: 0; } } + .reveal .column, .reveal .columns, + .reveal .columns { + min-width: 0; } + .reveal > :last-child { + margin-bottom: 0; } + @media screen and (min-width: 40em) { + .reveal { + width: 600px; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal .reveal { + left: auto; + right: auto; + margin: 0 auto; } } + .reveal.collapse { + padding: 0; } + @media screen and (min-width: 40em) { + .reveal.tiny { + width: 30%; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal.small { + width: 50%; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal.large { + width: 90%; + max-width: 75rem; } } + .reveal.full { + top: 0; + left: 0; + width: 100%; + height: 100%; + height: 100vh; + min-height: 100vh; + max-width: none; + margin-left: 0; + border: 0; + border-radius: 0; } + @media screen and (max-width: 39.9375em) { + .reveal { + top: 0; + left: 0; + width: 100%; + height: 100%; + height: 100vh; + min-height: 100vh; + max-width: none; + margin-left: 0; + border: 0; + border-radius: 0; } } + .reveal.without-overlay { + position: fixed; } + +.switch { + margin-bottom: 1rem; + outline: 0; + position: relative; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #fefefe; + font-weight: bold; + font-size: 0.875rem; } + +.switch-input { + opacity: 0; + position: absolute; } + +.switch-paddle { + background: #cacaca; + cursor: pointer; + display: block; + position: relative; + width: 4rem; + height: 2rem; + -webkit-transition: all 0.25s ease-out; + transition: all 0.25s ease-out; + border-radius: 0; + color: inherit; + font-weight: inherit; } + input + .switch-paddle { + margin: 0; } + .switch-paddle::after { + background: #fefefe; + content: ''; + display: block; + position: absolute; + height: 1.5rem; + left: 0.25rem; + top: 0.25rem; + width: 1.5rem; + -webkit-transition: all 0.25s ease-out; + transition: all 0.25s ease-out; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + border-radius: 0; } + input:checked ~ .switch-paddle { + background: #2199e8; } + input:checked ~ .switch-paddle::after { + left: 2.25rem; } + [data-whatinput='mouse'] input:focus ~ .switch-paddle { + outline: 0; } + +.switch-active, .switch-inactive { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + +.switch-active { + left: 8%; + display: none; } + input:checked + label > .switch-active { + display: block; } + +.switch-inactive { + right: 15%; } + input:checked + label > .switch-inactive { + display: none; } + +.switch.tiny .switch-paddle { + width: 3rem; + height: 1.5rem; + font-size: 0.625rem; } + +.switch.tiny .switch-paddle::after { + width: 1rem; + height: 1rem; } + +.switch.tiny input:checked ~ .switch-paddle::after { + left: 1.75rem; } + +.switch.small .switch-paddle { + width: 3.5rem; + height: 1.75rem; + font-size: 0.75rem; } + +.switch.small .switch-paddle::after { + width: 1.25rem; + height: 1.25rem; } + +.switch.small input:checked ~ .switch-paddle::after { + left: 2rem; } + +.switch.large .switch-paddle { + width: 5rem; + height: 2.5rem; + font-size: 1rem; } + +.switch.large .switch-paddle::after { + width: 2rem; + height: 2rem; } + +.switch.large input:checked ~ .switch-paddle::after { + left: 2.75rem; } + +table { + width: 100%; + margin-bottom: 1rem; + border-radius: 0; } + table thead, + table tbody, + table tfoot { + border: 1px solid #f1f1f1; + background-color: #fefefe; } + table caption { + font-weight: bold; + padding: 0.5rem 0.625rem 0.625rem; } + table thead, + table tfoot { + background: #f8f8f8; + color: #0a0a0a; } + table thead tr, + table tfoot tr { + background: transparent; } + table thead th, + table thead td, + table tfoot th, + table tfoot td { + padding: 0.5rem 0.625rem 0.625rem; + font-weight: bold; + text-align: left; } + table tbody tr:nth-child(even) { + background-color: #f1f1f1; } + table tbody th, + table tbody td { + padding: 0.5rem 0.625rem 0.625rem; } + +@media screen and (max-width: 63.9375em) { + table.stack thead { + display: none; } + table.stack tfoot { + display: none; } + table.stack tr, + table.stack th, + table.stack td { + display: block; } + table.stack td { + border-top: 0; } } + +table.scroll { + display: block; + width: 100%; + overflow-x: auto; } + +table.hover tr:hover { + background-color: #f9f9f9; } + +table.hover tr:nth-of-type(even):hover { + background-color: #ececec; } + +.table-scroll { + overflow-x: auto; } + .table-scroll table { + width: auto; } + +.tabs { + margin: 0; + list-style-type: none; + background: #fefefe; + border: 1px solid #e6e6e6; } + .tabs::before, .tabs::after { + content: ' '; + display: table; + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; } + .tabs::after { + clear: both; } + +.tabs.vertical > li { + width: auto; + float: none; + display: block; } + +.tabs.simple > li > a { + padding: 0; } + .tabs.simple > li > a:hover { + background: transparent; } + +.tabs.primary { + background: #2199e8; } + .tabs.primary > li > a { + color: #fefefe; } + .tabs.primary > li > a:hover, .tabs.primary > li > a:focus { + background: #1893e4; } + +.tabs-title { + float: left; } + .tabs-title > a { + display: block; + padding: 1.25rem 1.5rem; + line-height: 1; + font-size: 0.75rem; } + .tabs-title > a:hover { + background: #fefefe; } + .tabs-title > a:focus, .tabs-title > a[aria-selected='true'] { + background: #e6e6e6; } + +.tabs-content { + background: #fefefe; + -webkit-transition: all 0.5s ease; + transition: all 0.5s ease; + border: 1px solid #e6e6e6; + border-top: 0; } + +.tabs-content.vertical { + border: 1px solid #e6e6e6; + border-left: 0; } + +.tabs-panel { + display: none; + padding: 1rem; } + .tabs-panel.is-active { + display: block; } + +.thumbnail { + border: solid 4px #fefefe; + -webkit-box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2); + box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2); + display: inline-block; + line-height: 0; + max-width: 100%; + -webkit-transition: -webkit-box-shadow 200ms ease-out; + transition: box-shadow 200ms ease-out; + border-radius: 0; + margin-bottom: 1rem; } + .thumbnail:hover, .thumbnail:focus { + -webkit-box-shadow: 0 0 6px 1px rgba(33, 153, 232, 0.5); + box-shadow: 0 0 6px 1px rgba(33, 153, 232, 0.5); } + +.title-bar { + background: #0a0a0a; + color: #fefefe; + padding: 0.5rem; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; } + .title-bar .menu-icon { + margin-left: 0.25rem; + margin-right: 0.25rem; } + +.title-bar-left, +.title-bar-right { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0px; + -ms-flex: 1 1 0px; + flex: 1 1 0px; } + +.title-bar-right { + text-align: right; } + +.title-bar-title { + font-weight: bold; + vertical-align: middle; + display: inline-block; } + +.menu-icon.dark { + position: relative; + display: inline-block; + vertical-align: middle; + cursor: pointer; + width: 20px; + height: 16px; } + .menu-icon.dark::after { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 2px; + background: #0a0a0a; + top: 0; + left: 0; + -webkit-box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; + box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; } + .menu-icon.dark:hover::after { + background: #8a8a8a; + -webkit-box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; + box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; } + +.has-tip { + border-bottom: dotted 1px #8a8a8a; + font-weight: bold; + position: relative; + display: inline-block; + cursor: help; } + +.tooltip { + background-color: #0a0a0a; + color: #fefefe; + font-size: 80%; + padding: 0.75rem; + position: absolute; + z-index: 10; + top: calc(100% + 0.6495rem); + max-width: 10rem !important; + border-radius: 0; } + .tooltip::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent transparent #0a0a0a; + border-bottom-style: solid; + border-top-width: 0; + bottom: 100%; + position: absolute; + left: 50%; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); } + .tooltip.top::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: #0a0a0a transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + top: 100%; + bottom: auto; } + .tooltip.left::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent transparent transparent #0a0a0a; + border-left-style: solid; + border-right-width: 0; + bottom: auto; + left: 100%; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + .tooltip.right::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent #0a0a0a transparent transparent; + border-right-style: solid; + border-left-width: 0; + bottom: auto; + left: auto; + right: 100%; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + +.top-bar { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + padding: 0.5rem; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .top-bar, + .top-bar ul { + background-color: #e6e6e6; } + .top-bar input { + max-width: 200px; + margin-right: 1rem; } + .top-bar .input-group-field { + width: 100%; + margin-right: 0; } + .top-bar input.button { + width: auto; } + .top-bar .top-bar-left, + .top-bar .top-bar-right { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + @media screen and (min-width: 40em) { + .top-bar { + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + .top-bar .top-bar-left, + .top-bar .top-bar-right { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0px; + -ms-flex: 1 1 0px; + flex: 1 1 0px; } } + @media screen and (max-width: 63.9375em) { + .top-bar.stacked-for-medium { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .top-bar.stacked-for-medium .top-bar-left, + .top-bar.stacked-for-medium .top-bar-right { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } } + @media screen and (max-width: 74.9375em) { + .top-bar.stacked-for-large { + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + .top-bar.stacked-for-large .top-bar-left, + .top-bar.stacked-for-large .top-bar-right { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } } + +.top-bar-title { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-right: 1rem; } + +.top-bar-left, +.top-bar-right { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + +.hide { + display: none !important; } + +.invisible { + visibility: hidden; } + +@media screen and (max-width: 39.9375em) { + .hide-for-small-only { + display: none !important; } } + +@media screen and (max-width: 0em), screen and (min-width: 40em) { + .show-for-small-only { + display: none !important; } } + +@media screen and (min-width: 40em) { + .hide-for-medium { + display: none !important; } } + +@media screen and (max-width: 39.9375em) { + .show-for-medium { + display: none !important; } } + +@media screen and (min-width: 40em) and (max-width: 63.9375em) { + .hide-for-medium-only { + display: none !important; } } + +@media screen and (max-width: 39.9375em), screen and (min-width: 64em) { + .show-for-medium-only { + display: none !important; } } + +@media screen and (min-width: 64em) { + .hide-for-large { + display: none !important; } } + +@media screen and (max-width: 63.9375em) { + .show-for-large { + display: none !important; } } + +@media screen and (min-width: 64em) and (max-width: 74.9375em) { + .hide-for-large-only { + display: none !important; } } + +@media screen and (max-width: 63.9375em), screen and (min-width: 75em) { + .show-for-large-only { + display: none !important; } } + +.show-for-sr, +.show-on-focus { + position: absolute !important; + width: 1px; + height: 1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); } + +.show-on-focus:active, .show-on-focus:focus { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + +.show-for-landscape, +.hide-for-portrait { + display: block !important; } + @media screen and (orientation: landscape) { + .show-for-landscape, + .hide-for-portrait { + display: block !important; } } + @media screen and (orientation: portrait) { + .show-for-landscape, + .hide-for-portrait { + display: none !important; } } + +.hide-for-landscape, +.show-for-portrait { + display: none !important; } + @media screen and (orientation: landscape) { + .hide-for-landscape, + .show-for-portrait { + display: none !important; } } + @media screen and (orientation: portrait) { + .hide-for-landscape, + .show-for-portrait { + display: block !important; } } + +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.float-center { + display: block; + margin-left: auto; + margin-right: auto; } + +.clearfix::before, .clearfix::after { + content: ' '; + display: table; + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; } + +.clearfix::after { + clear: both; } + +.align-right { + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; } + +.align-center { + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; } + +.align-justify { + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; } + +.align-spaced { + -webkit-justify-content: space-around; + -ms-flex-pack: distribute; + justify-content: space-around; } + +.align-top { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; } + +.align-self-top { + -webkit-align-self: flex-start; + -ms-flex-item-align: start; + align-self: flex-start; } + +.align-bottom { + -webkit-box-align: end; + -webkit-align-items: flex-end; + -ms-flex-align: end; + align-items: flex-end; } + +.align-self-bottom { + -webkit-align-self: flex-end; + -ms-flex-item-align: end; + align-self: flex-end; } + +.align-middle { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; } + +.align-self-middle { + -webkit-align-self: center; + -ms-flex-item-align: center; + align-self: center; } + +.align-stretch { + -webkit-box-align: stretch; + -webkit-align-items: stretch; + -ms-flex-align: stretch; + align-items: stretch; } + +.align-self-stretch { + -webkit-align-self: stretch; + -ms-flex-item-align: stretch; + align-self: stretch; } + +.small-order-1 { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; } + +.small-order-2 { + -webkit-box-ordinal-group: 3; + -webkit-order: 2; + -ms-flex-order: 2; + order: 2; } + +.small-order-3 { + -webkit-box-ordinal-group: 4; + -webkit-order: 3; + -ms-flex-order: 3; + order: 3; } + +.small-order-4 { + -webkit-box-ordinal-group: 5; + -webkit-order: 4; + -ms-flex-order: 4; + order: 4; } + +.small-order-5 { + -webkit-box-ordinal-group: 6; + -webkit-order: 5; + -ms-flex-order: 5; + order: 5; } + +.small-order-6 { + -webkit-box-ordinal-group: 7; + -webkit-order: 6; + -ms-flex-order: 6; + order: 6; } + +@media screen and (min-width: 40em) { + .medium-order-1 { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; } + .medium-order-2 { + -webkit-box-ordinal-group: 3; + -webkit-order: 2; + -ms-flex-order: 2; + order: 2; } + .medium-order-3 { + -webkit-box-ordinal-group: 4; + -webkit-order: 3; + -ms-flex-order: 3; + order: 3; } + .medium-order-4 { + -webkit-box-ordinal-group: 5; + -webkit-order: 4; + -ms-flex-order: 4; + order: 4; } + .medium-order-5 { + -webkit-box-ordinal-group: 6; + -webkit-order: 5; + -ms-flex-order: 5; + order: 5; } + .medium-order-6 { + -webkit-box-ordinal-group: 7; + -webkit-order: 6; + -ms-flex-order: 6; + order: 6; } } + +@media screen and (min-width: 64em) { + .large-order-1 { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; } + .large-order-2 { + -webkit-box-ordinal-group: 3; + -webkit-order: 2; + -ms-flex-order: 2; + order: 2; } + .large-order-3 { + -webkit-box-ordinal-group: 4; + -webkit-order: 3; + -ms-flex-order: 3; + order: 3; } + .large-order-4 { + -webkit-box-ordinal-group: 5; + -webkit-order: 4; + -ms-flex-order: 4; + order: 4; } + .large-order-5 { + -webkit-box-ordinal-group: 6; + -webkit-order: 5; + -ms-flex-order: 5; + order: 5; } + .large-order-6 { + -webkit-box-ordinal-group: 7; + -webkit-order: 6; + -ms-flex-order: 6; + order: 6; } } + +/*# sourceMappingURL=foundation-flex.css.map */ diff --git a/libraries/foundation-6/dist/foundation-flex.min.css b/libraries/foundation-6/dist/foundation-flex.min.css new file mode 100755 index 00000000..bf55c8c8 --- /dev/null +++ b/libraries/foundation-6/dist/foundation-flex.min.css @@ -0,0 +1,2 @@ +@charset "UTF-8"; +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:not-allowed}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{font-size:100%;box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{padding:0;margin:0;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;line-height:1.5;color:#0a0a0a;background:#fefefe;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{max-width:100%;height:auto;-ms-interpolation-mode:bicubic;display:inline-block;vertical-align:middle}textarea{height:auto;min-height:50px;border-radius:0}select{width:100%;border-radius:0}#map_canvas embed,#map_canvas img,#map_canvas object,.map_canvas embed,.map_canvas img,.map_canvas object,.mqa-display embed,.mqa-display img,.mqa-display object{max-width:none!important}button{-webkit-appearance:none;-moz-appearance:none;background:transparent;padding:0;border:0;border-radius:0;line-height:1}[data-whatinput=mouse] button{outline:0}.is-visible{display:block!important}.is-hidden{display:none!important}.row{max-width:75rem;margin-left:auto;margin-right:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.row .row{max-width:none;margin-left:-.625rem;margin-right:-.625rem}@media screen and (min-width:40em){.row .row{margin-left:-.9375rem;margin-right:-.9375rem}}.row.expanded{max-width:none}.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0}.column,.columns{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;padding-left:.625rem;padding-right:.625rem;min-width:initial}@media screen and (min-width:40em){.column,.columns{padding-left:.9375rem;padding-right:.9375rem}}.column.row.row,.row.row.columns{float:none;display:block}.row .column.row.row,.row .row.row.columns{padding-left:0;padding-right:0;margin-left:0;margin-right:0}.small-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.small-offset-0{margin-left:0}.small-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.small-offset-1{margin-left:8.33333%}.small-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.small-offset-2{margin-left:16.66667%}.small-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.small-offset-3{margin-left:25%}.small-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.small-offset-4{margin-left:33.33333%}.small-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.small-offset-5{margin-left:41.66667%}.small-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.small-offset-6{margin-left:50%}.small-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.small-offset-7{margin-left:58.33333%}.small-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.small-offset-8{margin-left:66.66667%}.small-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.small-offset-9{margin-left:75%}.small-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.small-offset-10{margin-left:83.33333%}.small-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.small-offset-11{margin-left:91.66667%}.small-up-1{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.small-up-1>.column,.small-up-1>.columns{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.small-up-2{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.small-up-2>.column,.small-up-2>.columns{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.small-up-3{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.small-up-3>.column,.small-up-3>.columns{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.small-up-4{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.small-up-4>.column,.small-up-4>.columns{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.small-up-5{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.small-up-5>.column,.small-up-5>.columns{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.small-up-6{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.small-up-6>.column,.small-up-6>.columns{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.small-up-7{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.small-up-7>.column,.small-up-7>.columns{-webkit-box-flex:0;-webkit-flex:0 0 14.28571%;-ms-flex:0 0 14.28571%;flex:0 0 14.28571%;max-width:14.28571%}.small-up-8{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.small-up-8>.column,.small-up-8>.columns{-webkit-box-flex:0;-webkit-flex:0 0 12.5%;-ms-flex:0 0 12.5%;flex:0 0 12.5%;max-width:12.5%}.small-collapse>.column,.small-collapse>.columns{padding-left:0;padding-right:0}.small-uncollapse>.column,.small-uncollapse>.columns{padding-left:.625rem;padding-right:.625rem}@media screen and (min-width:40em){.medium-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.medium-offset-0{margin-left:0}.medium-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.medium-offset-1{margin-left:8.33333%}.medium-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.medium-offset-2{margin-left:16.66667%}.medium-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.medium-offset-3{margin-left:25%}.medium-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.medium-offset-4{margin-left:33.33333%}.medium-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.medium-offset-5{margin-left:41.66667%}.medium-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.medium-offset-6{margin-left:50%}.medium-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.medium-offset-7{margin-left:58.33333%}.medium-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.medium-offset-8{margin-left:66.66667%}.medium-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.medium-offset-9{margin-left:75%}.medium-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.medium-offset-10{margin-left:83.33333%}.medium-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.medium-offset-11{margin-left:91.66667%}.medium-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.medium-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.medium-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.medium-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.medium-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.medium-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.medium-up-1{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.medium-up-1>.column,.medium-up-1>.columns{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.medium-up-2{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.medium-up-2>.column,.medium-up-2>.columns{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.medium-up-3{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.medium-up-3>.column,.medium-up-3>.columns{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.medium-up-4{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.medium-up-4>.column,.medium-up-4>.columns{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.medium-up-5{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.medium-up-5>.column,.medium-up-5>.columns{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.medium-up-6{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.medium-up-6>.column,.medium-up-6>.columns{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.medium-up-7{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.medium-up-7>.column,.medium-up-7>.columns{-webkit-box-flex:0;-webkit-flex:0 0 14.28571%;-ms-flex:0 0 14.28571%;flex:0 0 14.28571%;max-width:14.28571%}.medium-up-8{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.medium-up-8>.column,.medium-up-8>.columns{-webkit-box-flex:0;-webkit-flex:0 0 12.5%;-ms-flex:0 0 12.5%;flex:0 0 12.5%;max-width:12.5%}}@media screen and (min-width:40em) and (min-width:40em){.medium-expand{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}.row.medium-unstack>.column,.row.medium-unstack>.columns{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%}@media screen and (min-width:40em){.row.medium-unstack>.column,.row.medium-unstack>.columns{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}@media screen and (min-width:40em){.medium-collapse>.column,.medium-collapse>.columns{padding-left:0;padding-right:0}.medium-uncollapse>.column,.medium-uncollapse>.columns{padding-left:.9375rem;padding-right:.9375rem}}@media screen and (min-width:64em){.large-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.large-offset-0{margin-left:0}.large-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.large-offset-1{margin-left:8.33333%}.large-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.large-offset-2{margin-left:16.66667%}.large-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.large-offset-3{margin-left:25%}.large-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.large-offset-4{margin-left:33.33333%}.large-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.large-offset-5{margin-left:41.66667%}.large-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.large-offset-6{margin-left:50%}.large-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.large-offset-7{margin-left:58.33333%}.large-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.large-offset-8{margin-left:66.66667%}.large-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.large-offset-9{margin-left:75%}.large-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.large-offset-10{margin-left:83.33333%}.large-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.large-offset-11{margin-left:91.66667%}.large-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.large-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.large-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.large-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.large-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.large-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.large-up-1{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.large-up-1>.column,.large-up-1>.columns{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.large-up-2{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.large-up-2>.column,.large-up-2>.columns{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.large-up-3{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.large-up-3>.column,.large-up-3>.columns{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.large-up-4{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.large-up-4>.column,.large-up-4>.columns{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.large-up-5{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.large-up-5>.column,.large-up-5>.columns{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.large-up-6{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.large-up-6>.column,.large-up-6>.columns{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.large-up-7{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.large-up-7>.column,.large-up-7>.columns{-webkit-box-flex:0;-webkit-flex:0 0 14.28571%;-ms-flex:0 0 14.28571%;flex:0 0 14.28571%;max-width:14.28571%}.large-up-8{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.large-up-8>.column,.large-up-8>.columns{-webkit-box-flex:0;-webkit-flex:0 0 12.5%;-ms-flex:0 0 12.5%;flex:0 0 12.5%;max-width:12.5%}}@media screen and (min-width:64em) and (min-width:64em){.large-expand{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}.row.large-unstack>.column,.row.large-unstack>.columns{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%}@media screen and (min-width:64em){.row.large-unstack>.column,.row.large-unstack>.columns{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}@media screen and (min-width:64em){.large-collapse>.column,.large-collapse>.columns{padding-left:0;padding-right:0}.large-uncollapse>.column,.large-uncollapse>.columns{padding-left:.9375rem;padding-right:.9375rem}}.shrink{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;max-width:100%}.align-top.columns,.column.align-top{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start}.align-bottom.columns,.column.align-bottom{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end}.align-middle.columns,.column.align-middle{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.align-stretch.columns,.column.align-stretch{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch}blockquote,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,li,ol,p,pre,td,th,ul{margin:0;padding:0}p{font-size:inherit;line-height:1.6;margin-bottom:1rem;text-rendering:optimizeLegibility}em,i{font-style:italic}b,em,i,strong{line-height:inherit}b,strong{font-weight:700}small{font-size:80%;line-height:inherit}h1,h2,h3,h4,h5,h6{font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;font-style:normal;color:inherit;text-rendering:optimizeLegibility;margin-top:0;margin-bottom:.5rem;line-height:1.4}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#cacaca;line-height:0}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.1875rem}h4{font-size:1.125rem}h5{font-size:1.0625rem}h6{font-size:1rem}@media screen and (min-width:40em){h1{font-size:3rem}h2{font-size:2.5rem}h3{font-size:1.9375rem}h4{font-size:1.5625rem}h5{font-size:1.25rem}h6{font-size:1rem}}a{color:#2199e8;text-decoration:none;line-height:inherit;cursor:pointer}a:focus,a:hover{color:#1585cf}a img{border:0}hr{max-width:75rem;height:0;border-right:0;border-top:0;border-bottom:1px solid #cacaca;border-left:0;margin:1.25rem auto;clear:both}dl,ol,ul{line-height:1.6;margin-bottom:1rem;list-style-position:outside}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-left:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-left:1.25rem;margin-bottom:0}dl{margin-bottom:1rem}dl dt{margin-bottom:.3rem;font-weight:700}blockquote{margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #cacaca}blockquote,blockquote p{line-height:1.6;color:#8a8a8a}cite{display:block;font-size:.8125rem;color:#8a8a8a}cite:before{content:'\2014 \0020'}abbr{color:#0a0a0a;cursor:help;border-bottom:1px dotted #0a0a0a}code{font-weight:400;border:1px solid #cacaca;padding:.125rem .3125rem .0625rem}code,kbd{font-family:Consolas,Liberation Mono,Courier,monospace;color:#0a0a0a;background-color:#e6e6e6}kbd{padding:.125rem .25rem 0;margin:0}.subheader{margin-top:.2rem;margin-bottom:.5rem;font-weight:400;line-height:1.4;color:#8a8a8a}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}.no-bullet{margin-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none!important}@media print{*{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}.show-for-print{display:block!important}.hide-for-print{display:none!important}table.show-for-print{display:table!important}thead.show-for-print{display:table-header-group!important}tbody.show-for-print{display:table-row-group!important}tr.show-for-print{display:table-row!important}td.show-for-print,th.show-for-print{display:table-cell!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^='#']:after,a[href^='javascript:']:after{content:''}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}}[type=color],[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],textarea{display:block;box-sizing:border-box;width:100%;height:2.4375rem;padding:.5rem;border:1px solid #cacaca;margin:0 0 1rem;font-family:inherit;font-size:1rem;color:#0a0a0a;background-color:#fefefe;box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);border-radius:0;-webkit-transition:-webkit-box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out;-webkit-appearance:none;-moz-appearance:none}[type=color]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=datetime]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,textarea:focus{border:1px solid #8a8a8a;background-color:#fefefe;outline:none;box-shadow:0 0 5px #cacaca;-webkit-transition:-webkit-box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out}textarea{max-width:100%}textarea[rows]{height:auto}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#cacaca}input::-moz-placeholder,textarea::-moz-placeholder{color:#cacaca}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#cacaca}input::placeholder,textarea::placeholder{color:#cacaca}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type=button],[type=submit]{border-radius:0;-webkit-appearance:none;-moz-appearance:none}input[type=search]{box-sizing:border-box}[type=checkbox],[type=file],[type=radio]{margin:0 0 1rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;margin-left:.5rem;margin-right:1rem;margin-bottom:0;vertical-align:baseline}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-right:.5rem}[type=file]{width:100%}label{display:block;margin:0;font-size:.875rem;font-weight:400;line-height:1.8;color:#0a0a0a}label.middle{margin:0 0 1rem;padding:.5625rem 0}.help-text{margin-top:-.5rem;font-size:.8125rem;font-style:italic;color:#0a0a0a}.input-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;margin-bottom:1rem;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.input-group>:first-child,.input-group>:last-child>*{border-radius:0 0 0 0}.input-group-button,.input-group-field,.input-group-label{margin:0;white-space:nowrap}.input-group-label{text-align:center;padding:0 1rem;background:#e6e6e6;color:#0a0a0a;border:1px solid #cacaca;white-space:nowrap;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;width:auto;height:auto}.input-group-button{padding-top:0;padding-bottom:0;text-align:center;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.input-group-button a,.input-group-button button,.input-group-button input{margin:0}.input-group .input-group-button{display:table-cell}fieldset{border:0;padding:0;margin:0}legend{margin-bottom:.5rem;max-width:100%}.fieldset{border:1px solid #cacaca;padding:1.25rem;margin:1.125rem 0}.fieldset legend{background:#fefefe;padding:0 .1875rem;margin:0;margin-left:-.1875rem}select{height:2.4375rem;padding:.5rem;border:1px solid #cacaca;margin:0 0 1rem;font-size:1rem;font-family:inherit;line-height:normal;color:#0a0a0a;background-color:#fefefe;border-radius:0;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%28138, 138, 138%29'></polygon></svg>");background-size:9px 6px;background-position:right -1rem center;background-origin:content-box;background-repeat:no-repeat;padding-right:1.5rem}@media screen and (min-width:0\0){select{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==")}}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{height:auto;background-image:none}.is-invalid-input:not(:focus){background-color:rgba(236,88,64,.1);border-color:#ec5840}.form-error,.is-invalid-label{color:#ec5840}.form-error{display:none;margin-top:-.5rem;margin-bottom:1rem;font-size:.75rem;font-weight:700}.form-error.is-visible{display:block}.button{display:inline-block;text-align:center;line-height:1;cursor:pointer;-webkit-appearance:none;-webkit-transition:background-color .25s ease-out,color .25s ease-out;transition:background-color .25s ease-out,color .25s ease-out;vertical-align:middle;border:1px solid transparent;border-radius:0;padding:.85em 1em;margin:0 0 1rem;font-size:.9rem;background-color:#2199e8;color:#fefefe}[data-whatinput=mouse] .button{outline:0}.button:focus,.button:hover{background-color:#1583cc;color:#fefefe}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;width:100%;margin-left:0;margin-right:0}.button.primary{background-color:#2199e8;color:#fefefe}.button.primary:focus,.button.primary:hover{background-color:#147cc0;color:#fefefe}.button.secondary{background-color:#777;color:#fefefe}.button.secondary:focus,.button.secondary:hover{background-color:#5f5f5f;color:#fefefe}.button.success{background-color:#3adb76;color:#fefefe}.button.success:focus,.button.success:hover{background-color:#22bb5b;color:#fefefe}.button.warning{background-color:#ffae00;color:#fefefe}.button.warning:focus,.button.warning:hover{background-color:#cc8b00;color:#fefefe}.button.alert{background-color:#ec5840;color:#fefefe}.button.alert:focus,.button.alert:hover{background-color:#da3116;color:#fefefe}.button.hollow{border:1px solid #2199e8;color:#2199e8}.button.hollow,.button.hollow:focus,.button.hollow:hover{background-color:transparent}.button.hollow:focus,.button.hollow:hover{border-color:#0c4d78;color:#0c4d78}.button.hollow.primary{border:1px solid #2199e8;color:#2199e8}.button.hollow.primary:focus,.button.hollow.primary:hover{border-color:#0c4d78;color:#0c4d78}.button.hollow.secondary{border:1px solid #777;color:#777}.button.hollow.secondary:focus,.button.hollow.secondary:hover{border-color:#3c3c3c;color:#3c3c3c}.button.hollow.success{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:focus,.button.hollow.success:hover{border-color:#157539;color:#157539}.button.hollow.warning{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:focus,.button.hollow.warning:hover{border-color:#805700;color:#805700}.button.hollow.alert{border:1px solid #ec5840;color:#ec5840}.button.hollow.alert:focus,.button.hollow.alert:hover{border-color:#881f0e;color:#881f0e}.button.disabled,.button[disabled]{opacity:.25;cursor:not-allowed}.button.disabled:focus,.button.disabled:hover,.button[disabled]:focus,.button[disabled]:hover{background-color:#2199e8;color:#fefefe}.button.dropdown:after{content:'';display:block;width:0;height:0;border:.4em inset;border-color:#fefefe transparent transparent;border-top-style:solid;border-bottom-width:0;position:relative;top:.4em;float:right;margin-left:1em;display:inline-block}.button.arrow-only:after{margin-left:0;float:none;top:-.1em}.accordion{list-style-type:none;background:#fefefe;margin-left:0}.accordion-item:first-child>:first-child,.accordion-item:last-child>:last-child{border-radius:0 0 0 0}.accordion-title{display:block;padding:1.25rem 1rem;line-height:1;font-size:.75rem;color:#2199e8;position:relative;border:1px solid #e6e6e6;border-bottom:0}:last-child:not(.is-active)>.accordion-title{border-radius:0 0 0 0;border-bottom:1px solid #e6e6e6}.accordion-title:focus,.accordion-title:hover{background-color:#e6e6e6}.accordion-title:before{content:'+';position:absolute;right:1rem;top:50%;margin-top:-.5rem}.is-active>.accordion-title:before{content:'–'}.accordion-content{padding:1rem;display:none;border:1px solid #e6e6e6;border-bottom:0;background-color:#fefefe;color:#0a0a0a}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.is-accordion-submenu-parent>a{position:relative}.is-accordion-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:6px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;position:absolute;top:50%;margin-top:-4px;right:1rem}.is-accordion-submenu-parent[aria-expanded=true]>a:after{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:scaleY(-1);transform:scaleY(-1)}.badge{display:inline-block;padding:.3em;min-width:2.1em;font-size:.6rem;text-align:center;border-radius:50%;background:#2199e8;color:#fefefe}.badge.secondary{background:#777;color:#fefefe}.badge.success{background:#3adb76;color:#fefefe}.badge.warning{background:#ffae00;color:#fefefe}.badge.alert{background:#ec5840;color:#fefefe}.breadcrumbs{list-style:none;margin:0 0 1rem}.breadcrumbs:after,.breadcrumbs:before{content:' ';display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.breadcrumbs:after{clear:both}.breadcrumbs li{float:left;color:#0a0a0a;font-size:.6875rem;cursor:default;text-transform:uppercase}.breadcrumbs li:not(:last-child):after{color:#cacaca;content:"/";margin:0 .75rem;position:relative;top:1px;opacity:1}.breadcrumbs a{color:#2199e8}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.button-group{margin-bottom:1rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.button-group:after,.button-group:before{content:' ';display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.button-group:after{clear:both}.button-group .button{margin:0;margin-right:1px;margin-bottom:1px;font-size:.9rem;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.button-group.primary .button{background-color:#2199e8;color:#fefefe}.button-group.primary .button:focus,.button-group.primary .button:hover{background-color:#147cc0;color:#fefefe}.button-group.secondary .button{background-color:#777;color:#fefefe}.button-group.secondary .button:focus,.button-group.secondary .button:hover{background-color:#5f5f5f;color:#fefefe}.button-group.success .button{background-color:#3adb76;color:#fefefe}.button-group.success .button:focus,.button-group.success .button:hover{background-color:#22bb5b;color:#fefefe}.button-group.warning .button{background-color:#ffae00;color:#fefefe}.button-group.warning .button:focus,.button-group.warning .button:hover{background-color:#cc8b00;color:#fefefe}.button-group.alert .button{background-color:#ec5840;color:#fefefe}.button-group.alert .button:focus,.button-group.alert .button:hover{background-color:#da3116;color:#fefefe}.button-group.stacked,.button-group.stacked-for-medium,.button-group.stacked-for-small{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.button-group.stacked-for-medium .button,.button-group.stacked-for-small .button,.button-group.stacked .button{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%}.button-group.stacked-for-medium .button:last-child,.button-group.stacked-for-small .button:last-child,.button-group.stacked .button:last-child{margin-bottom:0}@media screen and (min-width:40em){.button-group.stacked-for-small .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;margin-bottom:0}}@media screen and (min-width:64em){.button-group.stacked-for-medium .button{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px;margin-bottom:0}}@media screen and (max-width:39.9375em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}.callout{margin:0 0 1rem;padding:1rem;border:1px solid hsla(0,0%,4%,.25);border-radius:0;position:relative;color:#0a0a0a;background-color:#fff}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#def0fc}.callout.secondary{background-color:#ebebeb}.callout.success{background-color:#e1faea}.callout.warning{background-color:#fff3d9}.callout.alert{background-color:#fce6e2}.callout.small{padding:.5rem}.callout.large{padding:3rem}.close-button{position:absolute;color:#8a8a8a;right:1rem;top:.5rem;font-size:2em;line-height:1;cursor:pointer}[data-whatinput=mouse] .close-button{outline:0}.close-button:focus,.close-button:hover{color:#0a0a0a}.menu{margin:0;list-style-type:none;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}[data-whatinput=mouse] .menu>li{outline:0}.menu>li>a{display:block;padding:.7rem 1rem;line-height:1}.menu a,.menu button,.menu input{margin-bottom:0}.menu>li>a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row}.menu>li>a i,.menu>li>a img,.menu>li>a svg{margin-right:.25rem}.menu>li{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.menu.vertical{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.menu.vertical>li{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.menu.vertical>li>a{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}@media screen and (min-width:40em){.menu.medium-horizontal{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.menu.medium-horizontal>li{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.menu.medium-vertical{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.menu.medium-vertical>li{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.menu.medium-vertical>li>a{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}}@media screen and (min-width:64em){.menu.large-horizontal{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.menu.large-horizontal>li{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.menu.large-vertical{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.menu.large-vertical>li{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.menu.large-vertical>li>a{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}}.menu.simple li{line-height:1;display:inline-block;margin-right:1rem}.menu.simple a{padding:0}.menu.align-right{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.menu.expanded>li{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.menu.expanded>li:first-child:last-child{width:100%}.menu.icon-top>li>a{-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column}.menu.icon-top>li>a i,.menu.icon-top>li>a img,.menu.icon-top>li>a svg{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;text-align:center;margin-bottom:.25rem}.menu.nested{margin-left:1rem}.menu .active>a{color:#fefefe;background:#2199e8}.menu-text{font-weight:700;color:inherit;line-height:1;padding-top:0;padding-bottom:0;padding:.7rem 1rem}.menu-centered{text-align:center}.menu-centered>.menu{display:inline-block}.no-js [data-responsive-menu] ul{display:none}.menu-icon{position:relative;display:inline-block;vertical-align:middle;cursor:pointer;width:20px;height:16px}.menu-icon:after{content:'';position:absolute;display:block;width:100%;height:2px;background:#fefefe;top:0;left:0;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe}.menu-icon:hover:after{background:#cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.is-drilldown{position:relative;overflow:hidden}.is-drilldown li{display:block!important}.is-drilldown-submenu{position:absolute;top:0;left:100%;z-index:-1;height:100%;width:100%;background:#fefefe;-webkit-transition:-webkit-transform .15s linear;transition:transform .15s linear}.is-drilldown-submenu.is-active{z-index:1;display:block;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.is-drilldown-submenu.is-closing{-webkit-transform:translateX(100%);transform:translateX(100%)}.is-drilldown-submenu-parent>a{position:relative}.is-drilldown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:6px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0;position:absolute;top:50%;margin-top:-6px;right:1rem}.js-drilldown-back>a:before{content:'';display:block;width:0;height:0;border:6px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0;display:inline-block;vertical-align:middle;margin-right:.75rem}.dropdown-pane{background-color:#fefefe;border:1px solid #cacaca;border-radius:0;display:block;font-size:1rem;padding:1rem;position:absolute;visibility:hidden;width:300px;z-index:10}.dropdown-pane.is-open{visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.dropdown.menu>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}[data-whatinput=mouse] .dropdown.menu a{outline:0}.no-js .dropdown.menu ul{display:none}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.vertical>li>a:after{right:14px;margin-top:-3px}.dropdown.menu.vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}@media screen and (min-width:40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.medium-vertical>li>a:after{right:14px;margin-top:-3px}.dropdown.menu.medium-vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.medium-vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}}@media screen and (min-width:64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.large-vertical>li>a:after{right:14px;margin-top:-3px}.dropdown.menu.large-vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.large-vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{top:100%;left:auto;right:0}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a:after{position:absolute;top:50%;right:5px;margin-top:-2px}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{top:100%;left:auto}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{left:auto;right:100%}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{right:auto;left:100%}.is-dropdown-submenu{display:none;position:absolute;top:0;left:100%;min-width:200px;z-index:1;background:#fefefe;border:1px solid #cacaca}.is-dropdown-submenu .is-dropdown-submenu-parent>a:after{right:14px;margin-top:-3px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.flex-video{position:relative;height:0;padding-bottom:75%;margin-bottom:1rem;overflow:hidden}.flex-video embed,.flex-video iframe,.flex-video object,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}.flex-video.widescreen{padding-bottom:56.25%}.flex-video.vimeo{padding-top:0}.label{display:inline-block;padding:.33333rem .5rem;font-size:.8rem;line-height:1;white-space:nowrap;cursor:default;border-radius:0;background:#2199e8;color:#fefefe}.label.secondary{background:#777;color:#fefefe}.label.success{background:#3adb76;color:#fefefe}.label.warning{background:#ffae00;color:#fefefe}.label.alert{background:#ec5840;color:#fefefe}.media-object{margin-bottom:1rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.media-object img{max-width:none}@media screen and (max-width:39.9375em){.media-object.stack-for-small{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}@media screen and (max-width:39.9375em){.media-object.stack-for-small .media-object-section{padding:0;padding-bottom:1rem;-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.media-object.stack-for-small .media-object-section img{width:100%}}.media-object-section{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}.media-object-section.main-section{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}body,html{height:100%}.off-canvas-wrapper{width:100%;overflow-x:hidden;position:relative;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-overflow-scrolling:auto}.off-canvas-wrapper-inner{position:relative;width:100%;-webkit-transition:-webkit-transform .5s ease;transition:transform .5s ease}.off-canvas-wrapper-inner:after,.off-canvas-wrapper-inner:before{content:' ';display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.off-canvas-wrapper-inner:after{clear:both}.off-canvas-content{min-height:100%;background:#fefefe;-webkit-transition:-webkit-transform .5s ease;transition:transform .5s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;padding-bottom:.1px;box-shadow:0 0 10px hsla(0,0%,4%,.5)}.js-off-canvas-exit{display:none;position:absolute;top:0;left:0;width:100%;height:100%;background:hsla(0,0%,100%,.25);cursor:pointer;-webkit-transition:background .5s ease;transition:background .5s ease}.off-canvas{position:absolute;background:#e6e6e6;z-index:-1;max-height:100%;overflow-y:auto;-webkit-transform:translateX(0);transform:translateX(0)}[data-whatinput=mouse] .off-canvas{outline:0}.off-canvas.position-left{left:-250px;top:0;width:250px}.is-open-left{-webkit-transform:translateX(250px);transform:translateX(250px)}.off-canvas.position-right{right:-250px;top:0;width:250px}.is-open-right{-webkit-transform:translateX(-250px);transform:translateX(-250px)}@media screen and (min-width:40em){.position-left.reveal-for-medium{left:0;z-index:auto;position:fixed}.position-left.reveal-for-medium~.off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{right:0;z-index:auto;position:fixed}.position-right.reveal-for-medium~.off-canvas-content{margin-right:250px}}@media screen and (min-width:64em){.position-left.reveal-for-large{left:0;z-index:auto;position:fixed}.position-left.reveal-for-large~.off-canvas-content{margin-left:250px}.position-right.reveal-for-large{right:0;z-index:auto;position:fixed}.position-right.reveal-for-large~.off-canvas-content{margin-right:250px}}.orbit,.orbit-container{position:relative}.orbit-container{margin:0;overflow:hidden;list-style:none}.orbit-slide{width:100%;max-height:100%}.orbit-slide.no-motionui.is-active{top:0;left:0}.orbit-figure{margin:0}.orbit-image{margin:0;width:100%;max-width:100%}.orbit-caption{bottom:0;width:100%;margin-bottom:0;background-color:hsla(0,0%,4%,.5)}.orbit-caption,.orbit-next,.orbit-previous{position:absolute;padding:1rem;color:#fefefe}.orbit-next,.orbit-previous{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:10}[data-whatinput=mouse] .orbit-next,[data-whatinput=mouse] .orbit-previous{outline:0}.orbit-next:active,.orbit-next:focus,.orbit-next:hover,.orbit-previous:active,.orbit-previous:focus,.orbit-previous:hover{background-color:hsla(0,0%,4%,.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{position:relative;margin-top:.8rem;margin-bottom:.8rem;text-align:center}[data-whatinput=mouse] .orbit-bullets{outline:0}.orbit-bullets button{width:1.2rem;height:1.2rem;margin:.1rem;background-color:#cacaca;border-radius:50%}.orbit-bullets button.is-active,.orbit-bullets button:hover{background-color:#8a8a8a}.pagination{margin-left:0;margin-bottom:1rem}.pagination:after,.pagination:before{content:' ';display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.pagination:after{clear:both}.pagination li{font-size:.875rem;margin-right:.0625rem;border-radius:0;display:none}.pagination li:first-child,.pagination li:last-child{display:inline-block}@media screen and (min-width:40em){.pagination li{display:inline-block}}.pagination a,.pagination button{color:#0a0a0a;display:block;padding:.1875rem .625rem;border-radius:0}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{padding:.1875rem .625rem;background:#2199e8;color:#fefefe;cursor:default}.pagination .disabled{padding:.1875rem .625rem;color:#cacaca;cursor:not-allowed}.pagination .disabled:hover{background:transparent}.pagination .ellipsis:after{content:'\2026';padding:.1875rem .625rem;color:#0a0a0a}.pagination-previous.disabled:before,.pagination-previous a:before{content:'\00ab';display:inline-block;margin-right:.5rem}.pagination-next.disabled:after,.pagination-next a:after{content:'\00bb';display:inline-block;margin-left:.5rem}.progress{background-color:#cacaca;height:1rem;margin-bottom:1rem;border-radius:0}.progress.primary .progress-meter{background-color:#2199e8}.progress.secondary .progress-meter{background-color:#777}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#ec5840}.progress-meter{position:relative;display:block;width:0;height:100%;background-color:#2199e8}.progress-meter-text{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;margin:0;font-size:.75rem;font-weight:700;color:#fefefe;white-space:nowrap}.slider{position:relative;height:.5rem;margin-top:1.25rem;margin-bottom:2.25rem;background-color:#e6e6e6;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:none;touch-action:none}.slider-fill{position:absolute;top:0;left:0;display:inline-block;max-width:100%;height:.5rem;background-color:#cacaca;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.slider-fill.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider-handle{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);position:absolute;left:0;z-index:1;display:inline-block;width:1.4rem;height:1.4rem;background-color:#2199e8;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;-ms-touch-action:manipulation;touch-action:manipulation;border-radius:0}[data-whatinput=mouse] .slider-handle{outline:0}.slider-handle:hover{background-color:#1583cc}.slider-handle.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider.disabled,.slider[disabled]{opacity:.25;cursor:not-allowed}.slider.vertical{display:inline-block;width:.5rem;height:12.5rem;margin:0 1.25rem;-webkit-transform:scaleY(-1);transform:scaleY(-1)}.slider.vertical .slider-fill{top:0;width:.5rem;max-height:100%}.slider.vertical .slider-handle{position:absolute;top:0;left:50%;width:1.4rem;height:1.4rem;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.sticky-container{position:relative}.sticky{position:absolute;z-index:0;-webkit-transform:translateZ(0);transform:translateZ(0)}.sticky.is-stuck{position:fixed;z-index:5}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{position:absolute;left:auto;right:auto}.sticky.is-anchored.is-at-bottom{bottom:0}body.is-reveal-open{overflow:hidden}html.is-reveal-open,html.is-reveal-open body{height:100%;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reveal-overlay{display:none;position:fixed;top:0;bottom:0;left:0;right:0;z-index:1005;background-color:hsla(0,0%,4%,.45);overflow-y:scroll}.reveal{display:none;z-index:1006;padding:1rem;border:1px solid #cacaca;background-color:#fefefe;border-radius:0;position:relative;top:100px;margin-left:auto;margin-right:auto;overflow-y:auto}[data-whatinput=mouse] .reveal{outline:0}@media screen and (min-width:40em){.reveal{min-height:0}}.reveal .column,.reveal .columns{min-width:0}.reveal>:last-child{margin-bottom:0}@media screen and (min-width:40em){.reveal{width:600px;max-width:75rem}}@media screen and (min-width:40em){.reveal .reveal{left:auto;right:auto;margin:0 auto}}.reveal.collapse{padding:0}@media screen and (min-width:40em){.reveal.tiny{width:30%;max-width:75rem}}@media screen and (min-width:40em){.reveal.small{width:50%;max-width:75rem}}@media screen and (min-width:40em){.reveal.large{width:90%;max-width:75rem}}.reveal.full{top:0;left:0;width:100%;height:100%;height:100vh;min-height:100vh;max-width:none;margin-left:0;border:0;border-radius:0}@media screen and (max-width:39.9375em){.reveal{top:0;left:0;width:100%;height:100%;height:100vh;min-height:100vh;max-width:none;margin-left:0;border:0;border-radius:0}}.reveal.without-overlay{position:fixed}.switch{margin-bottom:1rem;outline:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#fefefe;font-weight:700;font-size:.875rem}.switch-input{opacity:0;position:absolute}.switch-paddle{background:#cacaca;cursor:pointer;display:block;position:relative;width:4rem;height:2rem;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;border-radius:0;color:inherit;font-weight:inherit}input+.switch-paddle{margin:0}.switch-paddle:after{background:#fefefe;content:'';display:block;position:absolute;height:1.5rem;left:.25rem;top:.25rem;width:1.5rem;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;-webkit-transform:translateZ(0);transform:translateZ(0);border-radius:0}input:checked~.switch-paddle{background:#2199e8}input:checked~.switch-paddle:after{left:2.25rem}[data-whatinput=mouse] input:focus~.switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.switch-active{left:8%;display:none}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny .switch-paddle{width:3rem;height:1.5rem;font-size:.625rem}.switch.tiny .switch-paddle:after{width:1rem;height:1rem}.switch.tiny input:checked~.switch-paddle:after{left:1.75rem}.switch.small .switch-paddle{width:3.5rem;height:1.75rem;font-size:.75rem}.switch.small .switch-paddle:after{width:1.25rem;height:1.25rem}.switch.small input:checked~.switch-paddle:after{left:2rem}.switch.large .switch-paddle{width:5rem;height:2.5rem;font-size:1rem}.switch.large .switch-paddle:after{width:2rem;height:2rem}.switch.large input:checked~.switch-paddle:after{left:2.75rem}table{width:100%;margin-bottom:1rem;border-radius:0}table tbody,table tfoot,table thead{border:1px solid #f1f1f1;background-color:#fefefe}table caption{font-weight:700;padding:.5rem .625rem .625rem}table tfoot,table thead{background:#f8f8f8;color:#0a0a0a}table tfoot tr,table thead tr{background:transparent}table tfoot td,table tfoot th,table thead td,table thead th{padding:.5rem .625rem .625rem;font-weight:700;text-align:left}table tbody tr:nth-child(even){background-color:#f1f1f1}table tbody td,table tbody th{padding:.5rem .625rem .625rem}@media screen and (max-width:63.9375em){table.stack tfoot,table.stack thead{display:none}table.stack td,table.stack th,table.stack tr{display:block}table.stack td{border-top:0}}table.scroll{display:block;width:100%;overflow-x:auto}table.hover tr:hover{background-color:#f9f9f9}table.hover tr:nth-of-type(even):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.table-scroll table{width:auto}.tabs{margin:0;list-style-type:none;background:#fefefe;border:1px solid #e6e6e6}.tabs:after,.tabs:before{content:' ';display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.tabs:after{clear:both}.tabs.vertical>li{width:auto;float:none;display:block}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:transparent}.tabs.primary{background:#2199e8}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:focus,.tabs.primary>li>a:hover{background:#1893e4}.tabs-title{float:left}.tabs-title>a{display:block;padding:1.25rem 1.5rem;line-height:1;font-size:.75rem}.tabs-title>a:hover{background:#fefefe}.tabs-title>a:focus,.tabs-title>a[aria-selected=true]{background:#e6e6e6}.tabs-content{background:#fefefe;-webkit-transition:all .5s ease;transition:all .5s ease;border:1px solid #e6e6e6;border-top:0}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{border:4px solid #fefefe;box-shadow:0 0 0 1px hsla(0,0%,4%,.2);display:inline-block;line-height:0;max-width:100%;-webkit-transition:-webkit-box-shadow .2s ease-out;transition:box-shadow .2s ease-out;border-radius:0;margin-bottom:1rem}.thumbnail:focus,.thumbnail:hover{box-shadow:0 0 6px 1px rgba(33,153,232,.5)}.title-bar{background:#0a0a0a;color:#fefefe;padding:.5rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left,.title-bar-right{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}.title-bar-right{text-align:right}.title-bar-title{font-weight:700}.menu-icon.dark,.title-bar-title{vertical-align:middle;display:inline-block}.menu-icon.dark{position:relative;cursor:pointer;width:20px;height:16px}.menu-icon.dark:after{content:'';position:absolute;display:block;width:100%;height:2px;background:#0a0a0a;top:0;left:0;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a}.menu-icon.dark:hover:after{background:#8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.has-tip{border-bottom:1px dotted #8a8a8a;font-weight:700;position:relative;display:inline-block;cursor:help}.tooltip{background-color:#0a0a0a;color:#fefefe;font-size:80%;padding:.75rem;position:absolute;z-index:10;top:calc(100% + .6495rem);max-width:10rem!important;border-radius:0}.tooltip:before{border-color:transparent transparent #0a0a0a;border-bottom-style:solid;border-top-width:0;bottom:100%;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.top:before,.tooltip:before{content:'';display:block;width:0;height:0;border:.75rem inset}.tooltip.top:before{border-color:#0a0a0a transparent transparent;border-top-style:solid;border-bottom-width:0;top:100%;bottom:auto}.tooltip.left:before{border-color:transparent transparent transparent #0a0a0a;border-left-style:solid;border-right-width:0;left:100%}.tooltip.left:before,.tooltip.right:before{content:'';display:block;width:0;height:0;border:.75rem inset;bottom:auto;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.right:before{border-color:transparent #0a0a0a transparent transparent;border-right-style:solid;border-left-width:0;left:auto;right:100%}.top-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding:.5rem;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{max-width:200px;margin-right:1rem}.top-bar .input-group-field{width:100%;margin-right:0}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}@media screen and (min-width:40em){.top-bar{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.top-bar .top-bar-left,.top-bar .top-bar-right{-webkit-box-flex:1;-webkit-flex:1 1 0px;-ms-flex:1 1 0px;flex:1 1 0px}}@media screen and (max-width:63.9375em){.top-bar.stacked-for-medium{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media screen and (max-width:74.9375em){.top-bar.stacked-for-large{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}.top-bar-title{margin-right:1rem}.top-bar-left,.top-bar-right,.top-bar-title{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.hide{display:none!important}.invisible{visibility:hidden}@media screen and (max-width:39.9375em){.hide-for-small-only{display:none!important}}@media screen and (max-width:0em),screen and (min-width:40em){.show-for-small-only{display:none!important}}@media screen and (min-width:40em){.hide-for-medium{display:none!important}}@media screen and (max-width:39.9375em){.show-for-medium{display:none!important}}@media screen and (min-width:40em) and (max-width:63.9375em){.hide-for-medium-only{display:none!important}}@media screen and (max-width:39.9375em),screen and (min-width:64em){.show-for-medium-only{display:none!important}}@media screen and (min-width:64em){.hide-for-large{display:none!important}}@media screen and (max-width:63.9375em){.show-for-large{display:none!important}}@media screen and (min-width:64em) and (max-width:74.9375em){.hide-for-large-only{display:none!important}}@media screen and (max-width:63.9375em),screen and (min-width:75em){.show-for-large-only{display:none!important}}.show-for-sr,.show-on-focus{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.show-on-focus:active,.show-on-focus:focus{position:static!important;height:auto;width:auto;overflow:visible;clip:auto}.hide-for-portrait,.show-for-landscape{display:block!important}@media screen and (orientation:landscape){.hide-for-portrait,.show-for-landscape{display:block!important}}@media screen and (orientation:portrait){.hide-for-portrait,.show-for-landscape{display:none!important}}.hide-for-landscape,.show-for-portrait{display:none!important}@media screen and (orientation:landscape){.hide-for-landscape,.show-for-portrait{display:none!important}}@media screen and (orientation:portrait){.hide-for-landscape,.show-for-portrait{display:block!important}}.float-left{float:left!important}.float-right{float:right!important}.float-center{display:block;margin-left:auto;margin-right:auto}.clearfix:after,.clearfix:before{content:' ';display:table;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.clearfix:after{clear:both}.align-right{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.align-center{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.align-justify{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.align-spaced{-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around}.align-top{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.align-self-top{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start}.align-bottom{-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}.align-self-bottom{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end}.align-middle{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.align-self-middle{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.align-stretch{-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.align-self-stretch{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch}.small-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.small-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.small-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.small-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.small-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.small-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}@media screen and (min-width:40em){.medium-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.medium-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.medium-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.medium-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.medium-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.medium-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}}@media screen and (min-width:64em){.large-order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.large-order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.large-order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.large-order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.large-order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.large-order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}} \ No newline at end of file diff --git a/libraries/foundation-6/dist/foundation-rtl.css b/libraries/foundation-6/dist/foundation-rtl.css new file mode 100755 index 00000000..81c4f428 --- /dev/null +++ b/libraries/foundation-6/dist/foundation-rtl.css @@ -0,0 +1,3583 @@ +@charset "UTF-8"; +/** + * Foundation for Sites by ZURB + * Version 6.2.3 + * foundation.zurb.com + * Licensed under MIT Open Source + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS and IE text size adjust after device orientation change, + * without disabling user zoom. + */ +html { + font-family: sans-serif; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/** + * Remove default margin. + */ +body { + margin: 0; } + +/* HTML5 display definitions + ========================================================================== */ +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; } + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ +audio, +canvas, +progress, +video { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ } + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. + */ +[hidden], +template { + display: none; } + +/* Links + ========================================================================== */ +/** + * Remove the gray background color from active links in IE 10. + */ +a { + background-color: transparent; } + +/** + * Improve readability of focused elements when they are also in an + * active/hover state. + */ +a:active, +a:hover { + outline: 0; } + +/* Text-level semantics + ========================================================================== */ +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ +abbr[title] { + border-bottom: 1px dotted; } + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ +b, +strong { + font-weight: bold; } + +/** + * Address styling not present in Safari and Chrome. + */ +dfn { + font-style: italic; } + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/** + * Address styling not present in IE 8/9. + */ +mark { + background: #ff0; + color: #000; } + +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +/* Embedded content + ========================================================================== */ +/** + * Remove border when inside `a` element in IE 8/9/10. + */ +img { + border: 0; } + +/** + * Correct overflow not hidden in IE 9/10/11. + */ +svg:not(:root) { + overflow: hidden; } + +/* Grouping content + ========================================================================== */ +/** + * Address margin not present in IE 8/9 and Safari. + */ +figure { + margin: 1em 40px; } + +/** + * Address differences between Firefox and other browsers. + */ +hr { + -webkit-box-sizing: content-box; + box-sizing: content-box; + height: 0; } + +/** + * Contain overflow in all browsers. + */ +pre { + overflow: auto; } + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; } + +/* Forms + ========================================================================== */ +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ +button, +input, +optgroup, +select, +textarea { + color: inherit; + /* 1 */ + font: inherit; + /* 2 */ + margin: 0; + /* 3 */ } + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ +button { + overflow: visible; } + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ +button, +select { + text-transform: none; } + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ } + +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: not-allowed; } + +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; } + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +input { + line-height: normal; } + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + -webkit-box-sizing: content-box; + box-sizing: content-box; + /* 2 */ } + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * Define consistent border, margin, and padding. + * [NOTE] We don't enable this ruleset in Foundation, because we want the <fieldset> element to have plain styling. + */ +/* fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; + } */ +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + border: 0; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ +textarea { + overflow: auto; } + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ +optgroup { + font-weight: bold; } + +/* Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; } + +td, +th { + padding: 0; } + +.foundation-mq { + font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; } + +html { + font-size: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box; } + +*, +*::before, +*::after { + -webkit-box-sizing: inherit; + box-sizing: inherit; } + +body { + padding: 0; + margin: 0; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + line-height: 1.5; + color: #0a0a0a; + background: #fefefe; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + +img { + max-width: 100%; + height: auto; + -ms-interpolation-mode: bicubic; + display: inline-block; + vertical-align: middle; } + +textarea { + height: auto; + min-height: 50px; + border-radius: 0; } + +select { + width: 100%; + border-radius: 0; } + +#map_canvas img, +#map_canvas embed, +#map_canvas object, +.map_canvas img, +.map_canvas embed, +.map_canvas object, +.mqa-display img, +.mqa-display embed, +.mqa-display object { + max-width: none !important; } + +button { + -webkit-appearance: none; + -moz-appearance: none; + background: transparent; + padding: 0; + border: 0; + border-radius: 0; + line-height: 1; } + [data-whatinput='mouse'] button { + outline: 0; } + +.is-visible { + display: block !important; } + +.is-hidden { + display: none !important; } + +.row { + max-width: 75rem; + margin-left: auto; + margin-right: auto; } + .row::before, .row::after { + content: ' '; + display: table; } + .row::after { + clear: both; } + .row.collapse > .column, .row.collapse > .columns { + padding-left: 0; + padding-right: 0; } + .row .row { + max-width: none; + margin-left: -0.625rem; + margin-right: -0.625rem; } + @media screen and (min-width: 40em) { + .row .row { + margin-left: -0.9375rem; + margin-right: -0.9375rem; } } + .row .row.collapse { + margin-left: 0; + margin-right: 0; } + .row.expanded { + max-width: none; } + .row.expanded .row { + margin-left: auto; + margin-right: auto; } + +.column, .columns { + width: 100%; + float: right; + padding-left: 0.625rem; + padding-right: 0.625rem; } + @media screen and (min-width: 40em) { + .column, .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } } + .column:last-child:not(:first-child), .columns:last-child:not(:first-child) { + float: left; } + .column.end:last-child:last-child, .end.columns:last-child:last-child { + float: right; } + +.column.row.row, .row.row.columns { + float: none; } + .row .column.row.row, .row .row.row.columns { + padding-left: 0; + padding-right: 0; + margin-left: 0; + margin-right: 0; } + +.small-1 { + width: 8.33333%; } + +.small-push-1 { + position: relative; + right: 8.33333%; } + +.small-pull-1 { + position: relative; + right: -8.33333%; } + +.small-offset-0 { + margin-right: 0%; } + +.small-2 { + width: 16.66667%; } + +.small-push-2 { + position: relative; + right: 16.66667%; } + +.small-pull-2 { + position: relative; + right: -16.66667%; } + +.small-offset-1 { + margin-right: 8.33333%; } + +.small-3 { + width: 25%; } + +.small-push-3 { + position: relative; + right: 25%; } + +.small-pull-3 { + position: relative; + right: -25%; } + +.small-offset-2 { + margin-right: 16.66667%; } + +.small-4 { + width: 33.33333%; } + +.small-push-4 { + position: relative; + right: 33.33333%; } + +.small-pull-4 { + position: relative; + right: -33.33333%; } + +.small-offset-3 { + margin-right: 25%; } + +.small-5 { + width: 41.66667%; } + +.small-push-5 { + position: relative; + right: 41.66667%; } + +.small-pull-5 { + position: relative; + right: -41.66667%; } + +.small-offset-4 { + margin-right: 33.33333%; } + +.small-6 { + width: 50%; } + +.small-push-6 { + position: relative; + right: 50%; } + +.small-pull-6 { + position: relative; + right: -50%; } + +.small-offset-5 { + margin-right: 41.66667%; } + +.small-7 { + width: 58.33333%; } + +.small-push-7 { + position: relative; + right: 58.33333%; } + +.small-pull-7 { + position: relative; + right: -58.33333%; } + +.small-offset-6 { + margin-right: 50%; } + +.small-8 { + width: 66.66667%; } + +.small-push-8 { + position: relative; + right: 66.66667%; } + +.small-pull-8 { + position: relative; + right: -66.66667%; } + +.small-offset-7 { + margin-right: 58.33333%; } + +.small-9 { + width: 75%; } + +.small-push-9 { + position: relative; + right: 75%; } + +.small-pull-9 { + position: relative; + right: -75%; } + +.small-offset-8 { + margin-right: 66.66667%; } + +.small-10 { + width: 83.33333%; } + +.small-push-10 { + position: relative; + right: 83.33333%; } + +.small-pull-10 { + position: relative; + right: -83.33333%; } + +.small-offset-9 { + margin-right: 75%; } + +.small-11 { + width: 91.66667%; } + +.small-push-11 { + position: relative; + right: 91.66667%; } + +.small-pull-11 { + position: relative; + right: -91.66667%; } + +.small-offset-10 { + margin-right: 83.33333%; } + +.small-12 { + width: 100%; } + +.small-offset-11 { + margin-right: 91.66667%; } + +.small-up-1 > .column, .small-up-1 > .columns { + width: 100%; + float: right; } + .small-up-1 > .column:nth-of-type(1n), .small-up-1 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-1 > .column:nth-of-type(1n+1), .small-up-1 > .columns:nth-of-type(1n+1) { + clear: both; } + .small-up-1 > .column:last-child, .small-up-1 > .columns:last-child { + float: left; } + +.small-up-2 > .column, .small-up-2 > .columns { + width: 50%; + float: right; } + .small-up-2 > .column:nth-of-type(1n), .small-up-2 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-2 > .column:nth-of-type(2n+1), .small-up-2 > .columns:nth-of-type(2n+1) { + clear: both; } + .small-up-2 > .column:last-child, .small-up-2 > .columns:last-child { + float: left; } + +.small-up-3 > .column, .small-up-3 > .columns { + width: 33.33333%; + float: right; } + .small-up-3 > .column:nth-of-type(1n), .small-up-3 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-3 > .column:nth-of-type(3n+1), .small-up-3 > .columns:nth-of-type(3n+1) { + clear: both; } + .small-up-3 > .column:last-child, .small-up-3 > .columns:last-child { + float: left; } + +.small-up-4 > .column, .small-up-4 > .columns { + width: 25%; + float: right; } + .small-up-4 > .column:nth-of-type(1n), .small-up-4 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-4 > .column:nth-of-type(4n+1), .small-up-4 > .columns:nth-of-type(4n+1) { + clear: both; } + .small-up-4 > .column:last-child, .small-up-4 > .columns:last-child { + float: left; } + +.small-up-5 > .column, .small-up-5 > .columns { + width: 20%; + float: right; } + .small-up-5 > .column:nth-of-type(1n), .small-up-5 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-5 > .column:nth-of-type(5n+1), .small-up-5 > .columns:nth-of-type(5n+1) { + clear: both; } + .small-up-5 > .column:last-child, .small-up-5 > .columns:last-child { + float: left; } + +.small-up-6 > .column, .small-up-6 > .columns { + width: 16.66667%; + float: right; } + .small-up-6 > .column:nth-of-type(1n), .small-up-6 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-6 > .column:nth-of-type(6n+1), .small-up-6 > .columns:nth-of-type(6n+1) { + clear: both; } + .small-up-6 > .column:last-child, .small-up-6 > .columns:last-child { + float: left; } + +.small-up-7 > .column, .small-up-7 > .columns { + width: 14.28571%; + float: right; } + .small-up-7 > .column:nth-of-type(1n), .small-up-7 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-7 > .column:nth-of-type(7n+1), .small-up-7 > .columns:nth-of-type(7n+1) { + clear: both; } + .small-up-7 > .column:last-child, .small-up-7 > .columns:last-child { + float: left; } + +.small-up-8 > .column, .small-up-8 > .columns { + width: 12.5%; + float: right; } + .small-up-8 > .column:nth-of-type(1n), .small-up-8 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-8 > .column:nth-of-type(8n+1), .small-up-8 > .columns:nth-of-type(8n+1) { + clear: both; } + .small-up-8 > .column:last-child, .small-up-8 > .columns:last-child { + float: left; } + +.small-collapse > .column, .small-collapse > .columns { + padding-left: 0; + padding-right: 0; } + +.small-collapse .row, +.expanded.row .small-collapse.row { + margin-left: 0; + margin-right: 0; } + +.small-uncollapse > .column, .small-uncollapse > .columns { + padding-left: 0.625rem; + padding-right: 0.625rem; } + +.small-centered { + float: none; + margin-left: auto; + margin-right: auto; } + +.small-uncentered, +.small-push-0, +.small-pull-0 { + position: static; + margin-left: 0; + margin-right: 0; + float: left; } + +@media screen and (min-width: 40em) { + .medium-1 { + width: 8.33333%; } + .medium-push-1 { + position: relative; + right: 8.33333%; } + .medium-pull-1 { + position: relative; + right: -8.33333%; } + .medium-offset-0 { + margin-right: 0%; } + .medium-2 { + width: 16.66667%; } + .medium-push-2 { + position: relative; + right: 16.66667%; } + .medium-pull-2 { + position: relative; + right: -16.66667%; } + .medium-offset-1 { + margin-right: 8.33333%; } + .medium-3 { + width: 25%; } + .medium-push-3 { + position: relative; + right: 25%; } + .medium-pull-3 { + position: relative; + right: -25%; } + .medium-offset-2 { + margin-right: 16.66667%; } + .medium-4 { + width: 33.33333%; } + .medium-push-4 { + position: relative; + right: 33.33333%; } + .medium-pull-4 { + position: relative; + right: -33.33333%; } + .medium-offset-3 { + margin-right: 25%; } + .medium-5 { + width: 41.66667%; } + .medium-push-5 { + position: relative; + right: 41.66667%; } + .medium-pull-5 { + position: relative; + right: -41.66667%; } + .medium-offset-4 { + margin-right: 33.33333%; } + .medium-6 { + width: 50%; } + .medium-push-6 { + position: relative; + right: 50%; } + .medium-pull-6 { + position: relative; + right: -50%; } + .medium-offset-5 { + margin-right: 41.66667%; } + .medium-7 { + width: 58.33333%; } + .medium-push-7 { + position: relative; + right: 58.33333%; } + .medium-pull-7 { + position: relative; + right: -58.33333%; } + .medium-offset-6 { + margin-right: 50%; } + .medium-8 { + width: 66.66667%; } + .medium-push-8 { + position: relative; + right: 66.66667%; } + .medium-pull-8 { + position: relative; + right: -66.66667%; } + .medium-offset-7 { + margin-right: 58.33333%; } + .medium-9 { + width: 75%; } + .medium-push-9 { + position: relative; + right: 75%; } + .medium-pull-9 { + position: relative; + right: -75%; } + .medium-offset-8 { + margin-right: 66.66667%; } + .medium-10 { + width: 83.33333%; } + .medium-push-10 { + position: relative; + right: 83.33333%; } + .medium-pull-10 { + position: relative; + right: -83.33333%; } + .medium-offset-9 { + margin-right: 75%; } + .medium-11 { + width: 91.66667%; } + .medium-push-11 { + position: relative; + right: 91.66667%; } + .medium-pull-11 { + position: relative; + right: -91.66667%; } + .medium-offset-10 { + margin-right: 83.33333%; } + .medium-12 { + width: 100%; } + .medium-offset-11 { + margin-right: 91.66667%; } + .medium-up-1 > .column, .medium-up-1 > .columns { + width: 100%; + float: right; } + .medium-up-1 > .column:nth-of-type(1n), .medium-up-1 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-1 > .column:nth-of-type(1n+1), .medium-up-1 > .columns:nth-of-type(1n+1) { + clear: both; } + .medium-up-1 > .column:last-child, .medium-up-1 > .columns:last-child { + float: left; } + .medium-up-2 > .column, .medium-up-2 > .columns { + width: 50%; + float: right; } + .medium-up-2 > .column:nth-of-type(1n), .medium-up-2 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-2 > .column:nth-of-type(2n+1), .medium-up-2 > .columns:nth-of-type(2n+1) { + clear: both; } + .medium-up-2 > .column:last-child, .medium-up-2 > .columns:last-child { + float: left; } + .medium-up-3 > .column, .medium-up-3 > .columns { + width: 33.33333%; + float: right; } + .medium-up-3 > .column:nth-of-type(1n), .medium-up-3 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-3 > .column:nth-of-type(3n+1), .medium-up-3 > .columns:nth-of-type(3n+1) { + clear: both; } + .medium-up-3 > .column:last-child, .medium-up-3 > .columns:last-child { + float: left; } + .medium-up-4 > .column, .medium-up-4 > .columns { + width: 25%; + float: right; } + .medium-up-4 > .column:nth-of-type(1n), .medium-up-4 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-4 > .column:nth-of-type(4n+1), .medium-up-4 > .columns:nth-of-type(4n+1) { + clear: both; } + .medium-up-4 > .column:last-child, .medium-up-4 > .columns:last-child { + float: left; } + .medium-up-5 > .column, .medium-up-5 > .columns { + width: 20%; + float: right; } + .medium-up-5 > .column:nth-of-type(1n), .medium-up-5 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-5 > .column:nth-of-type(5n+1), .medium-up-5 > .columns:nth-of-type(5n+1) { + clear: both; } + .medium-up-5 > .column:last-child, .medium-up-5 > .columns:last-child { + float: left; } + .medium-up-6 > .column, .medium-up-6 > .columns { + width: 16.66667%; + float: right; } + .medium-up-6 > .column:nth-of-type(1n), .medium-up-6 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-6 > .column:nth-of-type(6n+1), .medium-up-6 > .columns:nth-of-type(6n+1) { + clear: both; } + .medium-up-6 > .column:last-child, .medium-up-6 > .columns:last-child { + float: left; } + .medium-up-7 > .column, .medium-up-7 > .columns { + width: 14.28571%; + float: right; } + .medium-up-7 > .column:nth-of-type(1n), .medium-up-7 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-7 > .column:nth-of-type(7n+1), .medium-up-7 > .columns:nth-of-type(7n+1) { + clear: both; } + .medium-up-7 > .column:last-child, .medium-up-7 > .columns:last-child { + float: left; } + .medium-up-8 > .column, .medium-up-8 > .columns { + width: 12.5%; + float: right; } + .medium-up-8 > .column:nth-of-type(1n), .medium-up-8 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-8 > .column:nth-of-type(8n+1), .medium-up-8 > .columns:nth-of-type(8n+1) { + clear: both; } + .medium-up-8 > .column:last-child, .medium-up-8 > .columns:last-child { + float: left; } + .medium-collapse > .column, .medium-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .medium-collapse .row, + .expanded.row .medium-collapse.row { + margin-left: 0; + margin-right: 0; } + .medium-uncollapse > .column, .medium-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } + .medium-centered { + float: none; + margin-left: auto; + margin-right: auto; } + .medium-uncentered, + .medium-push-0, + .medium-pull-0 { + position: static; + margin-left: 0; + margin-right: 0; + float: left; } } + +@media screen and (min-width: 64em) { + .large-1 { + width: 8.33333%; } + .large-push-1 { + position: relative; + right: 8.33333%; } + .large-pull-1 { + position: relative; + right: -8.33333%; } + .large-offset-0 { + margin-right: 0%; } + .large-2 { + width: 16.66667%; } + .large-push-2 { + position: relative; + right: 16.66667%; } + .large-pull-2 { + position: relative; + right: -16.66667%; } + .large-offset-1 { + margin-right: 8.33333%; } + .large-3 { + width: 25%; } + .large-push-3 { + position: relative; + right: 25%; } + .large-pull-3 { + position: relative; + right: -25%; } + .large-offset-2 { + margin-right: 16.66667%; } + .large-4 { + width: 33.33333%; } + .large-push-4 { + position: relative; + right: 33.33333%; } + .large-pull-4 { + position: relative; + right: -33.33333%; } + .large-offset-3 { + margin-right: 25%; } + .large-5 { + width: 41.66667%; } + .large-push-5 { + position: relative; + right: 41.66667%; } + .large-pull-5 { + position: relative; + right: -41.66667%; } + .large-offset-4 { + margin-right: 33.33333%; } + .large-6 { + width: 50%; } + .large-push-6 { + position: relative; + right: 50%; } + .large-pull-6 { + position: relative; + right: -50%; } + .large-offset-5 { + margin-right: 41.66667%; } + .large-7 { + width: 58.33333%; } + .large-push-7 { + position: relative; + right: 58.33333%; } + .large-pull-7 { + position: relative; + right: -58.33333%; } + .large-offset-6 { + margin-right: 50%; } + .large-8 { + width: 66.66667%; } + .large-push-8 { + position: relative; + right: 66.66667%; } + .large-pull-8 { + position: relative; + right: -66.66667%; } + .large-offset-7 { + margin-right: 58.33333%; } + .large-9 { + width: 75%; } + .large-push-9 { + position: relative; + right: 75%; } + .large-pull-9 { + position: relative; + right: -75%; } + .large-offset-8 { + margin-right: 66.66667%; } + .large-10 { + width: 83.33333%; } + .large-push-10 { + position: relative; + right: 83.33333%; } + .large-pull-10 { + position: relative; + right: -83.33333%; } + .large-offset-9 { + margin-right: 75%; } + .large-11 { + width: 91.66667%; } + .large-push-11 { + position: relative; + right: 91.66667%; } + .large-pull-11 { + position: relative; + right: -91.66667%; } + .large-offset-10 { + margin-right: 83.33333%; } + .large-12 { + width: 100%; } + .large-offset-11 { + margin-right: 91.66667%; } + .large-up-1 > .column, .large-up-1 > .columns { + width: 100%; + float: right; } + .large-up-1 > .column:nth-of-type(1n), .large-up-1 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-1 > .column:nth-of-type(1n+1), .large-up-1 > .columns:nth-of-type(1n+1) { + clear: both; } + .large-up-1 > .column:last-child, .large-up-1 > .columns:last-child { + float: left; } + .large-up-2 > .column, .large-up-2 > .columns { + width: 50%; + float: right; } + .large-up-2 > .column:nth-of-type(1n), .large-up-2 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-2 > .column:nth-of-type(2n+1), .large-up-2 > .columns:nth-of-type(2n+1) { + clear: both; } + .large-up-2 > .column:last-child, .large-up-2 > .columns:last-child { + float: left; } + .large-up-3 > .column, .large-up-3 > .columns { + width: 33.33333%; + float: right; } + .large-up-3 > .column:nth-of-type(1n), .large-up-3 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-3 > .column:nth-of-type(3n+1), .large-up-3 > .columns:nth-of-type(3n+1) { + clear: both; } + .large-up-3 > .column:last-child, .large-up-3 > .columns:last-child { + float: left; } + .large-up-4 > .column, .large-up-4 > .columns { + width: 25%; + float: right; } + .large-up-4 > .column:nth-of-type(1n), .large-up-4 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-4 > .column:nth-of-type(4n+1), .large-up-4 > .columns:nth-of-type(4n+1) { + clear: both; } + .large-up-4 > .column:last-child, .large-up-4 > .columns:last-child { + float: left; } + .large-up-5 > .column, .large-up-5 > .columns { + width: 20%; + float: right; } + .large-up-5 > .column:nth-of-type(1n), .large-up-5 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-5 > .column:nth-of-type(5n+1), .large-up-5 > .columns:nth-of-type(5n+1) { + clear: both; } + .large-up-5 > .column:last-child, .large-up-5 > .columns:last-child { + float: left; } + .large-up-6 > .column, .large-up-6 > .columns { + width: 16.66667%; + float: right; } + .large-up-6 > .column:nth-of-type(1n), .large-up-6 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-6 > .column:nth-of-type(6n+1), .large-up-6 > .columns:nth-of-type(6n+1) { + clear: both; } + .large-up-6 > .column:last-child, .large-up-6 > .columns:last-child { + float: left; } + .large-up-7 > .column, .large-up-7 > .columns { + width: 14.28571%; + float: right; } + .large-up-7 > .column:nth-of-type(1n), .large-up-7 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-7 > .column:nth-of-type(7n+1), .large-up-7 > .columns:nth-of-type(7n+1) { + clear: both; } + .large-up-7 > .column:last-child, .large-up-7 > .columns:last-child { + float: left; } + .large-up-8 > .column, .large-up-8 > .columns { + width: 12.5%; + float: right; } + .large-up-8 > .column:nth-of-type(1n), .large-up-8 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-8 > .column:nth-of-type(8n+1), .large-up-8 > .columns:nth-of-type(8n+1) { + clear: both; } + .large-up-8 > .column:last-child, .large-up-8 > .columns:last-child { + float: left; } + .large-collapse > .column, .large-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .large-collapse .row, + .expanded.row .large-collapse.row { + margin-left: 0; + margin-right: 0; } + .large-uncollapse > .column, .large-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } + .large-centered { + float: none; + margin-left: auto; + margin-right: auto; } + .large-uncentered, + .large-push-0, + .large-pull-0 { + position: static; + margin-left: 0; + margin-right: 0; + float: left; } } + +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +form, +p, +blockquote, +th, +td { + margin: 0; + padding: 0; } + +p { + font-size: inherit; + line-height: 1.6; + margin-bottom: 1rem; + text-rendering: optimizeLegibility; } + +em, +i { + font-style: italic; + line-height: inherit; } + +strong, +b { + font-weight: bold; + line-height: inherit; } + +small { + font-size: 80%; + line-height: inherit; } + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + font-style: normal; + color: inherit; + text-rendering: optimizeLegibility; + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.4; } + h1 small, + h2 small, + h3 small, + h4 small, + h5 small, + h6 small { + color: #cacaca; + line-height: 0; } + +h1 { + font-size: 1.5rem; } + +h2 { + font-size: 1.25rem; } + +h3 { + font-size: 1.1875rem; } + +h4 { + font-size: 1.125rem; } + +h5 { + font-size: 1.0625rem; } + +h6 { + font-size: 1rem; } + +@media screen and (min-width: 40em) { + h1 { + font-size: 3rem; } + h2 { + font-size: 2.5rem; } + h3 { + font-size: 1.9375rem; } + h4 { + font-size: 1.5625rem; } + h5 { + font-size: 1.25rem; } + h6 { + font-size: 1rem; } } + +a { + color: #2199e8; + text-decoration: none; + line-height: inherit; + cursor: pointer; } + a:hover, a:focus { + color: #1585cf; } + a img { + border: 0; } + +hr { + max-width: 75rem; + height: 0; + border-right: 0; + border-top: 0; + border-bottom: 1px solid #cacaca; + border-left: 0; + margin: 1.25rem auto; + clear: both; } + +ul, +ol, +dl { + line-height: 1.6; + margin-bottom: 1rem; + list-style-position: outside; } + +li { + font-size: inherit; } + +ul { + list-style-type: disc; + margin-right: 1.25rem; } + +ol { + margin-right: 1.25rem; } + +ul ul, ol ul, ul ol, ol ol { + margin-right: 1.25rem; + margin-bottom: 0; } + +dl { + margin-bottom: 1rem; } + dl dt { + margin-bottom: 0.3rem; + font-weight: bold; } + +blockquote { + margin: 0 0 1rem; + padding: 0.5625rem 1.25rem 0 1.1875rem; + border-right: 1px solid #cacaca; } + blockquote, blockquote p { + line-height: 1.6; + color: #8a8a8a; } + +cite { + display: block; + font-size: 0.8125rem; + color: #8a8a8a; } + cite:before { + content: '\2014 \0020'; } + +abbr { + color: #0a0a0a; + cursor: help; + border-bottom: 1px dotted #0a0a0a; } + +code { + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-weight: normal; + color: #0a0a0a; + background-color: #e6e6e6; + border: 1px solid #cacaca; + padding: 0.125rem 0.3125rem 0.0625rem; } + +kbd { + padding: 0.125rem 0.25rem 0; + margin: 0; + background-color: #e6e6e6; + color: #0a0a0a; + font-family: Consolas, "Liberation Mono", Courier, monospace; } + +.subheader { + margin-top: 0.2rem; + margin-bottom: 0.5rem; + font-weight: normal; + line-height: 1.4; + color: #8a8a8a; } + +.lead { + font-size: 125%; + line-height: 1.6; } + +.stat { + font-size: 2.5rem; + line-height: 1; } + p + .stat { + margin-top: -1rem; } + +.no-bullet { + margin-right: 0; + list-style: none; } + +.text-left { + text-align: left; } + +.text-right { + text-align: right; } + +.text-center { + text-align: center; } + +.text-justify { + text-align: justify; } + +@media screen and (min-width: 40em) { + .medium-text-left { + text-align: left; } + .medium-text-right { + text-align: right; } + .medium-text-center { + text-align: center; } + .medium-text-justify { + text-align: justify; } } + +@media screen and (min-width: 64em) { + .large-text-left { + text-align: left; } + .large-text-right { + text-align: right; } + .large-text-center { + text-align: center; } + .large-text-justify { + text-align: justify; } } + +.show-for-print { + display: none !important; } + +@media print { + * { + background: transparent !important; + color: black !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: none !important; } + .show-for-print { + display: block !important; } + .hide-for-print { + display: none !important; } + table.show-for-print { + display: table !important; } + thead.show-for-print { + display: table-header-group !important; } + tbody.show-for-print { + display: table-row-group !important; } + tr.show-for-print { + display: table-row !important; } + td.show-for-print { + display: table-cell !important; } + th.show-for-print { + display: table-cell !important; } + a, + a:visited { + text-decoration: underline; } + a[href]:after { + content: " (" attr(href) ")"; } + .ir a:after, + a[href^='javascript:']:after, + a[href^='#']:after { + content: ''; } + abbr[title]:after { + content: " (" attr(title) ")"; } + pre, + blockquote { + border: 1px solid #8a8a8a; + page-break-inside: avoid; } + thead { + display: table-header-group; } + tr, + img { + page-break-inside: avoid; } + img { + max-width: 100% !important; } + @page { + margin: 0.5cm; } + p, + h2, + h3 { + orphans: 3; + widows: 3; } + h2, + h3 { + page-break-after: avoid; } } + +[type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'], +textarea { + display: block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + height: 2.4375rem; + padding: 0.5rem; + border: 1px solid #cacaca; + margin: 0 0 1rem; + font-family: inherit; + font-size: 1rem; + color: #0a0a0a; + background-color: #fefefe; + -webkit-box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + border-radius: 0; + -webkit-transition: -webkit-box-shadow 0.5s, border-color 0.25s ease-in-out; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; + -webkit-appearance: none; + -moz-appearance: none; } + [type='text']:focus, [type='password']:focus, [type='date']:focus, [type='datetime']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='week']:focus, [type='email']:focus, [type='number']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='url']:focus, [type='color']:focus, + textarea:focus { + border: 1px solid #8a8a8a; + background-color: #fefefe; + outline: none; + -webkit-box-shadow: 0 0 5px #cacaca; + box-shadow: 0 0 5px #cacaca; + -webkit-transition: -webkit-box-shadow 0.5s, border-color 0.25s ease-in-out; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; } + +textarea { + max-width: 100%; } + textarea[rows] { + height: auto; } + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #cacaca; } + +input::-moz-placeholder, +textarea::-moz-placeholder { + color: #cacaca; } + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #cacaca; } + +input::placeholder, +textarea::placeholder { + color: #cacaca; } + +input:disabled, input[readonly], +textarea:disabled, +textarea[readonly] { + background-color: #e6e6e6; + cursor: not-allowed; } + +[type='submit'], +[type='button'] { + border-radius: 0; + -webkit-appearance: none; + -moz-appearance: none; } + +input[type='search'] { + -webkit-box-sizing: border-box; + box-sizing: border-box; } + +[type='file'], +[type='checkbox'], +[type='radio'] { + margin: 0 0 1rem; } + +[type='checkbox'] + label, +[type='radio'] + label { + display: inline-block; + margin-right: 0.5rem; + margin-left: 1rem; + margin-bottom: 0; + vertical-align: baseline; } + [type='checkbox'] + label[for], + [type='radio'] + label[for] { + cursor: pointer; } + +label > [type='checkbox'], +label > [type='radio'] { + margin-left: 0.5rem; } + +[type='file'] { + width: 100%; } + +label { + display: block; + margin: 0; + font-size: 0.875rem; + font-weight: normal; + line-height: 1.8; + color: #0a0a0a; } + label.middle { + margin: 0 0 1rem; + padding: 0.5625rem 0; } + +.help-text { + margin-top: -0.5rem; + font-size: 0.8125rem; + font-style: italic; + color: #0a0a0a; } + +.input-group { + display: table; + width: 100%; + margin-bottom: 1rem; } + .input-group > :first-child { + border-radius: 0 0 0 0; } + .input-group > :last-child > * { + border-radius: 0 0 0 0; } + +.input-group-label, .input-group-field, .input-group-button { + margin: 0; + white-space: nowrap; + display: table-cell; + vertical-align: middle; } + +.input-group-label { + text-align: center; + padding: 0 1rem; + background: #e6e6e6; + color: #0a0a0a; + border: 1px solid #cacaca; + white-space: nowrap; + width: 1%; + height: 100%; } + .input-group-label:first-child { + border-left: 0; } + .input-group-label:last-child { + border-right: 0; } + +.input-group-field { + border-radius: 0; + height: 2.5rem; } + +.input-group-button { + padding-top: 0; + padding-bottom: 0; + text-align: center; + height: 100%; + width: 1%; } + .input-group-button a, + .input-group-button input, + .input-group-button button { + margin: 0; } + +.input-group .input-group-button { + display: table-cell; } + +fieldset { + border: 0; + padding: 0; + margin: 0; } + +legend { + margin-bottom: 0.5rem; + max-width: 100%; } + +.fieldset { + border: 1px solid #cacaca; + padding: 1.25rem; + margin: 1.125rem 0; } + .fieldset legend { + background: #fefefe; + padding: 0 0.1875rem; + margin: 0; + margin-right: -0.1875rem; } + +select { + height: 2.4375rem; + padding: 0.5rem; + border: 1px solid #cacaca; + margin: 0 0 1rem; + font-size: 1rem; + font-family: inherit; + line-height: normal; + color: #0a0a0a; + background-color: #fefefe; + border-radius: 0; + -webkit-appearance: none; + -moz-appearance: none; + background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%28138, 138, 138%29'></polygon></svg>"); + -webkit-background-size: 9px 6px; + background-size: 9px 6px; + background-position: left -1rem center; + -webkit-background-origin: content-box; + background-origin: content-box; + background-repeat: no-repeat; + padding-left: 1.5rem; } + @media screen and (min-width: 0\0) { + select { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); } } + select:disabled { + background-color: #e6e6e6; + cursor: not-allowed; } + select::-ms-expand { + display: none; } + select[multiple] { + height: auto; + background-image: none; } + +.is-invalid-input:not(:focus) { + background-color: rgba(236, 88, 64, 0.1); + border-color: #ec5840; } + +.is-invalid-label { + color: #ec5840; } + +.form-error { + display: none; + margin-top: -0.5rem; + margin-bottom: 1rem; + font-size: 0.75rem; + font-weight: bold; + color: #ec5840; } + .form-error.is-visible { + display: block; } + +.button { + display: inline-block; + text-align: center; + line-height: 1; + cursor: pointer; + -webkit-appearance: none; + -webkit-transition: background-color 0.25s ease-out, color 0.25s ease-out; + transition: background-color 0.25s ease-out, color 0.25s ease-out; + vertical-align: middle; + border: 1px solid transparent; + border-radius: 0; + padding: 0.85em 1em; + margin: 0 0 1rem 0; + font-size: 0.9rem; + background-color: #2199e8; + color: #fefefe; } + [data-whatinput='mouse'] .button { + outline: 0; } + .button:hover, .button:focus { + background-color: #1583cc; + color: #fefefe; } + .button.tiny { + font-size: 0.6rem; } + .button.small { + font-size: 0.75rem; } + .button.large { + font-size: 1.25rem; } + .button.expanded { + display: block; + width: 100%; + margin-left: 0; + margin-right: 0; } + .button.primary { + background-color: #2199e8; + color: #fefefe; } + .button.primary:hover, .button.primary:focus { + background-color: #147cc0; + color: #fefefe; } + .button.secondary { + background-color: #777; + color: #fefefe; } + .button.secondary:hover, .button.secondary:focus { + background-color: #5f5f5f; + color: #fefefe; } + .button.success { + background-color: #3adb76; + color: #fefefe; } + .button.success:hover, .button.success:focus { + background-color: #22bb5b; + color: #fefefe; } + .button.warning { + background-color: #ffae00; + color: #fefefe; } + .button.warning:hover, .button.warning:focus { + background-color: #cc8b00; + color: #fefefe; } + .button.alert { + background-color: #ec5840; + color: #fefefe; } + .button.alert:hover, .button.alert:focus { + background-color: #da3116; + color: #fefefe; } + .button.hollow { + border: 1px solid #2199e8; + color: #2199e8; } + .button.hollow, .button.hollow:hover, .button.hollow:focus { + background-color: transparent; } + .button.hollow:hover, .button.hollow:focus { + border-color: #0c4d78; + color: #0c4d78; } + .button.hollow.primary { + border: 1px solid #2199e8; + color: #2199e8; } + .button.hollow.primary:hover, .button.hollow.primary:focus { + border-color: #0c4d78; + color: #0c4d78; } + .button.hollow.secondary { + border: 1px solid #777; + color: #777; } + .button.hollow.secondary:hover, .button.hollow.secondary:focus { + border-color: #3c3c3c; + color: #3c3c3c; } + .button.hollow.success { + border: 1px solid #3adb76; + color: #3adb76; } + .button.hollow.success:hover, .button.hollow.success:focus { + border-color: #157539; + color: #157539; } + .button.hollow.warning { + border: 1px solid #ffae00; + color: #ffae00; } + .button.hollow.warning:hover, .button.hollow.warning:focus { + border-color: #805700; + color: #805700; } + .button.hollow.alert { + border: 1px solid #ec5840; + color: #ec5840; } + .button.hollow.alert:hover, .button.hollow.alert:focus { + border-color: #881f0e; + color: #881f0e; } + .button.disabled, .button[disabled] { + opacity: 0.25; + cursor: not-allowed; } + .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { + background-color: #2199e8; + color: #fefefe; } + .button.dropdown::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.4em; + border-color: #fefefe transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + position: relative; + top: 0.4em; + float: left; + margin-right: 1em; + display: inline-block; } + .button.arrow-only::after { + margin-right: 0; + float: none; + top: -0.1em; } + +.accordion { + list-style-type: none; + background: #fefefe; + margin-right: 0; } + +.accordion-item:first-child > :first-child { + border-radius: 0 0 0 0; } + +.accordion-item:last-child > :last-child { + border-radius: 0 0 0 0; } + +.accordion-title { + display: block; + padding: 1.25rem 1rem; + line-height: 1; + font-size: 0.75rem; + color: #2199e8; + position: relative; + border: 1px solid #e6e6e6; + border-bottom: 0; } + :last-child:not(.is-active) > .accordion-title { + border-radius: 0 0 0 0; + border-bottom: 1px solid #e6e6e6; } + .accordion-title:hover, .accordion-title:focus { + background-color: #e6e6e6; } + .accordion-title::before { + content: '+'; + position: absolute; + left: 1rem; + top: 50%; + margin-top: -0.5rem; } + .is-active > .accordion-title::before { + content: '–'; } + +.accordion-content { + padding: 1rem; + display: none; + border: 1px solid #e6e6e6; + border-bottom: 0; + background-color: #fefefe; + color: #0a0a0a; } + :last-child > .accordion-content:last-child { + border-bottom: 1px solid #e6e6e6; } + +.is-accordion-submenu-parent > a { + position: relative; } + .is-accordion-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + position: absolute; + top: 50%; + margin-top: -4px; + right: 1rem; } + +.is-accordion-submenu-parent[aria-expanded='true'] > a::after { + -webkit-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transform: scaleY(-1); + -ms-transform: scaleY(-1); + transform: scaleY(-1); } + +.badge { + display: inline-block; + padding: 0.3em; + min-width: 2.1em; + font-size: 0.6rem; + text-align: center; + border-radius: 50%; + background: #2199e8; + color: #fefefe; } + .badge.secondary { + background: #777; + color: #fefefe; } + .badge.success { + background: #3adb76; + color: #fefefe; } + .badge.warning { + background: #ffae00; + color: #fefefe; } + .badge.alert { + background: #ec5840; + color: #fefefe; } + +.breadcrumbs { + list-style: none; + margin: 0 0 1rem 0; } + .breadcrumbs::before, .breadcrumbs::after { + content: ' '; + display: table; } + .breadcrumbs::after { + clear: both; } + .breadcrumbs li { + float: right; + color: #0a0a0a; + font-size: 0.6875rem; + cursor: default; + text-transform: uppercase; } + .breadcrumbs li:not(:last-child)::after { + color: #cacaca; + content: "\\"; + margin: 0 0.75rem; + position: relative; + top: 1px; + opacity: 1; } + .breadcrumbs a { + color: #2199e8; } + .breadcrumbs a:hover { + text-decoration: underline; } + .breadcrumbs .disabled { + color: #cacaca; + cursor: not-allowed; } + +.button-group { + margin-bottom: 1rem; + font-size: 0; } + .button-group::before, .button-group::after { + content: ' '; + display: table; } + .button-group::after { + clear: both; } + .button-group .button { + margin: 0; + margin-left: 1px; + margin-bottom: 1px; + font-size: 0.9rem; } + .button-group .button:last-child { + margin-left: 0; } + .button-group.tiny .button { + font-size: 0.6rem; } + .button-group.small .button { + font-size: 0.75rem; } + .button-group.large .button { + font-size: 1.25rem; } + .button-group.expanded { + margin-left: -1px; } + .button-group.expanded::before, .button-group.expanded::after { + display: none; } + .button-group.expanded .button:first-child:nth-last-child(2), .button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2) ~ .button { + display: inline-block; + width: calc(50% - 1px); + margin-left: 1px; } + .button-group.expanded .button:first-child:nth-last-child(2):last-child, .button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2) ~ .button:last-child { + margin-left: -6px; } + .button-group.expanded .button:first-child:nth-last-child(3), .button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3) ~ .button { + display: inline-block; + width: calc(33.33333% - 1px); + margin-left: 1px; } + .button-group.expanded .button:first-child:nth-last-child(3):last-child, .button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3) ~ .button:last-child { + margin-left: -6px; } + .button-group.expanded .button:first-child:nth-last-child(4), .button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4) ~ .button { + display: inline-block; + width: calc(25% - 1px); + margin-left: 1px; } + .button-group.expanded .button:first-child:nth-last-child(4):last-child, .button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4) ~ .button:last-child { + margin-left: -6px; } + .button-group.expanded .button:first-child:nth-last-child(5), .button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5) ~ .button { + display: inline-block; + width: calc(20% - 1px); + margin-left: 1px; } + .button-group.expanded .button:first-child:nth-last-child(5):last-child, .button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5) ~ .button:last-child { + margin-left: -6px; } + .button-group.expanded .button:first-child:nth-last-child(6), .button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6) ~ .button { + display: inline-block; + width: calc(16.66667% - 1px); + margin-left: 1px; } + .button-group.expanded .button:first-child:nth-last-child(6):last-child, .button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6) ~ .button:last-child { + margin-left: -6px; } + .button-group.primary .button { + background-color: #2199e8; + color: #fefefe; } + .button-group.primary .button:hover, .button-group.primary .button:focus { + background-color: #147cc0; + color: #fefefe; } + .button-group.secondary .button { + background-color: #777; + color: #fefefe; } + .button-group.secondary .button:hover, .button-group.secondary .button:focus { + background-color: #5f5f5f; + color: #fefefe; } + .button-group.success .button { + background-color: #3adb76; + color: #fefefe; } + .button-group.success .button:hover, .button-group.success .button:focus { + background-color: #22bb5b; + color: #fefefe; } + .button-group.warning .button { + background-color: #ffae00; + color: #fefefe; } + .button-group.warning .button:hover, .button-group.warning .button:focus { + background-color: #cc8b00; + color: #fefefe; } + .button-group.alert .button { + background-color: #ec5840; + color: #fefefe; } + .button-group.alert .button:hover, .button-group.alert .button:focus { + background-color: #da3116; + color: #fefefe; } + .button-group.stacked .button, .button-group.stacked-for-small .button, .button-group.stacked-for-medium .button { + width: 100%; } + .button-group.stacked .button:last-child, .button-group.stacked-for-small .button:last-child, .button-group.stacked-for-medium .button:last-child { + margin-bottom: 0; } + @media screen and (min-width: 40em) { + .button-group.stacked-for-small .button { + width: auto; + margin-bottom: 0; } } + @media screen and (min-width: 64em) { + .button-group.stacked-for-medium .button { + width: auto; + margin-bottom: 0; } } + @media screen and (max-width: 39.9375em) { + .button-group.stacked-for-small.expanded { + display: block; } + .button-group.stacked-for-small.expanded .button { + display: block; + margin-left: 0; } } + +.callout { + margin: 0 0 1rem 0; + padding: 1rem; + border: 1px solid rgba(10, 10, 10, 0.25); + border-radius: 0; + position: relative; + color: #0a0a0a; + background-color: white; } + .callout > :first-child { + margin-top: 0; } + .callout > :last-child { + margin-bottom: 0; } + .callout.primary { + background-color: #def0fc; } + .callout.secondary { + background-color: #ebebeb; } + .callout.success { + background-color: #e1faea; } + .callout.warning { + background-color: #fff3d9; } + .callout.alert { + background-color: #fce6e2; } + .callout.small { + padding-top: 0.5rem; + padding-right: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.5rem; } + .callout.large { + padding-top: 3rem; + padding-right: 3rem; + padding-bottom: 3rem; + padding-left: 3rem; } + +.close-button { + position: absolute; + color: #8a8a8a; + right: 1rem; + top: 0.5rem; + font-size: 2em; + line-height: 1; + cursor: pointer; } + [data-whatinput='mouse'] .close-button { + outline: 0; } + .close-button:hover, .close-button:focus { + color: #0a0a0a; } + +.menu { + margin: 0; + list-style-type: none; } + .menu > li { + display: table-cell; + vertical-align: middle; } + [data-whatinput='mouse'] .menu > li { + outline: 0; } + .menu > li > a { + display: block; + padding: 0.7rem 1rem; + line-height: 1; } + .menu input, + .menu a, + .menu button { + margin-bottom: 0; } + .menu > li > a img, + .menu > li > a i, + .menu > li > a svg { + vertical-align: middle; } + .menu > li > a img + span, + .menu > li > a i + span, + .menu > li > a svg + span { + vertical-align: middle; } + .menu > li > a img, + .menu > li > a i, + .menu > li > a svg { + margin-left: 0.25rem; + display: inline-block; } + .menu > li { + display: table-cell; } + .menu.vertical > li { + display: block; } + @media screen and (min-width: 40em) { + .menu.medium-horizontal > li { + display: table-cell; } + .menu.medium-vertical > li { + display: block; } } + @media screen and (min-width: 64em) { + .menu.large-horizontal > li { + display: table-cell; } + .menu.large-vertical > li { + display: block; } } + .menu.simple li { + line-height: 1; + display: inline-block; + margin-left: 1rem; } + .menu.simple a { + padding: 0; } + .menu.align-left::before, .menu.align-left::after { + content: ' '; + display: table; } + .menu.align-left::after { + clear: both; } + .menu.align-left > li { + float: left; } + .menu.expanded { + width: 100%; + display: table; + table-layout: fixed; } + .menu.expanded > li:first-child:last-child { + width: 100%; } + .menu.icon-top > li > a { + text-align: center; } + .menu.icon-top > li > a img, + .menu.icon-top > li > a i, + .menu.icon-top > li > a svg { + display: block; + margin: 0 auto 0.25rem; } + .menu.nested { + margin-right: 1rem; } + .menu .active > a { + color: #fefefe; + background: #2199e8; } + +.menu-text { + font-weight: bold; + color: inherit; + line-height: 1; + padding-top: 0; + padding-bottom: 0; + padding: 0.7rem 1rem; } + +.menu-centered { + text-align: center; } + .menu-centered > .menu { + display: inline-block; } + +.no-js [data-responsive-menu] ul { + display: none; } + +.menu-icon { + position: relative; + display: inline-block; + vertical-align: middle; + cursor: pointer; + width: 20px; + height: 16px; } + .menu-icon::after { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 2px; + background: #fefefe; + top: 0; + left: 0; + -webkit-box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; + box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; } + .menu-icon:hover::after { + background: #cacaca; + -webkit-box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; + box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; } + +.menu-icon.dark { + position: relative; + display: inline-block; + vertical-align: middle; + cursor: pointer; + width: 20px; + height: 16px; } + .menu-icon.dark::after { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 2px; + background: #0a0a0a; + top: 0; + left: 0; + -webkit-box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; + box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; } + .menu-icon.dark:hover::after { + background: #8a8a8a; + -webkit-box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; + box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; } + +.is-drilldown { + position: relative; + overflow: hidden; } + .is-drilldown li { + display: block !important; } + +.is-drilldown-submenu { + position: absolute; + top: 0; + right: 100%; + z-index: -1; + height: 100%; + width: 100%; + background: #fefefe; + -webkit-transition: -webkit-transform 0.15s linear; + transition: transform 0.15s linear; } + .is-drilldown-submenu.is-active { + z-index: 1; + display: block; + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); } + .is-drilldown-submenu.is-closing { + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); } + +.is-drilldown-submenu-parent > a { + position: relative; } + .is-drilldown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; + position: absolute; + top: 50%; + margin-top: -6px; + left: 1rem; } + +.js-drilldown-back > a::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; + border-right-width: 0; + display: inline-block; + vertical-align: middle; + margin-left: 0.75rem; } + +.dropdown-pane { + background-color: #fefefe; + border: 1px solid #cacaca; + border-radius: 0; + display: block; + font-size: 1rem; + padding: 1rem; + position: absolute; + visibility: hidden; + width: 300px; + z-index: 10; } + .dropdown-pane.is-open { + visibility: visible; } + +.dropdown-pane.tiny { + width: 100px; } + +.dropdown-pane.small { + width: 200px; } + +.dropdown-pane.large { + width: 400px; } + +.dropdown.menu > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + +.dropdown.menu > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + +.dropdown.menu > li.is-dropdown-submenu-parent > a { + padding-left: 1.5rem; + position: relative; } + +.dropdown.menu > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + left: 5px; + margin-top: -2px; } + +[data-whatinput='mouse'] .dropdown.menu a { + outline: 0; } + +.no-js .dropdown.menu ul { + display: none; } + +.dropdown.menu.vertical > li .is-dropdown-submenu { + top: 0; } + +.dropdown.menu.vertical > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + +.dropdown.menu.vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + +.dropdown.menu.vertical > li > a::after { + left: 14px; + margin-top: -3px; } + +.dropdown.menu.vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + +.dropdown.menu.vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } + +@media screen and (min-width: 40em) { + .dropdown.menu.medium-horizontal > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + .dropdown.menu.medium-horizontal > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a { + padding-left: 1.5rem; + position: relative; } + .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + left: 5px; + margin-top: -2px; } + .dropdown.menu.medium-vertical > li .is-dropdown-submenu { + top: 0; } + .dropdown.menu.medium-vertical > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + .dropdown.menu.medium-vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + .dropdown.menu.medium-vertical > li > a::after { + left: 14px; + margin-top: -3px; } + .dropdown.menu.medium-vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .dropdown.menu.medium-vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } } + +@media screen and (min-width: 64em) { + .dropdown.menu.large-horizontal > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + .dropdown.menu.large-horizontal > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a { + padding-left: 1.5rem; + position: relative; } + .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + left: 5px; + margin-top: -2px; } + .dropdown.menu.large-vertical > li .is-dropdown-submenu { + top: 0; } + .dropdown.menu.large-vertical > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + .dropdown.menu.large-vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + .dropdown.menu.large-vertical > li > a::after { + left: 14px; + margin-top: -3px; } + .dropdown.menu.large-vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .dropdown.menu.large-vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } } + +.dropdown.menu.align-right .is-dropdown-submenu.first-sub { + top: 100%; + left: auto; + right: 0; } + +.is-dropdown-menu.vertical { + width: 100px; } + .is-dropdown-menu.vertical.align-right { + float: right; } + +.is-dropdown-submenu-parent { + position: relative; } + .is-dropdown-submenu-parent a::after { + position: absolute; + top: 50%; + left: 5px; + margin-top: -2px; } + .is-dropdown-submenu-parent.opens-inner > .is-dropdown-submenu { + top: 100%; + right: auto; } + .is-dropdown-submenu-parent.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + .is-dropdown-submenu-parent.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + +.is-dropdown-submenu { + display: none; + position: absolute; + top: 0; + right: 100%; + min-width: 200px; + z-index: 1; + background: #fefefe; + border: 1px solid #cacaca; } + .is-dropdown-submenu .is-dropdown-submenu-parent > a::after { + left: 14px; + margin-top: -3px; } + .is-dropdown-submenu .is-dropdown-submenu-parent.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .is-dropdown-submenu .is-dropdown-submenu-parent.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } + .is-dropdown-submenu .is-dropdown-submenu { + margin-top: -1px; } + .is-dropdown-submenu > li { + width: 100%; } + .is-dropdown-submenu.js-dropdown-active { + display: block; } + +.flex-video { + position: relative; + height: 0; + padding-bottom: 75%; + margin-bottom: 1rem; + overflow: hidden; } + .flex-video iframe, + .flex-video object, + .flex-video embed, + .flex-video video { + position: absolute; + top: 0; + right: 0; + width: 100%; + height: 100%; } + .flex-video.widescreen { + padding-bottom: 56.25%; } + .flex-video.vimeo { + padding-top: 0; } + +.label { + display: inline-block; + padding: 0.33333rem 0.5rem; + font-size: 0.8rem; + line-height: 1; + white-space: nowrap; + cursor: default; + border-radius: 0; + background: #2199e8; + color: #fefefe; } + .label.secondary { + background: #777; + color: #fefefe; } + .label.success { + background: #3adb76; + color: #fefefe; } + .label.warning { + background: #ffae00; + color: #fefefe; } + .label.alert { + background: #ec5840; + color: #fefefe; } + +.media-object { + margin-bottom: 1rem; + display: block; } + .media-object img { + max-width: none; } + @media screen and (max-width: 39.9375em) { + .media-object.stack-for-small .media-object-section { + padding: 0; + padding-bottom: 1rem; + display: block; } + .media-object.stack-for-small .media-object-section img { + width: 100%; } } + +.media-object-section { + display: table-cell; + vertical-align: top; } + .media-object-section:first-child { + padding-left: 1rem; } + .media-object-section:last-child:not(:nth-child(2)) { + padding-right: 1rem; } + .media-object-section > :last-child { + margin-bottom: 0; } + .media-object-section.middle { + vertical-align: middle; } + .media-object-section.bottom { + vertical-align: bottom; } + +html, +body { + height: 100%; } + +.off-canvas-wrapper { + width: 100%; + overflow-x: hidden; + position: relative; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-overflow-scrolling: auto; } + +.off-canvas-wrapper-inner { + position: relative; + width: 100%; + -webkit-transition: -webkit-transform 0.5s ease; + transition: transform 0.5s ease; } + .off-canvas-wrapper-inner::before, .off-canvas-wrapper-inner::after { + content: ' '; + display: table; } + .off-canvas-wrapper-inner::after { + clear: both; } + +.off-canvas-content, +.off-canvas-content { + min-height: 100%; + background: #fefefe; + -webkit-transition: -webkit-transform 0.5s ease; + transition: transform 0.5s ease; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + padding-bottom: 0.1px; + -webkit-box-shadow: 0 0 10px rgba(10, 10, 10, 0.5); + box-shadow: 0 0 10px rgba(10, 10, 10, 0.5); } + +.js-off-canvas-exit { + display: none; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(254, 254, 254, 0.25); + cursor: pointer; + -webkit-transition: background 0.5s ease; + transition: background 0.5s ease; } + +.off-canvas { + position: absolute; + background: #e6e6e6; + z-index: -1; + max-height: 100%; + overflow-y: auto; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); } + [data-whatinput='mouse'] .off-canvas { + outline: 0; } + .off-canvas.position-left { + left: -250px; + top: 0; + width: 250px; } + .is-open-left { + -webkit-transform: translateX(250px); + -ms-transform: translateX(250px); + transform: translateX(250px); } + .off-canvas.position-right { + right: -250px; + top: 0; + width: 250px; } + .is-open-right { + -webkit-transform: translateX(-250px); + -ms-transform: translateX(-250px); + transform: translateX(-250px); } + +@media screen and (min-width: 40em) { + .position-left.reveal-for-medium { + left: 0; + z-index: auto; + position: fixed; } + .position-left.reveal-for-medium ~ .off-canvas-content { + margin-left: 250px; } + .position-right.reveal-for-medium { + right: 0; + z-index: auto; + position: fixed; } + .position-right.reveal-for-medium ~ .off-canvas-content { + margin-right: 250px; } } + +@media screen and (min-width: 64em) { + .position-left.reveal-for-large { + left: 0; + z-index: auto; + position: fixed; } + .position-left.reveal-for-large ~ .off-canvas-content { + margin-left: 250px; } + .position-right.reveal-for-large { + right: 0; + z-index: auto; + position: fixed; } + .position-right.reveal-for-large ~ .off-canvas-content { + margin-right: 250px; } } + +.orbit { + position: relative; } + +.orbit-container { + position: relative; + margin: 0; + overflow: hidden; + list-style: none; } + +.orbit-slide { + width: 100%; + max-height: 100%; } + .orbit-slide.no-motionui.is-active { + top: 0; + left: 0; } + +.orbit-figure { + margin: 0; } + +.orbit-image { + margin: 0; + width: 100%; + max-width: 100%; } + +.orbit-caption { + position: absolute; + bottom: 0; + width: 100%; + padding: 1rem; + margin-bottom: 0; + color: #fefefe; + background-color: rgba(10, 10, 10, 0.5); } + +.orbit-previous, .orbit-next { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + z-index: 10; + padding: 1rem; + color: #fefefe; } + [data-whatinput='mouse'] .orbit-previous, [data-whatinput='mouse'] .orbit-next { + outline: 0; } + .orbit-previous:hover, .orbit-next:hover, .orbit-previous:active, .orbit-next:active, .orbit-previous:focus, .orbit-next:focus { + background-color: rgba(10, 10, 10, 0.5); } + +.orbit-previous { + right: 0; } + +.orbit-next { + right: auto; + left: 0; } + +.orbit-bullets { + position: relative; + margin-top: 0.8rem; + margin-bottom: 0.8rem; + text-align: center; } + [data-whatinput='mouse'] .orbit-bullets { + outline: 0; } + .orbit-bullets button { + width: 1.2rem; + height: 1.2rem; + margin: 0.1rem; + background-color: #cacaca; + border-radius: 50%; } + .orbit-bullets button:hover { + background-color: #8a8a8a; } + .orbit-bullets button.is-active { + background-color: #8a8a8a; } + +.pagination { + margin-right: 0; + margin-bottom: 1rem; } + .pagination::before, .pagination::after { + content: ' '; + display: table; } + .pagination::after { + clear: both; } + .pagination li { + font-size: 0.875rem; + margin-left: 0.0625rem; + border-radius: 0; + display: none; } + .pagination li:last-child, .pagination li:first-child { + display: inline-block; } + @media screen and (min-width: 40em) { + .pagination li { + display: inline-block; } } + .pagination a, + .pagination button { + color: #0a0a0a; + display: block; + padding: 0.1875rem 0.625rem; + border-radius: 0; } + .pagination a:hover, + .pagination button:hover { + background: #e6e6e6; } + .pagination .current { + padding: 0.1875rem 0.625rem; + background: #2199e8; + color: #fefefe; + cursor: default; } + .pagination .disabled { + padding: 0.1875rem 0.625rem; + color: #cacaca; + cursor: not-allowed; } + .pagination .disabled:hover { + background: transparent; } + .pagination .ellipsis::after { + content: '\2026'; + padding: 0.1875rem 0.625rem; + color: #0a0a0a; } + +.pagination-previous a::before, +.pagination-previous.disabled::before { + content: '\00ab'; + display: inline-block; + margin-left: 0.5rem; } + +.pagination-next a::after, +.pagination-next.disabled::after { + content: '\00bb'; + display: inline-block; + margin-right: 0.5rem; } + +.progress { + background-color: #cacaca; + height: 1rem; + margin-bottom: 1rem; + border-radius: 0; } + .progress.primary .progress-meter { + background-color: #2199e8; } + .progress.secondary .progress-meter { + background-color: #777; } + .progress.success .progress-meter { + background-color: #3adb76; } + .progress.warning .progress-meter { + background-color: #ffae00; } + .progress.alert .progress-meter { + background-color: #ec5840; } + +.progress-meter { + position: relative; + display: block; + width: 0%; + height: 100%; + background-color: #2199e8; } + +.progress-meter-text { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + position: absolute; + margin: 0; + font-size: 0.75rem; + font-weight: bold; + color: #fefefe; + white-space: nowrap; } + +.slider { + position: relative; + height: 0.5rem; + margin-top: 1.25rem; + margin-bottom: 2.25rem; + background-color: #e6e6e6; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -ms-touch-action: none; + touch-action: none; } + +.slider-fill { + position: absolute; + top: 0; + left: 0; + display: inline-block; + max-width: 100%; + height: 0.5rem; + background-color: #cacaca; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; } + .slider-fill.is-dragging { + -webkit-transition: all 0s linear; + transition: all 0s linear; } + +.slider-handle { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + position: absolute; + left: 0; + z-index: 1; + display: inline-block; + width: 1.4rem; + height: 1.4rem; + background-color: #2199e8; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + -ms-touch-action: manipulation; + touch-action: manipulation; + border-radius: 0; } + [data-whatinput='mouse'] .slider-handle { + outline: 0; } + .slider-handle:hover { + background-color: #1583cc; } + .slider-handle.is-dragging { + -webkit-transition: all 0s linear; + transition: all 0s linear; } + +.slider.disabled, +.slider[disabled] { + opacity: 0.25; + cursor: not-allowed; } + +.slider.vertical { + display: inline-block; + width: 0.5rem; + height: 12.5rem; + margin: 0 1.25rem; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); } + .slider.vertical .slider-fill { + top: 0; + width: 0.5rem; + max-height: 100%; } + .slider.vertical .slider-handle { + position: absolute; + top: 0; + left: 50%; + width: 1.4rem; + height: 1.4rem; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); } + +.slider:not(.vertical) { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.sticky-container { + position: relative; } + +.sticky { + position: absolute; + z-index: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.sticky.is-stuck { + position: fixed; + z-index: 5; } + .sticky.is-stuck.is-at-top { + top: 0; } + .sticky.is-stuck.is-at-bottom { + bottom: 0; } + +.sticky.is-anchored { + position: absolute; + left: auto; + right: auto; } + .sticky.is-anchored.is-at-bottom { + bottom: 0; } + +body.is-reveal-open { + overflow: hidden; } + +html.is-reveal-open, +html.is-reveal-open body { + height: 100%; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.reveal-overlay { + display: none; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1005; + background-color: rgba(10, 10, 10, 0.45); + overflow-y: scroll; } + +.reveal { + display: none; + z-index: 1006; + padding: 1rem; + border: 1px solid #cacaca; + background-color: #fefefe; + border-radius: 0; + position: relative; + top: 100px; + margin-left: auto; + margin-right: auto; + overflow-y: auto; } + [data-whatinput='mouse'] .reveal { + outline: 0; } + @media screen and (min-width: 40em) { + .reveal { + min-height: 0; } } + .reveal .column, .reveal .columns, + .reveal .columns { + min-width: 0; } + .reveal > :last-child { + margin-bottom: 0; } + @media screen and (min-width: 40em) { + .reveal { + width: 600px; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal .reveal { + left: auto; + right: auto; + margin: 0 auto; } } + .reveal.collapse { + padding: 0; } + @media screen and (min-width: 40em) { + .reveal.tiny { + width: 30%; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal.small { + width: 50%; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal.large { + width: 90%; + max-width: 75rem; } } + .reveal.full { + top: 0; + left: 0; + width: 100%; + height: 100%; + height: 100vh; + min-height: 100vh; + max-width: none; + margin-left: 0; + border: 0; + border-radius: 0; } + @media screen and (max-width: 39.9375em) { + .reveal { + top: 0; + left: 0; + width: 100%; + height: 100%; + height: 100vh; + min-height: 100vh; + max-width: none; + margin-left: 0; + border: 0; + border-radius: 0; } } + .reveal.without-overlay { + position: fixed; } + +.switch { + margin-bottom: 1rem; + outline: 0; + position: relative; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #fefefe; + font-weight: bold; + font-size: 0.875rem; } + +.switch-input { + opacity: 0; + position: absolute; } + +.switch-paddle { + background: #cacaca; + cursor: pointer; + display: block; + position: relative; + width: 4rem; + height: 2rem; + -webkit-transition: all 0.25s ease-out; + transition: all 0.25s ease-out; + border-radius: 0; + color: inherit; + font-weight: inherit; } + input + .switch-paddle { + margin: 0; } + .switch-paddle::after { + background: #fefefe; + content: ''; + display: block; + position: absolute; + height: 1.5rem; + right: 0.25rem; + top: 0.25rem; + width: 1.5rem; + -webkit-transition: all 0.25s ease-out; + transition: all 0.25s ease-out; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + border-radius: 0; } + input:checked ~ .switch-paddle { + background: #2199e8; } + input:checked ~ .switch-paddle::after { + right: 2.25rem; } + [data-whatinput='mouse'] input:focus ~ .switch-paddle { + outline: 0; } + +.switch-active, .switch-inactive { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + +.switch-active { + right: 8%; + display: none; } + input:checked + label > .switch-active { + display: block; } + +.switch-inactive { + left: 15%; } + input:checked + label > .switch-inactive { + display: none; } + +.switch.tiny .switch-paddle { + width: 3rem; + height: 1.5rem; + font-size: 0.625rem; } + +.switch.tiny .switch-paddle::after { + width: 1rem; + height: 1rem; } + +.switch.tiny input:checked ~ .switch-paddle::after { + right: 1.75rem; } + +.switch.small .switch-paddle { + width: 3.5rem; + height: 1.75rem; + font-size: 0.75rem; } + +.switch.small .switch-paddle::after { + width: 1.25rem; + height: 1.25rem; } + +.switch.small input:checked ~ .switch-paddle::after { + right: 2rem; } + +.switch.large .switch-paddle { + width: 5rem; + height: 2.5rem; + font-size: 1rem; } + +.switch.large .switch-paddle::after { + width: 2rem; + height: 2rem; } + +.switch.large input:checked ~ .switch-paddle::after { + right: 2.75rem; } + +table { + width: 100%; + margin-bottom: 1rem; + border-radius: 0; } + table thead, + table tbody, + table tfoot { + border: 1px solid #f1f1f1; + background-color: #fefefe; } + table caption { + font-weight: bold; + padding: 0.5rem 0.625rem 0.625rem; } + table thead, + table tfoot { + background: #f8f8f8; + color: #0a0a0a; } + table thead tr, + table tfoot tr { + background: transparent; } + table thead th, + table thead td, + table tfoot th, + table tfoot td { + padding: 0.5rem 0.625rem 0.625rem; + font-weight: bold; + text-align: right; } + table tbody tr:nth-child(even) { + background-color: #f1f1f1; } + table tbody th, + table tbody td { + padding: 0.5rem 0.625rem 0.625rem; } + +@media screen and (max-width: 63.9375em) { + table.stack thead { + display: none; } + table.stack tfoot { + display: none; } + table.stack tr, + table.stack th, + table.stack td { + display: block; } + table.stack td { + border-top: 0; } } + +table.scroll { + display: block; + width: 100%; + overflow-x: auto; } + +table.hover tr:hover { + background-color: #f9f9f9; } + +table.hover tr:nth-of-type(even):hover { + background-color: #ececec; } + +.table-scroll { + overflow-x: auto; } + .table-scroll table { + width: auto; } + +.tabs { + margin: 0; + list-style-type: none; + background: #fefefe; + border: 1px solid #e6e6e6; } + .tabs::before, .tabs::after { + content: ' '; + display: table; } + .tabs::after { + clear: both; } + +.tabs.vertical > li { + width: auto; + float: none; + display: block; } + +.tabs.simple > li > a { + padding: 0; } + .tabs.simple > li > a:hover { + background: transparent; } + +.tabs.primary { + background: #2199e8; } + .tabs.primary > li > a { + color: #fefefe; } + .tabs.primary > li > a:hover, .tabs.primary > li > a:focus { + background: #1893e4; } + +.tabs-title { + float: right; } + .tabs-title > a { + display: block; + padding: 1.25rem 1.5rem; + line-height: 1; + font-size: 0.75rem; } + .tabs-title > a:hover { + background: #fefefe; } + .tabs-title > a:focus, .tabs-title > a[aria-selected='true'] { + background: #e6e6e6; } + +.tabs-content { + background: #fefefe; + -webkit-transition: all 0.5s ease; + transition: all 0.5s ease; + border: 1px solid #e6e6e6; + border-top: 0; } + +.tabs-content.vertical { + border: 1px solid #e6e6e6; + border-right: 0; } + +.tabs-panel { + display: none; + padding: 1rem; } + .tabs-panel.is-active { + display: block; } + +.thumbnail { + border: solid 4px #fefefe; + -webkit-box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2); + box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2); + display: inline-block; + line-height: 0; + max-width: 100%; + -webkit-transition: -webkit-box-shadow 200ms ease-out; + transition: box-shadow 200ms ease-out; + border-radius: 0; + margin-bottom: 1rem; } + .thumbnail:hover, .thumbnail:focus { + -webkit-box-shadow: 0 0 6px 1px rgba(33, 153, 232, 0.5); + box-shadow: 0 0 6px 1px rgba(33, 153, 232, 0.5); } + +.title-bar { + background: #0a0a0a; + color: #fefefe; + padding: 0.5rem; } + .title-bar::before, .title-bar::after { + content: ' '; + display: table; } + .title-bar::after { + clear: both; } + .title-bar .menu-icon { + margin-right: 0.25rem; + margin-left: 0.25rem; } + +.title-bar-left { + float: left; } + +.title-bar-right { + float: right; + text-align: right; } + +.title-bar-title { + font-weight: bold; + vertical-align: middle; + display: inline-block; } + +.menu-icon.dark { + position: relative; + display: inline-block; + vertical-align: middle; + cursor: pointer; + width: 20px; + height: 16px; } + .menu-icon.dark::after { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 2px; + background: #0a0a0a; + top: 0; + left: 0; + -webkit-box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; + box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; } + .menu-icon.dark:hover::after { + background: #8a8a8a; + -webkit-box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; + box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; } + +.has-tip { + border-bottom: dotted 1px #8a8a8a; + font-weight: bold; + position: relative; + display: inline-block; + cursor: help; } + +.tooltip { + background-color: #0a0a0a; + color: #fefefe; + font-size: 80%; + padding: 0.75rem; + position: absolute; + z-index: 10; + top: calc(100% + 0.6495rem); + max-width: 10rem !important; + border-radius: 0; } + .tooltip::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent transparent #0a0a0a; + border-bottom-style: solid; + border-top-width: 0; + bottom: 100%; + position: absolute; + left: 50%; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); } + .tooltip.top::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: #0a0a0a transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + top: 100%; + bottom: auto; } + .tooltip.left::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent transparent transparent #0a0a0a; + border-left-style: solid; + border-right-width: 0; + bottom: auto; + left: 100%; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + .tooltip.right::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent #0a0a0a transparent transparent; + border-right-style: solid; + border-left-width: 0; + bottom: auto; + left: auto; + right: 100%; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + +.top-bar { + padding: 0.5rem; } + .top-bar::before, .top-bar::after { + content: ' '; + display: table; } + .top-bar::after { + clear: both; } + .top-bar, + .top-bar ul { + background-color: #e6e6e6; } + .top-bar input { + max-width: 200px; + margin-left: 1rem; } + .top-bar .input-group-field { + width: 100%; + margin-left: 0; } + .top-bar input.button { + width: auto; } + .top-bar .top-bar-left, + .top-bar .top-bar-right { + width: 100%; } + @media screen and (min-width: 40em) { + .top-bar .top-bar-left, + .top-bar .top-bar-right { + width: auto; } } + @media screen and (max-width: 63.9375em) { + .top-bar.stacked-for-medium .top-bar-left, + .top-bar.stacked-for-medium .top-bar-right { + width: 100%; } } + @media screen and (max-width: 74.9375em) { + .top-bar.stacked-for-large .top-bar-left, + .top-bar.stacked-for-large .top-bar-right { + width: 100%; } } + +.top-bar-title { + float: left; + margin-right: 1rem; } + +.top-bar-left { + float: left; } + +.top-bar-right { + float: right; } + +.hide { + display: none !important; } + +.invisible { + visibility: hidden; } + +@media screen and (max-width: 39.9375em) { + .hide-for-small-only { + display: none !important; } } + +@media screen and (max-width: 0em), screen and (min-width: 40em) { + .show-for-small-only { + display: none !important; } } + +@media screen and (min-width: 40em) { + .hide-for-medium { + display: none !important; } } + +@media screen and (max-width: 39.9375em) { + .show-for-medium { + display: none !important; } } + +@media screen and (min-width: 40em) and (max-width: 63.9375em) { + .hide-for-medium-only { + display: none !important; } } + +@media screen and (max-width: 39.9375em), screen and (min-width: 64em) { + .show-for-medium-only { + display: none !important; } } + +@media screen and (min-width: 64em) { + .hide-for-large { + display: none !important; } } + +@media screen and (max-width: 63.9375em) { + .show-for-large { + display: none !important; } } + +@media screen and (min-width: 64em) and (max-width: 74.9375em) { + .hide-for-large-only { + display: none !important; } } + +@media screen and (max-width: 63.9375em), screen and (min-width: 75em) { + .show-for-large-only { + display: none !important; } } + +.show-for-sr, +.show-on-focus { + position: absolute !important; + width: 1px; + height: 1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); } + +.show-on-focus:active, .show-on-focus:focus { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + +.show-for-landscape, +.hide-for-portrait { + display: block !important; } + @media screen and (orientation: landscape) { + .show-for-landscape, + .hide-for-portrait { + display: block !important; } } + @media screen and (orientation: portrait) { + .show-for-landscape, + .hide-for-portrait { + display: none !important; } } + +.hide-for-landscape, +.show-for-portrait { + display: none !important; } + @media screen and (orientation: landscape) { + .hide-for-landscape, + .show-for-portrait { + display: none !important; } } + @media screen and (orientation: portrait) { + .hide-for-landscape, + .show-for-portrait { + display: block !important; } } + +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.float-center { + display: block; + margin-left: auto; + margin-right: auto; } + +.clearfix::before, .clearfix::after { + content: ' '; + display: table; } + +.clearfix::after { + clear: both; } + +/*# sourceMappingURL=foundation-rtl.css.map */ diff --git a/libraries/foundation-6/dist/foundation-rtl.min.css b/libraries/foundation-6/dist/foundation-rtl.min.css new file mode 100755 index 00000000..f11786c0 --- /dev/null +++ b/libraries/foundation-6/dist/foundation-rtl.min.css @@ -0,0 +1,2 @@ +@charset "UTF-8"; +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:not-allowed}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{font-size:100%;box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{padding:0;margin:0;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;line-height:1.5;color:#0a0a0a;background:#fefefe;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{max-width:100%;height:auto;-ms-interpolation-mode:bicubic;display:inline-block;vertical-align:middle}textarea{height:auto;min-height:50px;border-radius:0}select{width:100%;border-radius:0}#map_canvas embed,#map_canvas img,#map_canvas object,.map_canvas embed,.map_canvas img,.map_canvas object,.mqa-display embed,.mqa-display img,.mqa-display object{max-width:none!important}button{-webkit-appearance:none;-moz-appearance:none;background:transparent;padding:0;border:0;border-radius:0;line-height:1}[data-whatinput=mouse] button{outline:0}.is-visible{display:block!important}.is-hidden{display:none!important}.row{max-width:75rem;margin-left:auto;margin-right:auto}.row:after,.row:before{content:' ';display:table}.row:after{clear:both}.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0}.row .row{max-width:none;margin-left:-.625rem;margin-right:-.625rem}@media screen and (min-width:40em){.row .row{margin-left:-.9375rem;margin-right:-.9375rem}}.row .row.collapse{margin-left:0;margin-right:0}.row.expanded{max-width:none}.row.expanded .row{margin-left:auto;margin-right:auto}.column,.columns{width:100%;float:right;padding-left:.625rem;padding-right:.625rem}@media screen and (min-width:40em){.column,.columns{padding-left:.9375rem;padding-right:.9375rem}}.column:last-child:not(:first-child),.columns:last-child:not(:first-child){float:left}.column.end:last-child:last-child,.end.columns:last-child:last-child{float:right}.column.row.row,.row.row.columns{float:none}.row .column.row.row,.row .row.row.columns{padding-left:0;padding-right:0;margin-left:0;margin-right:0}.small-1{width:8.33333%}.small-push-1{position:relative;right:8.33333%}.small-pull-1{position:relative;right:-8.33333%}.small-offset-0{margin-right:0}.small-2{width:16.66667%}.small-push-2{position:relative;right:16.66667%}.small-pull-2{position:relative;right:-16.66667%}.small-offset-1{margin-right:8.33333%}.small-3{width:25%}.small-push-3{position:relative;right:25%}.small-pull-3{position:relative;right:-25%}.small-offset-2{margin-right:16.66667%}.small-4{width:33.33333%}.small-push-4{position:relative;right:33.33333%}.small-pull-4{position:relative;right:-33.33333%}.small-offset-3{margin-right:25%}.small-5{width:41.66667%}.small-push-5{position:relative;right:41.66667%}.small-pull-5{position:relative;right:-41.66667%}.small-offset-4{margin-right:33.33333%}.small-6{width:50%}.small-push-6{position:relative;right:50%}.small-pull-6{position:relative;right:-50%}.small-offset-5{margin-right:41.66667%}.small-7{width:58.33333%}.small-push-7{position:relative;right:58.33333%}.small-pull-7{position:relative;right:-58.33333%}.small-offset-6{margin-right:50%}.small-8{width:66.66667%}.small-push-8{position:relative;right:66.66667%}.small-pull-8{position:relative;right:-66.66667%}.small-offset-7{margin-right:58.33333%}.small-9{width:75%}.small-push-9{position:relative;right:75%}.small-pull-9{position:relative;right:-75%}.small-offset-8{margin-right:66.66667%}.small-10{width:83.33333%}.small-push-10{position:relative;right:83.33333%}.small-pull-10{position:relative;right:-83.33333%}.small-offset-9{margin-right:75%}.small-11{width:91.66667%}.small-push-11{position:relative;right:91.66667%}.small-pull-11{position:relative;right:-91.66667%}.small-offset-10{margin-right:83.33333%}.small-12{width:100%}.small-offset-11{margin-right:91.66667%}.small-up-1>.column,.small-up-1>.columns{width:100%;float:right}.small-up-1>.column:nth-of-type(1n),.small-up-1>.columns:nth-of-type(1n){clear:none}.small-up-1>.column:nth-of-type(1n+1),.small-up-1>.columns:nth-of-type(1n+1){clear:both}.small-up-1>.column:last-child,.small-up-1>.columns:last-child{float:left}.small-up-2>.column,.small-up-2>.columns{width:50%;float:right}.small-up-2>.column:nth-of-type(1n),.small-up-2>.columns:nth-of-type(1n){clear:none}.small-up-2>.column:nth-of-type(2n+1),.small-up-2>.columns:nth-of-type(2n+1){clear:both}.small-up-2>.column:last-child,.small-up-2>.columns:last-child{float:left}.small-up-3>.column,.small-up-3>.columns{width:33.33333%;float:right}.small-up-3>.column:nth-of-type(1n),.small-up-3>.columns:nth-of-type(1n){clear:none}.small-up-3>.column:nth-of-type(3n+1),.small-up-3>.columns:nth-of-type(3n+1){clear:both}.small-up-3>.column:last-child,.small-up-3>.columns:last-child{float:left}.small-up-4>.column,.small-up-4>.columns{width:25%;float:right}.small-up-4>.column:nth-of-type(1n),.small-up-4>.columns:nth-of-type(1n){clear:none}.small-up-4>.column:nth-of-type(4n+1),.small-up-4>.columns:nth-of-type(4n+1){clear:both}.small-up-4>.column:last-child,.small-up-4>.columns:last-child{float:left}.small-up-5>.column,.small-up-5>.columns{width:20%;float:right}.small-up-5>.column:nth-of-type(1n),.small-up-5>.columns:nth-of-type(1n){clear:none}.small-up-5>.column:nth-of-type(5n+1),.small-up-5>.columns:nth-of-type(5n+1){clear:both}.small-up-5>.column:last-child,.small-up-5>.columns:last-child{float:left}.small-up-6>.column,.small-up-6>.columns{width:16.66667%;float:right}.small-up-6>.column:nth-of-type(1n),.small-up-6>.columns:nth-of-type(1n){clear:none}.small-up-6>.column:nth-of-type(6n+1),.small-up-6>.columns:nth-of-type(6n+1){clear:both}.small-up-6>.column:last-child,.small-up-6>.columns:last-child{float:left}.small-up-7>.column,.small-up-7>.columns{width:14.28571%;float:right}.small-up-7>.column:nth-of-type(1n),.small-up-7>.columns:nth-of-type(1n){clear:none}.small-up-7>.column:nth-of-type(7n+1),.small-up-7>.columns:nth-of-type(7n+1){clear:both}.small-up-7>.column:last-child,.small-up-7>.columns:last-child{float:left}.small-up-8>.column,.small-up-8>.columns{width:12.5%;float:right}.small-up-8>.column:nth-of-type(1n),.small-up-8>.columns:nth-of-type(1n){clear:none}.small-up-8>.column:nth-of-type(8n+1),.small-up-8>.columns:nth-of-type(8n+1){clear:both}.small-up-8>.column:last-child,.small-up-8>.columns:last-child{float:left}.small-collapse>.column,.small-collapse>.columns{padding-left:0;padding-right:0}.expanded.row .small-collapse.row,.small-collapse .row{margin-left:0;margin-right:0}.small-uncollapse>.column,.small-uncollapse>.columns{padding-left:.625rem;padding-right:.625rem}.small-centered{float:none;margin-left:auto;margin-right:auto}.small-pull-0,.small-push-0,.small-uncentered{position:static;margin-left:0;margin-right:0;float:left}@media screen and (min-width:40em){.medium-1{width:8.33333%}.medium-push-1{position:relative;right:8.33333%}.medium-pull-1{position:relative;right:-8.33333%}.medium-offset-0{margin-right:0}.medium-2{width:16.66667%}.medium-push-2{position:relative;right:16.66667%}.medium-pull-2{position:relative;right:-16.66667%}.medium-offset-1{margin-right:8.33333%}.medium-3{width:25%}.medium-push-3{position:relative;right:25%}.medium-pull-3{position:relative;right:-25%}.medium-offset-2{margin-right:16.66667%}.medium-4{width:33.33333%}.medium-push-4{position:relative;right:33.33333%}.medium-pull-4{position:relative;right:-33.33333%}.medium-offset-3{margin-right:25%}.medium-5{width:41.66667%}.medium-push-5{position:relative;right:41.66667%}.medium-pull-5{position:relative;right:-41.66667%}.medium-offset-4{margin-right:33.33333%}.medium-6{width:50%}.medium-push-6{position:relative;right:50%}.medium-pull-6{position:relative;right:-50%}.medium-offset-5{margin-right:41.66667%}.medium-7{width:58.33333%}.medium-push-7{position:relative;right:58.33333%}.medium-pull-7{position:relative;right:-58.33333%}.medium-offset-6{margin-right:50%}.medium-8{width:66.66667%}.medium-push-8{position:relative;right:66.66667%}.medium-pull-8{position:relative;right:-66.66667%}.medium-offset-7{margin-right:58.33333%}.medium-9{width:75%}.medium-push-9{position:relative;right:75%}.medium-pull-9{position:relative;right:-75%}.medium-offset-8{margin-right:66.66667%}.medium-10{width:83.33333%}.medium-push-10{position:relative;right:83.33333%}.medium-pull-10{position:relative;right:-83.33333%}.medium-offset-9{margin-right:75%}.medium-11{width:91.66667%}.medium-push-11{position:relative;right:91.66667%}.medium-pull-11{position:relative;right:-91.66667%}.medium-offset-10{margin-right:83.33333%}.medium-12{width:100%}.medium-offset-11{margin-right:91.66667%}.medium-up-1>.column,.medium-up-1>.columns{width:100%;float:right}.medium-up-1>.column:nth-of-type(1n),.medium-up-1>.columns:nth-of-type(1n){clear:none}.medium-up-1>.column:nth-of-type(1n+1),.medium-up-1>.columns:nth-of-type(1n+1){clear:both}.medium-up-1>.column:last-child,.medium-up-1>.columns:last-child{float:left}.medium-up-2>.column,.medium-up-2>.columns{width:50%;float:right}.medium-up-2>.column:nth-of-type(1n),.medium-up-2>.columns:nth-of-type(1n){clear:none}.medium-up-2>.column:nth-of-type(2n+1),.medium-up-2>.columns:nth-of-type(2n+1){clear:both}.medium-up-2>.column:last-child,.medium-up-2>.columns:last-child{float:left}.medium-up-3>.column,.medium-up-3>.columns{width:33.33333%;float:right}.medium-up-3>.column:nth-of-type(1n),.medium-up-3>.columns:nth-of-type(1n){clear:none}.medium-up-3>.column:nth-of-type(3n+1),.medium-up-3>.columns:nth-of-type(3n+1){clear:both}.medium-up-3>.column:last-child,.medium-up-3>.columns:last-child{float:left}.medium-up-4>.column,.medium-up-4>.columns{width:25%;float:right}.medium-up-4>.column:nth-of-type(1n),.medium-up-4>.columns:nth-of-type(1n){clear:none}.medium-up-4>.column:nth-of-type(4n+1),.medium-up-4>.columns:nth-of-type(4n+1){clear:both}.medium-up-4>.column:last-child,.medium-up-4>.columns:last-child{float:left}.medium-up-5>.column,.medium-up-5>.columns{width:20%;float:right}.medium-up-5>.column:nth-of-type(1n),.medium-up-5>.columns:nth-of-type(1n){clear:none}.medium-up-5>.column:nth-of-type(5n+1),.medium-up-5>.columns:nth-of-type(5n+1){clear:both}.medium-up-5>.column:last-child,.medium-up-5>.columns:last-child{float:left}.medium-up-6>.column,.medium-up-6>.columns{width:16.66667%;float:right}.medium-up-6>.column:nth-of-type(1n),.medium-up-6>.columns:nth-of-type(1n){clear:none}.medium-up-6>.column:nth-of-type(6n+1),.medium-up-6>.columns:nth-of-type(6n+1){clear:both}.medium-up-6>.column:last-child,.medium-up-6>.columns:last-child{float:left}.medium-up-7>.column,.medium-up-7>.columns{width:14.28571%;float:right}.medium-up-7>.column:nth-of-type(1n),.medium-up-7>.columns:nth-of-type(1n){clear:none}.medium-up-7>.column:nth-of-type(7n+1),.medium-up-7>.columns:nth-of-type(7n+1){clear:both}.medium-up-7>.column:last-child,.medium-up-7>.columns:last-child{float:left}.medium-up-8>.column,.medium-up-8>.columns{width:12.5%;float:right}.medium-up-8>.column:nth-of-type(1n),.medium-up-8>.columns:nth-of-type(1n){clear:none}.medium-up-8>.column:nth-of-type(8n+1),.medium-up-8>.columns:nth-of-type(8n+1){clear:both}.medium-up-8>.column:last-child,.medium-up-8>.columns:last-child{float:left}.medium-collapse>.column,.medium-collapse>.columns{padding-left:0;padding-right:0}.expanded.row .medium-collapse.row,.medium-collapse .row{margin-left:0;margin-right:0}.medium-uncollapse>.column,.medium-uncollapse>.columns{padding-left:.9375rem;padding-right:.9375rem}.medium-centered{float:none;margin-left:auto;margin-right:auto}.medium-pull-0,.medium-push-0,.medium-uncentered{position:static;margin-left:0;margin-right:0;float:left}}@media screen and (min-width:64em){.large-1{width:8.33333%}.large-push-1{position:relative;right:8.33333%}.large-pull-1{position:relative;right:-8.33333%}.large-offset-0{margin-right:0}.large-2{width:16.66667%}.large-push-2{position:relative;right:16.66667%}.large-pull-2{position:relative;right:-16.66667%}.large-offset-1{margin-right:8.33333%}.large-3{width:25%}.large-push-3{position:relative;right:25%}.large-pull-3{position:relative;right:-25%}.large-offset-2{margin-right:16.66667%}.large-4{width:33.33333%}.large-push-4{position:relative;right:33.33333%}.large-pull-4{position:relative;right:-33.33333%}.large-offset-3{margin-right:25%}.large-5{width:41.66667%}.large-push-5{position:relative;right:41.66667%}.large-pull-5{position:relative;right:-41.66667%}.large-offset-4{margin-right:33.33333%}.large-6{width:50%}.large-push-6{position:relative;right:50%}.large-pull-6{position:relative;right:-50%}.large-offset-5{margin-right:41.66667%}.large-7{width:58.33333%}.large-push-7{position:relative;right:58.33333%}.large-pull-7{position:relative;right:-58.33333%}.large-offset-6{margin-right:50%}.large-8{width:66.66667%}.large-push-8{position:relative;right:66.66667%}.large-pull-8{position:relative;right:-66.66667%}.large-offset-7{margin-right:58.33333%}.large-9{width:75%}.large-push-9{position:relative;right:75%}.large-pull-9{position:relative;right:-75%}.large-offset-8{margin-right:66.66667%}.large-10{width:83.33333%}.large-push-10{position:relative;right:83.33333%}.large-pull-10{position:relative;right:-83.33333%}.large-offset-9{margin-right:75%}.large-11{width:91.66667%}.large-push-11{position:relative;right:91.66667%}.large-pull-11{position:relative;right:-91.66667%}.large-offset-10{margin-right:83.33333%}.large-12{width:100%}.large-offset-11{margin-right:91.66667%}.large-up-1>.column,.large-up-1>.columns{width:100%;float:right}.large-up-1>.column:nth-of-type(1n),.large-up-1>.columns:nth-of-type(1n){clear:none}.large-up-1>.column:nth-of-type(1n+1),.large-up-1>.columns:nth-of-type(1n+1){clear:both}.large-up-1>.column:last-child,.large-up-1>.columns:last-child{float:left}.large-up-2>.column,.large-up-2>.columns{width:50%;float:right}.large-up-2>.column:nth-of-type(1n),.large-up-2>.columns:nth-of-type(1n){clear:none}.large-up-2>.column:nth-of-type(2n+1),.large-up-2>.columns:nth-of-type(2n+1){clear:both}.large-up-2>.column:last-child,.large-up-2>.columns:last-child{float:left}.large-up-3>.column,.large-up-3>.columns{width:33.33333%;float:right}.large-up-3>.column:nth-of-type(1n),.large-up-3>.columns:nth-of-type(1n){clear:none}.large-up-3>.column:nth-of-type(3n+1),.large-up-3>.columns:nth-of-type(3n+1){clear:both}.large-up-3>.column:last-child,.large-up-3>.columns:last-child{float:left}.large-up-4>.column,.large-up-4>.columns{width:25%;float:right}.large-up-4>.column:nth-of-type(1n),.large-up-4>.columns:nth-of-type(1n){clear:none}.large-up-4>.column:nth-of-type(4n+1),.large-up-4>.columns:nth-of-type(4n+1){clear:both}.large-up-4>.column:last-child,.large-up-4>.columns:last-child{float:left}.large-up-5>.column,.large-up-5>.columns{width:20%;float:right}.large-up-5>.column:nth-of-type(1n),.large-up-5>.columns:nth-of-type(1n){clear:none}.large-up-5>.column:nth-of-type(5n+1),.large-up-5>.columns:nth-of-type(5n+1){clear:both}.large-up-5>.column:last-child,.large-up-5>.columns:last-child{float:left}.large-up-6>.column,.large-up-6>.columns{width:16.66667%;float:right}.large-up-6>.column:nth-of-type(1n),.large-up-6>.columns:nth-of-type(1n){clear:none}.large-up-6>.column:nth-of-type(6n+1),.large-up-6>.columns:nth-of-type(6n+1){clear:both}.large-up-6>.column:last-child,.large-up-6>.columns:last-child{float:left}.large-up-7>.column,.large-up-7>.columns{width:14.28571%;float:right}.large-up-7>.column:nth-of-type(1n),.large-up-7>.columns:nth-of-type(1n){clear:none}.large-up-7>.column:nth-of-type(7n+1),.large-up-7>.columns:nth-of-type(7n+1){clear:both}.large-up-7>.column:last-child,.large-up-7>.columns:last-child{float:left}.large-up-8>.column,.large-up-8>.columns{width:12.5%;float:right}.large-up-8>.column:nth-of-type(1n),.large-up-8>.columns:nth-of-type(1n){clear:none}.large-up-8>.column:nth-of-type(8n+1),.large-up-8>.columns:nth-of-type(8n+1){clear:both}.large-up-8>.column:last-child,.large-up-8>.columns:last-child{float:left}.large-collapse>.column,.large-collapse>.columns{padding-left:0;padding-right:0}.expanded.row .large-collapse.row,.large-collapse .row{margin-left:0;margin-right:0}.large-uncollapse>.column,.large-uncollapse>.columns{padding-left:.9375rem;padding-right:.9375rem}.large-centered{float:none;margin-left:auto;margin-right:auto}.large-pull-0,.large-push-0,.large-uncentered{position:static;margin-left:0;margin-right:0;float:left}}blockquote,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,li,ol,p,pre,td,th,ul{margin:0;padding:0}p{font-size:inherit;line-height:1.6;margin-bottom:1rem;text-rendering:optimizeLegibility}em,i{font-style:italic}b,em,i,strong{line-height:inherit}b,strong{font-weight:700}small{font-size:80%;line-height:inherit}h1,h2,h3,h4,h5,h6{font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;font-style:normal;color:inherit;text-rendering:optimizeLegibility;margin-top:0;margin-bottom:.5rem;line-height:1.4}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#cacaca;line-height:0}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.1875rem}h4{font-size:1.125rem}h5{font-size:1.0625rem}h6{font-size:1rem}@media screen and (min-width:40em){h1{font-size:3rem}h2{font-size:2.5rem}h3{font-size:1.9375rem}h4{font-size:1.5625rem}h5{font-size:1.25rem}h6{font-size:1rem}}a{color:#2199e8;text-decoration:none;line-height:inherit;cursor:pointer}a:focus,a:hover{color:#1585cf}a img{border:0}hr{max-width:75rem;height:0;border-right:0;border-top:0;border-bottom:1px solid #cacaca;border-left:0;margin:1.25rem auto;clear:both}dl,ol,ul{line-height:1.6;margin-bottom:1rem;list-style-position:outside}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-right:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-right:1.25rem;margin-bottom:0}dl{margin-bottom:1rem}dl dt{margin-bottom:.3rem;font-weight:700}blockquote{margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem;border-right:1px solid #cacaca}blockquote,blockquote p{line-height:1.6;color:#8a8a8a}cite{display:block;font-size:.8125rem;color:#8a8a8a}cite:before{content:'\2014 \0020'}abbr{color:#0a0a0a;cursor:help;border-bottom:1px dotted #0a0a0a}code{font-weight:400;border:1px solid #cacaca;padding:.125rem .3125rem .0625rem}code,kbd{font-family:Consolas,Liberation Mono,Courier,monospace;color:#0a0a0a;background-color:#e6e6e6}kbd{padding:.125rem .25rem 0;margin:0}.subheader{margin-top:.2rem;margin-bottom:.5rem;font-weight:400;line-height:1.4;color:#8a8a8a}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}.no-bullet{margin-right:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none!important}@media print{*{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}.show-for-print{display:block!important}.hide-for-print{display:none!important}table.show-for-print{display:table!important}thead.show-for-print{display:table-header-group!important}tbody.show-for-print{display:table-row-group!important}tr.show-for-print{display:table-row!important}td.show-for-print,th.show-for-print{display:table-cell!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^='#']:after,a[href^='javascript:']:after{content:''}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}}[type=color],[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],textarea{display:block;box-sizing:border-box;width:100%;height:2.4375rem;padding:.5rem;border:1px solid #cacaca;margin:0 0 1rem;font-family:inherit;font-size:1rem;color:#0a0a0a;background-color:#fefefe;box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);border-radius:0;-webkit-transition:-webkit-box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out;-webkit-appearance:none;-moz-appearance:none}[type=color]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=datetime]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,textarea:focus{border:1px solid #8a8a8a;background-color:#fefefe;outline:none;box-shadow:0 0 5px #cacaca;-webkit-transition:-webkit-box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out}textarea{max-width:100%}textarea[rows]{height:auto}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#cacaca}input::-moz-placeholder,textarea::-moz-placeholder{color:#cacaca}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#cacaca}input::placeholder,textarea::placeholder{color:#cacaca}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type=button],[type=submit]{border-radius:0;-webkit-appearance:none;-moz-appearance:none}input[type=search]{box-sizing:border-box}[type=checkbox],[type=file],[type=radio]{margin:0 0 1rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;margin-right:.5rem;margin-left:1rem;margin-bottom:0;vertical-align:baseline}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-left:.5rem}[type=file]{width:100%}label{display:block;margin:0;font-size:.875rem;font-weight:400;line-height:1.8;color:#0a0a0a}label.middle{margin:0 0 1rem;padding:.5625rem 0}.help-text{margin-top:-.5rem;font-size:.8125rem;font-style:italic;color:#0a0a0a}.input-group{display:table;width:100%;margin-bottom:1rem}.input-group>:first-child,.input-group>:last-child>*{border-radius:0 0 0 0}.input-group-button,.input-group-field,.input-group-label{margin:0;white-space:nowrap;display:table-cell;vertical-align:middle}.input-group-label{text-align:center;padding:0 1rem;background:#e6e6e6;color:#0a0a0a;border:1px solid #cacaca;white-space:nowrap;width:1%;height:100%}.input-group-label:first-child{border-left:0}.input-group-label:last-child{border-right:0}.input-group-field{border-radius:0;height:2.5rem}.input-group-button{padding-top:0;padding-bottom:0;text-align:center;height:100%;width:1%}.input-group-button a,.input-group-button button,.input-group-button input{margin:0}.input-group .input-group-button{display:table-cell}fieldset{border:0;padding:0;margin:0}legend{margin-bottom:.5rem;max-width:100%}.fieldset{border:1px solid #cacaca;padding:1.25rem;margin:1.125rem 0}.fieldset legend{background:#fefefe;padding:0 .1875rem;margin:0;margin-right:-.1875rem}select{height:2.4375rem;padding:.5rem;border:1px solid #cacaca;margin:0 0 1rem;font-size:1rem;font-family:inherit;line-height:normal;color:#0a0a0a;background-color:#fefefe;border-radius:0;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%28138, 138, 138%29'></polygon></svg>");background-size:9px 6px;background-position:left -1rem center;background-origin:content-box;background-repeat:no-repeat;padding-left:1.5rem}@media screen and (min-width:0\0){select{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==")}}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{height:auto;background-image:none}.is-invalid-input:not(:focus){background-color:rgba(236,88,64,.1);border-color:#ec5840}.form-error,.is-invalid-label{color:#ec5840}.form-error{display:none;margin-top:-.5rem;margin-bottom:1rem;font-size:.75rem;font-weight:700}.form-error.is-visible{display:block}.button{display:inline-block;text-align:center;line-height:1;cursor:pointer;-webkit-appearance:none;-webkit-transition:background-color .25s ease-out,color .25s ease-out;transition:background-color .25s ease-out,color .25s ease-out;vertical-align:middle;border:1px solid transparent;border-radius:0;padding:.85em 1em;margin:0 0 1rem;font-size:.9rem;background-color:#2199e8;color:#fefefe}[data-whatinput=mouse] .button{outline:0}.button:focus,.button:hover{background-color:#1583cc;color:#fefefe}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;width:100%;margin-left:0;margin-right:0}.button.primary{background-color:#2199e8;color:#fefefe}.button.primary:focus,.button.primary:hover{background-color:#147cc0;color:#fefefe}.button.secondary{background-color:#777;color:#fefefe}.button.secondary:focus,.button.secondary:hover{background-color:#5f5f5f;color:#fefefe}.button.success{background-color:#3adb76;color:#fefefe}.button.success:focus,.button.success:hover{background-color:#22bb5b;color:#fefefe}.button.warning{background-color:#ffae00;color:#fefefe}.button.warning:focus,.button.warning:hover{background-color:#cc8b00;color:#fefefe}.button.alert{background-color:#ec5840;color:#fefefe}.button.alert:focus,.button.alert:hover{background-color:#da3116;color:#fefefe}.button.hollow{border:1px solid #2199e8;color:#2199e8}.button.hollow,.button.hollow:focus,.button.hollow:hover{background-color:transparent}.button.hollow:focus,.button.hollow:hover{border-color:#0c4d78;color:#0c4d78}.button.hollow.primary{border:1px solid #2199e8;color:#2199e8}.button.hollow.primary:focus,.button.hollow.primary:hover{border-color:#0c4d78;color:#0c4d78}.button.hollow.secondary{border:1px solid #777;color:#777}.button.hollow.secondary:focus,.button.hollow.secondary:hover{border-color:#3c3c3c;color:#3c3c3c}.button.hollow.success{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:focus,.button.hollow.success:hover{border-color:#157539;color:#157539}.button.hollow.warning{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:focus,.button.hollow.warning:hover{border-color:#805700;color:#805700}.button.hollow.alert{border:1px solid #ec5840;color:#ec5840}.button.hollow.alert:focus,.button.hollow.alert:hover{border-color:#881f0e;color:#881f0e}.button.disabled,.button[disabled]{opacity:.25;cursor:not-allowed}.button.disabled:focus,.button.disabled:hover,.button[disabled]:focus,.button[disabled]:hover{background-color:#2199e8;color:#fefefe}.button.dropdown:after{content:'';display:block;width:0;height:0;border:.4em inset;border-color:#fefefe transparent transparent;border-top-style:solid;border-bottom-width:0;position:relative;top:.4em;float:left;margin-right:1em;display:inline-block}.button.arrow-only:after{margin-right:0;float:none;top:-.1em}.accordion{list-style-type:none;background:#fefefe;margin-right:0}.accordion-item:first-child>:first-child,.accordion-item:last-child>:last-child{border-radius:0 0 0 0}.accordion-title{display:block;padding:1.25rem 1rem;line-height:1;font-size:.75rem;color:#2199e8;position:relative;border:1px solid #e6e6e6;border-bottom:0}:last-child:not(.is-active)>.accordion-title{border-radius:0 0 0 0;border-bottom:1px solid #e6e6e6}.accordion-title:focus,.accordion-title:hover{background-color:#e6e6e6}.accordion-title:before{content:'+';position:absolute;left:1rem;top:50%;margin-top:-.5rem}.is-active>.accordion-title:before{content:'–'}.accordion-content{padding:1rem;display:none;border:1px solid #e6e6e6;border-bottom:0;background-color:#fefefe;color:#0a0a0a}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.is-accordion-submenu-parent>a{position:relative}.is-accordion-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:6px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;position:absolute;top:50%;margin-top:-4px;right:1rem}.is-accordion-submenu-parent[aria-expanded=true]>a:after{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:scaleY(-1);transform:scaleY(-1)}.badge{display:inline-block;padding:.3em;min-width:2.1em;font-size:.6rem;text-align:center;border-radius:50%;background:#2199e8;color:#fefefe}.badge.secondary{background:#777;color:#fefefe}.badge.success{background:#3adb76;color:#fefefe}.badge.warning{background:#ffae00;color:#fefefe}.badge.alert{background:#ec5840;color:#fefefe}.breadcrumbs{list-style:none;margin:0 0 1rem}.breadcrumbs:after,.breadcrumbs:before{content:' ';display:table}.breadcrumbs:after{clear:both}.breadcrumbs li{float:right;color:#0a0a0a;font-size:.6875rem;cursor:default;text-transform:uppercase}.breadcrumbs li:not(:last-child):after{color:#cacaca;content:"\\";margin:0 .75rem;position:relative;top:1px;opacity:1}.breadcrumbs a{color:#2199e8}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.button-group{margin-bottom:1rem;font-size:0}.button-group:after,.button-group:before{content:' ';display:table}.button-group:after{clear:both}.button-group .button{margin:0;margin-left:1px;margin-bottom:1px;font-size:.9rem}.button-group .button:last-child{margin-left:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded{margin-left:-1px}.button-group.expanded:after,.button-group.expanded:before{display:none}.button-group.expanded .button:first-child:nth-last-child(2),.button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2)~.button{display:inline-block;width:calc(50% - 1px);margin-left:1px}.button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(2):last-child{margin-left:-6px}.button-group.expanded .button:first-child:nth-last-child(3),.button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3)~.button{display:inline-block;width:calc(33.33333% - 1px);margin-left:1px}.button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(3):last-child{margin-left:-6px}.button-group.expanded .button:first-child:nth-last-child(4),.button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4)~.button{display:inline-block;width:calc(25% - 1px);margin-left:1px}.button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(4):last-child{margin-left:-6px}.button-group.expanded .button:first-child:nth-last-child(5),.button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5)~.button{display:inline-block;width:calc(20% - 1px);margin-left:1px}.button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(5):last-child{margin-left:-6px}.button-group.expanded .button:first-child:nth-last-child(6),.button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6)~.button{display:inline-block;width:calc(16.66667% - 1px);margin-left:1px}.button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(6):last-child{margin-left:-6px}.button-group.primary .button{background-color:#2199e8;color:#fefefe}.button-group.primary .button:focus,.button-group.primary .button:hover{background-color:#147cc0;color:#fefefe}.button-group.secondary .button{background-color:#777;color:#fefefe}.button-group.secondary .button:focus,.button-group.secondary .button:hover{background-color:#5f5f5f;color:#fefefe}.button-group.success .button{background-color:#3adb76;color:#fefefe}.button-group.success .button:focus,.button-group.success .button:hover{background-color:#22bb5b;color:#fefefe}.button-group.warning .button{background-color:#ffae00;color:#fefefe}.button-group.warning .button:focus,.button-group.warning .button:hover{background-color:#cc8b00;color:#fefefe}.button-group.alert .button{background-color:#ec5840;color:#fefefe}.button-group.alert .button:focus,.button-group.alert .button:hover{background-color:#da3116;color:#fefefe}.button-group.stacked-for-medium .button,.button-group.stacked-for-small .button,.button-group.stacked .button{width:100%}.button-group.stacked-for-medium .button:last-child,.button-group.stacked-for-small .button:last-child,.button-group.stacked .button:last-child{margin-bottom:0}@media screen and (min-width:40em){.button-group.stacked-for-small .button{width:auto;margin-bottom:0}}@media screen and (min-width:64em){.button-group.stacked-for-medium .button{width:auto;margin-bottom:0}}@media screen and (max-width:39.9375em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-left:0}}.callout{margin:0 0 1rem;padding:1rem;border:1px solid hsla(0,0%,4%,.25);border-radius:0;position:relative;color:#0a0a0a;background-color:#fff}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#def0fc}.callout.secondary{background-color:#ebebeb}.callout.success{background-color:#e1faea}.callout.warning{background-color:#fff3d9}.callout.alert{background-color:#fce6e2}.callout.small{padding:.5rem}.callout.large{padding:3rem}.close-button{position:absolute;color:#8a8a8a;right:1rem;top:.5rem;font-size:2em;line-height:1;cursor:pointer}[data-whatinput=mouse] .close-button{outline:0}.close-button:focus,.close-button:hover{color:#0a0a0a}.menu{margin:0;list-style-type:none}.menu>li{display:table-cell;vertical-align:middle}[data-whatinput=mouse] .menu>li{outline:0}.menu>li>a{display:block;padding:.7rem 1rem;line-height:1}.menu a,.menu button,.menu input{margin-bottom:0}.menu>li>a i,.menu>li>a i+span,.menu>li>a img,.menu>li>a img+span,.menu>li>a svg,.menu>li>a svg+span{vertical-align:middle}.menu>li>a i,.menu>li>a img,.menu>li>a svg{margin-left:.25rem;display:inline-block}.menu>li{display:table-cell}.menu.vertical>li{display:block}@media screen and (min-width:40em){.menu.medium-horizontal>li{display:table-cell}.menu.medium-vertical>li{display:block}}@media screen and (min-width:64em){.menu.large-horizontal>li{display:table-cell}.menu.large-vertical>li{display:block}}.menu.simple li{line-height:1;display:inline-block;margin-left:1rem}.menu.simple a{padding:0}.menu.align-left:after,.menu.align-left:before{content:' ';display:table}.menu.align-left:after{clear:both}.menu.align-left>li{float:left}.menu.expanded{width:100%;display:table;table-layout:fixed}.menu.expanded>li:first-child:last-child{width:100%}.menu.icon-top>li>a{text-align:center}.menu.icon-top>li>a i,.menu.icon-top>li>a img,.menu.icon-top>li>a svg{display:block;margin:0 auto .25rem}.menu.nested{margin-right:1rem}.menu .active>a{color:#fefefe;background:#2199e8}.menu-text{font-weight:700;color:inherit;line-height:1;padding-top:0;padding-bottom:0;padding:.7rem 1rem}.menu-centered{text-align:center}.menu-centered>.menu{display:inline-block}.no-js [data-responsive-menu] ul{display:none}.menu-icon{position:relative;display:inline-block;vertical-align:middle;cursor:pointer;width:20px;height:16px}.menu-icon:after{content:'';position:absolute;display:block;width:100%;height:2px;background:#fefefe;top:0;left:0;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe}.menu-icon:hover:after{background:#cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.is-drilldown{position:relative;overflow:hidden}.is-drilldown li{display:block!important}.is-drilldown-submenu{position:absolute;top:0;right:100%;z-index:-1;height:100%;width:100%;background:#fefefe;-webkit-transition:-webkit-transform .15s linear;transition:transform .15s linear}.is-drilldown-submenu.is-active{z-index:1;display:block;-webkit-transform:translateX(100%);transform:translateX(100%)}.is-drilldown-submenu.is-closing{-webkit-transform:translateX(-100%);transform:translateX(-100%)}.is-drilldown-submenu-parent>a{position:relative}.is-drilldown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:6px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0;position:absolute;top:50%;margin-top:-6px;left:1rem}.js-drilldown-back>a:before{content:'';display:block;width:0;height:0;border:6px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0;display:inline-block;vertical-align:middle;margin-left:.75rem}.dropdown-pane{background-color:#fefefe;border:1px solid #cacaca;border-radius:0;display:block;font-size:1rem;padding:1rem;position:absolute;visibility:hidden;width:300px;z-index:10}.dropdown-pane.is-open{visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.dropdown.menu>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu>li.is-dropdown-submenu-parent>a{padding-left:1.5rem;position:relative}.dropdown.menu>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;left:5px;margin-top:-2px}[data-whatinput=mouse] .dropdown.menu a{outline:0}.no-js .dropdown.menu ul{display:none}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.vertical>li>a:after{left:14px;margin-top:-3px}.dropdown.menu.vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}@media screen and (min-width:40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{padding-left:1.5rem;position:relative}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;left:5px;margin-top:-2px}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.medium-vertical>li>a:after{left:14px;margin-top:-3px}.dropdown.menu.medium-vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.medium-vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}}@media screen and (min-width:64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{padding-left:1.5rem;position:relative}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;left:5px;margin-top:-2px}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.large-vertical>li>a:after{left:14px;margin-top:-3px}.dropdown.menu.large-vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.large-vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{top:100%;left:auto;right:0}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a:after{position:absolute;top:50%;left:5px;margin-top:-2px}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{top:100%;right:auto}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{left:auto;right:100%}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{right:auto;left:100%}.is-dropdown-submenu{display:none;position:absolute;top:0;right:100%;min-width:200px;z-index:1;background:#fefefe;border:1px solid #cacaca}.is-dropdown-submenu .is-dropdown-submenu-parent>a:after{left:14px;margin-top:-3px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.flex-video{position:relative;height:0;padding-bottom:75%;margin-bottom:1rem;overflow:hidden}.flex-video embed,.flex-video iframe,.flex-video object,.flex-video video{position:absolute;top:0;right:0;width:100%;height:100%}.flex-video.widescreen{padding-bottom:56.25%}.flex-video.vimeo{padding-top:0}.label{display:inline-block;padding:.33333rem .5rem;font-size:.8rem;line-height:1;white-space:nowrap;cursor:default;border-radius:0;background:#2199e8;color:#fefefe}.label.secondary{background:#777;color:#fefefe}.label.success{background:#3adb76;color:#fefefe}.label.warning{background:#ffae00;color:#fefefe}.label.alert{background:#ec5840;color:#fefefe}.media-object{margin-bottom:1rem;display:block}.media-object img{max-width:none}@media screen and (max-width:39.9375em){.media-object.stack-for-small .media-object-section{padding:0;padding-bottom:1rem;display:block}.media-object.stack-for-small .media-object-section img{width:100%}}.media-object-section{display:table-cell;vertical-align:top}.media-object-section:first-child{padding-left:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-right:1rem}.media-object-section>:last-child{margin-bottom:0}.media-object-section.middle{vertical-align:middle}.media-object-section.bottom{vertical-align:bottom}body,html{height:100%}.off-canvas-wrapper{width:100%;overflow-x:hidden;position:relative;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-overflow-scrolling:auto}.off-canvas-wrapper-inner{position:relative;width:100%;-webkit-transition:-webkit-transform .5s ease;transition:transform .5s ease}.off-canvas-wrapper-inner:after,.off-canvas-wrapper-inner:before{content:' ';display:table}.off-canvas-wrapper-inner:after{clear:both}.off-canvas-content{min-height:100%;background:#fefefe;-webkit-transition:-webkit-transform .5s ease;transition:transform .5s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;padding-bottom:.1px;box-shadow:0 0 10px hsla(0,0%,4%,.5)}.js-off-canvas-exit{display:none;position:absolute;top:0;left:0;width:100%;height:100%;background:hsla(0,0%,100%,.25);cursor:pointer;-webkit-transition:background .5s ease;transition:background .5s ease}.off-canvas{position:absolute;background:#e6e6e6;z-index:-1;max-height:100%;overflow-y:auto;-webkit-transform:translateX(0);transform:translateX(0)}[data-whatinput=mouse] .off-canvas{outline:0}.off-canvas.position-left{left:-250px;top:0;width:250px}.is-open-left{-webkit-transform:translateX(250px);transform:translateX(250px)}.off-canvas.position-right{right:-250px;top:0;width:250px}.is-open-right{-webkit-transform:translateX(-250px);transform:translateX(-250px)}@media screen and (min-width:40em){.position-left.reveal-for-medium{left:0;z-index:auto;position:fixed}.position-left.reveal-for-medium~.off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{right:0;z-index:auto;position:fixed}.position-right.reveal-for-medium~.off-canvas-content{margin-right:250px}}@media screen and (min-width:64em){.position-left.reveal-for-large{left:0;z-index:auto;position:fixed}.position-left.reveal-for-large~.off-canvas-content{margin-left:250px}.position-right.reveal-for-large{right:0;z-index:auto;position:fixed}.position-right.reveal-for-large~.off-canvas-content{margin-right:250px}}.orbit,.orbit-container{position:relative}.orbit-container{margin:0;overflow:hidden;list-style:none}.orbit-slide{width:100%;max-height:100%}.orbit-slide.no-motionui.is-active{top:0;left:0}.orbit-figure{margin:0}.orbit-image{margin:0;width:100%;max-width:100%}.orbit-caption{bottom:0;width:100%;margin-bottom:0;background-color:hsla(0,0%,4%,.5)}.orbit-caption,.orbit-next,.orbit-previous{position:absolute;padding:1rem;color:#fefefe}.orbit-next,.orbit-previous{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:10}[data-whatinput=mouse] .orbit-next,[data-whatinput=mouse] .orbit-previous{outline:0}.orbit-next:active,.orbit-next:focus,.orbit-next:hover,.orbit-previous:active,.orbit-previous:focus,.orbit-previous:hover{background-color:hsla(0,0%,4%,.5)}.orbit-previous{right:0}.orbit-next{right:auto;left:0}.orbit-bullets{position:relative;margin-top:.8rem;margin-bottom:.8rem;text-align:center}[data-whatinput=mouse] .orbit-bullets{outline:0}.orbit-bullets button{width:1.2rem;height:1.2rem;margin:.1rem;background-color:#cacaca;border-radius:50%}.orbit-bullets button.is-active,.orbit-bullets button:hover{background-color:#8a8a8a}.pagination{margin-right:0;margin-bottom:1rem}.pagination:after,.pagination:before{content:' ';display:table}.pagination:after{clear:both}.pagination li{font-size:.875rem;margin-left:.0625rem;border-radius:0;display:none}.pagination li:first-child,.pagination li:last-child{display:inline-block}@media screen and (min-width:40em){.pagination li{display:inline-block}}.pagination a,.pagination button{color:#0a0a0a;display:block;padding:.1875rem .625rem;border-radius:0}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{padding:.1875rem .625rem;background:#2199e8;color:#fefefe;cursor:default}.pagination .disabled{padding:.1875rem .625rem;color:#cacaca;cursor:not-allowed}.pagination .disabled:hover{background:transparent}.pagination .ellipsis:after{content:'\2026';padding:.1875rem .625rem;color:#0a0a0a}.pagination-previous.disabled:before,.pagination-previous a:before{content:'\00ab';display:inline-block;margin-left:.5rem}.pagination-next.disabled:after,.pagination-next a:after{content:'\00bb';display:inline-block;margin-right:.5rem}.progress{background-color:#cacaca;height:1rem;margin-bottom:1rem;border-radius:0}.progress.primary .progress-meter{background-color:#2199e8}.progress.secondary .progress-meter{background-color:#777}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#ec5840}.progress-meter{position:relative;display:block;width:0;height:100%;background-color:#2199e8}.progress-meter-text{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;margin:0;font-size:.75rem;font-weight:700;color:#fefefe;white-space:nowrap}.slider{position:relative;height:.5rem;margin-top:1.25rem;margin-bottom:2.25rem;background-color:#e6e6e6;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:none;touch-action:none}.slider-fill{position:absolute;top:0;left:0;display:inline-block;max-width:100%;height:.5rem;background-color:#cacaca;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.slider-fill.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider-handle{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);position:absolute;left:0;z-index:1;display:inline-block;width:1.4rem;height:1.4rem;background-color:#2199e8;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;-ms-touch-action:manipulation;touch-action:manipulation;border-radius:0}[data-whatinput=mouse] .slider-handle{outline:0}.slider-handle:hover{background-color:#1583cc}.slider-handle.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider.disabled,.slider[disabled]{opacity:.25;cursor:not-allowed}.slider.vertical{display:inline-block;width:.5rem;height:12.5rem;margin:0 1.25rem;-webkit-transform:scaleY(-1);transform:scaleY(-1)}.slider.vertical .slider-fill{top:0;width:.5rem;max-height:100%}.slider.vertical .slider-handle{position:absolute;top:0;left:50%;width:1.4rem;height:1.4rem;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.slider:not(.vertical){-webkit-transform:scaleX(-1);transform:scaleX(-1)}.sticky-container{position:relative}.sticky{position:absolute;z-index:0;-webkit-transform:translateZ(0);transform:translateZ(0)}.sticky.is-stuck{position:fixed;z-index:5}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{position:absolute;left:auto;right:auto}.sticky.is-anchored.is-at-bottom{bottom:0}body.is-reveal-open{overflow:hidden}html.is-reveal-open,html.is-reveal-open body{height:100%;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reveal-overlay{display:none;position:fixed;top:0;bottom:0;left:0;right:0;z-index:1005;background-color:hsla(0,0%,4%,.45);overflow-y:scroll}.reveal{display:none;z-index:1006;padding:1rem;border:1px solid #cacaca;background-color:#fefefe;border-radius:0;position:relative;top:100px;margin-left:auto;margin-right:auto;overflow-y:auto}[data-whatinput=mouse] .reveal{outline:0}@media screen and (min-width:40em){.reveal{min-height:0}}.reveal .column,.reveal .columns{min-width:0}.reveal>:last-child{margin-bottom:0}@media screen and (min-width:40em){.reveal{width:600px;max-width:75rem}}@media screen and (min-width:40em){.reveal .reveal{left:auto;right:auto;margin:0 auto}}.reveal.collapse{padding:0}@media screen and (min-width:40em){.reveal.tiny{width:30%;max-width:75rem}}@media screen and (min-width:40em){.reveal.small{width:50%;max-width:75rem}}@media screen and (min-width:40em){.reveal.large{width:90%;max-width:75rem}}.reveal.full{top:0;left:0;width:100%;height:100%;height:100vh;min-height:100vh;max-width:none;margin-left:0;border:0;border-radius:0}@media screen and (max-width:39.9375em){.reveal{top:0;left:0;width:100%;height:100%;height:100vh;min-height:100vh;max-width:none;margin-left:0;border:0;border-radius:0}}.reveal.without-overlay{position:fixed}.switch{margin-bottom:1rem;outline:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#fefefe;font-weight:700;font-size:.875rem}.switch-input{opacity:0;position:absolute}.switch-paddle{background:#cacaca;cursor:pointer;display:block;position:relative;width:4rem;height:2rem;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;border-radius:0;color:inherit;font-weight:inherit}input+.switch-paddle{margin:0}.switch-paddle:after{background:#fefefe;content:'';display:block;position:absolute;height:1.5rem;right:.25rem;top:.25rem;width:1.5rem;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;-webkit-transform:translateZ(0);transform:translateZ(0);border-radius:0}input:checked~.switch-paddle{background:#2199e8}input:checked~.switch-paddle:after{right:2.25rem}[data-whatinput=mouse] input:focus~.switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.switch-active{right:8%;display:none}input:checked+label>.switch-active{display:block}.switch-inactive{left:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny .switch-paddle{width:3rem;height:1.5rem;font-size:.625rem}.switch.tiny .switch-paddle:after{width:1rem;height:1rem}.switch.tiny input:checked~.switch-paddle:after{right:1.75rem}.switch.small .switch-paddle{width:3.5rem;height:1.75rem;font-size:.75rem}.switch.small .switch-paddle:after{width:1.25rem;height:1.25rem}.switch.small input:checked~.switch-paddle:after{right:2rem}.switch.large .switch-paddle{width:5rem;height:2.5rem;font-size:1rem}.switch.large .switch-paddle:after{width:2rem;height:2rem}.switch.large input:checked~.switch-paddle:after{right:2.75rem}table{width:100%;margin-bottom:1rem;border-radius:0}table tbody,table tfoot,table thead{border:1px solid #f1f1f1;background-color:#fefefe}table caption{font-weight:700;padding:.5rem .625rem .625rem}table tfoot,table thead{background:#f8f8f8;color:#0a0a0a}table tfoot tr,table thead tr{background:transparent}table tfoot td,table tfoot th,table thead td,table thead th{padding:.5rem .625rem .625rem;font-weight:700;text-align:right}table tbody tr:nth-child(even){background-color:#f1f1f1}table tbody td,table tbody th{padding:.5rem .625rem .625rem}@media screen and (max-width:63.9375em){table.stack tfoot,table.stack thead{display:none}table.stack td,table.stack th,table.stack tr{display:block}table.stack td{border-top:0}}table.scroll{display:block;width:100%;overflow-x:auto}table.hover tr:hover{background-color:#f9f9f9}table.hover tr:nth-of-type(even):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.table-scroll table{width:auto}.tabs{margin:0;list-style-type:none;background:#fefefe;border:1px solid #e6e6e6}.tabs:after,.tabs:before{content:' ';display:table}.tabs:after{clear:both}.tabs.vertical>li{width:auto;float:none;display:block}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:transparent}.tabs.primary{background:#2199e8}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:focus,.tabs.primary>li>a:hover{background:#1893e4}.tabs-title{float:right}.tabs-title>a{display:block;padding:1.25rem 1.5rem;line-height:1;font-size:.75rem}.tabs-title>a:hover{background:#fefefe}.tabs-title>a:focus,.tabs-title>a[aria-selected=true]{background:#e6e6e6}.tabs-content{background:#fefefe;-webkit-transition:all .5s ease;transition:all .5s ease;border:1px solid #e6e6e6;border-top:0}.tabs-content.vertical{border:1px solid #e6e6e6;border-right:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{border:4px solid #fefefe;box-shadow:0 0 0 1px hsla(0,0%,4%,.2);display:inline-block;line-height:0;max-width:100%;-webkit-transition:-webkit-box-shadow .2s ease-out;transition:box-shadow .2s ease-out;border-radius:0;margin-bottom:1rem}.thumbnail:focus,.thumbnail:hover{box-shadow:0 0 6px 1px rgba(33,153,232,.5)}.title-bar{background:#0a0a0a;color:#fefefe;padding:.5rem}.title-bar:after,.title-bar:before{content:' ';display:table}.title-bar:after{clear:both}.title-bar .menu-icon{margin-right:.25rem;margin-left:.25rem}.title-bar-left{float:left}.title-bar-right{float:right;text-align:right}.title-bar-title{font-weight:700}.menu-icon.dark,.title-bar-title{vertical-align:middle;display:inline-block}.menu-icon.dark{position:relative;cursor:pointer;width:20px;height:16px}.menu-icon.dark:after{content:'';position:absolute;display:block;width:100%;height:2px;background:#0a0a0a;top:0;left:0;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a}.menu-icon.dark:hover:after{background:#8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.has-tip{border-bottom:1px dotted #8a8a8a;font-weight:700;position:relative;display:inline-block;cursor:help}.tooltip{background-color:#0a0a0a;color:#fefefe;font-size:80%;padding:.75rem;position:absolute;z-index:10;top:calc(100% + .6495rem);max-width:10rem!important;border-radius:0}.tooltip:before{border-color:transparent transparent #0a0a0a;border-bottom-style:solid;border-top-width:0;bottom:100%;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.top:before,.tooltip:before{content:'';display:block;width:0;height:0;border:.75rem inset}.tooltip.top:before{border-color:#0a0a0a transparent transparent;border-top-style:solid;border-bottom-width:0;top:100%;bottom:auto}.tooltip.left:before{border-color:transparent transparent transparent #0a0a0a;border-left-style:solid;border-right-width:0;left:100%}.tooltip.left:before,.tooltip.right:before{content:'';display:block;width:0;height:0;border:.75rem inset;bottom:auto;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.right:before{border-color:transparent #0a0a0a transparent transparent;border-right-style:solid;border-left-width:0;left:auto;right:100%}.top-bar{padding:.5rem}.top-bar:after,.top-bar:before{content:' ';display:table}.top-bar:after{clear:both}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{max-width:200px;margin-left:1rem}.top-bar .input-group-field{width:100%;margin-left:0}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{width:100%}@media screen and (min-width:40em){.top-bar .top-bar-left,.top-bar .top-bar-right{width:auto}}@media screen and (max-width:63.9375em){.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{width:100%}}@media screen and (max-width:74.9375em){.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{width:100%}}.top-bar-title{float:left;margin-right:1rem}.top-bar-left{float:left}.top-bar-right{float:right}.hide{display:none!important}.invisible{visibility:hidden}@media screen and (max-width:39.9375em){.hide-for-small-only{display:none!important}}@media screen and (max-width:0em),screen and (min-width:40em){.show-for-small-only{display:none!important}}@media screen and (min-width:40em){.hide-for-medium{display:none!important}}@media screen and (max-width:39.9375em){.show-for-medium{display:none!important}}@media screen and (min-width:40em) and (max-width:63.9375em){.hide-for-medium-only{display:none!important}}@media screen and (max-width:39.9375em),screen and (min-width:64em){.show-for-medium-only{display:none!important}}@media screen and (min-width:64em){.hide-for-large{display:none!important}}@media screen and (max-width:63.9375em){.show-for-large{display:none!important}}@media screen and (min-width:64em) and (max-width:74.9375em){.hide-for-large-only{display:none!important}}@media screen and (max-width:63.9375em),screen and (min-width:75em){.show-for-large-only{display:none!important}}.show-for-sr,.show-on-focus{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.show-on-focus:active,.show-on-focus:focus{position:static!important;height:auto;width:auto;overflow:visible;clip:auto}.hide-for-portrait,.show-for-landscape{display:block!important}@media screen and (orientation:landscape){.hide-for-portrait,.show-for-landscape{display:block!important}}@media screen and (orientation:portrait){.hide-for-portrait,.show-for-landscape{display:none!important}}.hide-for-landscape,.show-for-portrait{display:none!important}@media screen and (orientation:landscape){.hide-for-landscape,.show-for-portrait{display:none!important}}@media screen and (orientation:portrait){.hide-for-landscape,.show-for-portrait{display:block!important}}.float-left{float:left!important}.float-right{float:right!important}.float-center{display:block;margin-left:auto;margin-right:auto}.clearfix:after,.clearfix:before{content:' ';display:table}.clearfix:after{clear:both} \ No newline at end of file diff --git a/libraries/foundation-6/dist/foundation.css b/libraries/foundation-6/dist/foundation.css new file mode 100755 index 00000000..e8e17a97 --- /dev/null +++ b/libraries/foundation-6/dist/foundation.css @@ -0,0 +1,3578 @@ +@charset "UTF-8"; +/** + * Foundation for Sites by ZURB + * Version 6.2.3 + * foundation.zurb.com + * Licensed under MIT Open Source + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS and IE text size adjust after device orientation change, + * without disabling user zoom. + */ +html { + font-family: sans-serif; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/** + * Remove default margin. + */ +body { + margin: 0; } + +/* HTML5 display definitions + ========================================================================== */ +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; } + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ +audio, +canvas, +progress, +video { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ } + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. + */ +[hidden], +template { + display: none; } + +/* Links + ========================================================================== */ +/** + * Remove the gray background color from active links in IE 10. + */ +a { + background-color: transparent; } + +/** + * Improve readability of focused elements when they are also in an + * active/hover state. + */ +a:active, +a:hover { + outline: 0; } + +/* Text-level semantics + ========================================================================== */ +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ +abbr[title] { + border-bottom: 1px dotted; } + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ +b, +strong { + font-weight: bold; } + +/** + * Address styling not present in Safari and Chrome. + */ +dfn { + font-style: italic; } + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/** + * Address styling not present in IE 8/9. + */ +mark { + background: #ff0; + color: #000; } + +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +/* Embedded content + ========================================================================== */ +/** + * Remove border when inside `a` element in IE 8/9/10. + */ +img { + border: 0; } + +/** + * Correct overflow not hidden in IE 9/10/11. + */ +svg:not(:root) { + overflow: hidden; } + +/* Grouping content + ========================================================================== */ +/** + * Address margin not present in IE 8/9 and Safari. + */ +figure { + margin: 1em 40px; } + +/** + * Address differences between Firefox and other browsers. + */ +hr { + -webkit-box-sizing: content-box; + box-sizing: content-box; + height: 0; } + +/** + * Contain overflow in all browsers. + */ +pre { + overflow: auto; } + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; } + +/* Forms + ========================================================================== */ +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ +button, +input, +optgroup, +select, +textarea { + color: inherit; + /* 1 */ + font: inherit; + /* 2 */ + margin: 0; + /* 3 */ } + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ +button { + overflow: visible; } + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ +button, +select { + text-transform: none; } + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ } + +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: not-allowed; } + +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; } + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +input { + line-height: normal; } + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + -webkit-box-sizing: content-box; + box-sizing: content-box; + /* 2 */ } + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * Define consistent border, margin, and padding. + * [NOTE] We don't enable this ruleset in Foundation, because we want the <fieldset> element to have plain styling. + */ +/* fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; + } */ +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + border: 0; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ +textarea { + overflow: auto; } + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ +optgroup { + font-weight: bold; } + +/* Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; } + +td, +th { + padding: 0; } + +.foundation-mq { + font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; } + +html { + font-size: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box; } + +*, +*::before, +*::after { + -webkit-box-sizing: inherit; + box-sizing: inherit; } + +body { + padding: 0; + margin: 0; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + line-height: 1.5; + color: #0a0a0a; + background: #fefefe; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + +img { + max-width: 100%; + height: auto; + -ms-interpolation-mode: bicubic; + display: inline-block; + vertical-align: middle; } + +textarea { + height: auto; + min-height: 50px; + border-radius: 0; } + +select { + width: 100%; + border-radius: 0; } + +#map_canvas img, +#map_canvas embed, +#map_canvas object, +.map_canvas img, +.map_canvas embed, +.map_canvas object, +.mqa-display img, +.mqa-display embed, +.mqa-display object { + max-width: none !important; } + +button { + -webkit-appearance: none; + -moz-appearance: none; + background: transparent; + padding: 0; + border: 0; + border-radius: 0; + line-height: 1; } + [data-whatinput='mouse'] button { + outline: 0; } + +.is-visible { + display: block !important; } + +.is-hidden { + display: none !important; } + +.row { + max-width: 75rem; + margin-left: auto; + margin-right: auto; } + .row::before, .row::after { + content: ' '; + display: table; } + .row::after { + clear: both; } + .row.collapse > .column, .row.collapse > .columns { + padding-left: 0; + padding-right: 0; } + .row .row { + max-width: none; + margin-left: -0.625rem; + margin-right: -0.625rem; } + @media screen and (min-width: 40em) { + .row .row { + margin-left: -0.9375rem; + margin-right: -0.9375rem; } } + .row .row.collapse { + margin-left: 0; + margin-right: 0; } + .row.expanded { + max-width: none; } + .row.expanded .row { + margin-left: auto; + margin-right: auto; } + +.column, .columns { + width: 100%; + float: left; + padding-left: 0.625rem; + padding-right: 0.625rem; } + @media screen and (min-width: 40em) { + .column, .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } } + .column:last-child:not(:first-child), .columns:last-child:not(:first-child) { + float: right; } + .column.end:last-child:last-child, .end.columns:last-child:last-child { + float: left; } + +.column.row.row, .row.row.columns { + float: none; } + .row .column.row.row, .row .row.row.columns { + padding-left: 0; + padding-right: 0; + margin-left: 0; + margin-right: 0; } + +.small-1 { + width: 8.33333%; } + +.small-push-1 { + position: relative; + left: 8.33333%; } + +.small-pull-1 { + position: relative; + left: -8.33333%; } + +.small-offset-0 { + margin-left: 0%; } + +.small-2 { + width: 16.66667%; } + +.small-push-2 { + position: relative; + left: 16.66667%; } + +.small-pull-2 { + position: relative; + left: -16.66667%; } + +.small-offset-1 { + margin-left: 8.33333%; } + +.small-3 { + width: 25%; } + +.small-push-3 { + position: relative; + left: 25%; } + +.small-pull-3 { + position: relative; + left: -25%; } + +.small-offset-2 { + margin-left: 16.66667%; } + +.small-4 { + width: 33.33333%; } + +.small-push-4 { + position: relative; + left: 33.33333%; } + +.small-pull-4 { + position: relative; + left: -33.33333%; } + +.small-offset-3 { + margin-left: 25%; } + +.small-5 { + width: 41.66667%; } + +.small-push-5 { + position: relative; + left: 41.66667%; } + +.small-pull-5 { + position: relative; + left: -41.66667%; } + +.small-offset-4 { + margin-left: 33.33333%; } + +.small-6 { + width: 50%; } + +.small-push-6 { + position: relative; + left: 50%; } + +.small-pull-6 { + position: relative; + left: -50%; } + +.small-offset-5 { + margin-left: 41.66667%; } + +.small-7 { + width: 58.33333%; } + +.small-push-7 { + position: relative; + left: 58.33333%; } + +.small-pull-7 { + position: relative; + left: -58.33333%; } + +.small-offset-6 { + margin-left: 50%; } + +.small-8 { + width: 66.66667%; } + +.small-push-8 { + position: relative; + left: 66.66667%; } + +.small-pull-8 { + position: relative; + left: -66.66667%; } + +.small-offset-7 { + margin-left: 58.33333%; } + +.small-9 { + width: 75%; } + +.small-push-9 { + position: relative; + left: 75%; } + +.small-pull-9 { + position: relative; + left: -75%; } + +.small-offset-8 { + margin-left: 66.66667%; } + +.small-10 { + width: 83.33333%; } + +.small-push-10 { + position: relative; + left: 83.33333%; } + +.small-pull-10 { + position: relative; + left: -83.33333%; } + +.small-offset-9 { + margin-left: 75%; } + +.small-11 { + width: 91.66667%; } + +.small-push-11 { + position: relative; + left: 91.66667%; } + +.small-pull-11 { + position: relative; + left: -91.66667%; } + +.small-offset-10 { + margin-left: 83.33333%; } + +.small-12 { + width: 100%; } + +.small-offset-11 { + margin-left: 91.66667%; } + +.small-up-1 > .column, .small-up-1 > .columns { + width: 100%; + float: left; } + .small-up-1 > .column:nth-of-type(1n), .small-up-1 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-1 > .column:nth-of-type(1n+1), .small-up-1 > .columns:nth-of-type(1n+1) { + clear: both; } + .small-up-1 > .column:last-child, .small-up-1 > .columns:last-child { + float: left; } + +.small-up-2 > .column, .small-up-2 > .columns { + width: 50%; + float: left; } + .small-up-2 > .column:nth-of-type(1n), .small-up-2 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-2 > .column:nth-of-type(2n+1), .small-up-2 > .columns:nth-of-type(2n+1) { + clear: both; } + .small-up-2 > .column:last-child, .small-up-2 > .columns:last-child { + float: left; } + +.small-up-3 > .column, .small-up-3 > .columns { + width: 33.33333%; + float: left; } + .small-up-3 > .column:nth-of-type(1n), .small-up-3 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-3 > .column:nth-of-type(3n+1), .small-up-3 > .columns:nth-of-type(3n+1) { + clear: both; } + .small-up-3 > .column:last-child, .small-up-3 > .columns:last-child { + float: left; } + +.small-up-4 > .column, .small-up-4 > .columns { + width: 25%; + float: left; } + .small-up-4 > .column:nth-of-type(1n), .small-up-4 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-4 > .column:nth-of-type(4n+1), .small-up-4 > .columns:nth-of-type(4n+1) { + clear: both; } + .small-up-4 > .column:last-child, .small-up-4 > .columns:last-child { + float: left; } + +.small-up-5 > .column, .small-up-5 > .columns { + width: 20%; + float: left; } + .small-up-5 > .column:nth-of-type(1n), .small-up-5 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-5 > .column:nth-of-type(5n+1), .small-up-5 > .columns:nth-of-type(5n+1) { + clear: both; } + .small-up-5 > .column:last-child, .small-up-5 > .columns:last-child { + float: left; } + +.small-up-6 > .column, .small-up-6 > .columns { + width: 16.66667%; + float: left; } + .small-up-6 > .column:nth-of-type(1n), .small-up-6 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-6 > .column:nth-of-type(6n+1), .small-up-6 > .columns:nth-of-type(6n+1) { + clear: both; } + .small-up-6 > .column:last-child, .small-up-6 > .columns:last-child { + float: left; } + +.small-up-7 > .column, .small-up-7 > .columns { + width: 14.28571%; + float: left; } + .small-up-7 > .column:nth-of-type(1n), .small-up-7 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-7 > .column:nth-of-type(7n+1), .small-up-7 > .columns:nth-of-type(7n+1) { + clear: both; } + .small-up-7 > .column:last-child, .small-up-7 > .columns:last-child { + float: left; } + +.small-up-8 > .column, .small-up-8 > .columns { + width: 12.5%; + float: left; } + .small-up-8 > .column:nth-of-type(1n), .small-up-8 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-8 > .column:nth-of-type(8n+1), .small-up-8 > .columns:nth-of-type(8n+1) { + clear: both; } + .small-up-8 > .column:last-child, .small-up-8 > .columns:last-child { + float: left; } + +.small-collapse > .column, .small-collapse > .columns { + padding-left: 0; + padding-right: 0; } + +.small-collapse .row, +.expanded.row .small-collapse.row { + margin-left: 0; + margin-right: 0; } + +.small-uncollapse > .column, .small-uncollapse > .columns { + padding-left: 0.625rem; + padding-right: 0.625rem; } + +.small-centered { + float: none; + margin-left: auto; + margin-right: auto; } + +.small-uncentered, +.small-push-0, +.small-pull-0 { + position: static; + margin-left: 0; + margin-right: 0; + float: left; } + +@media screen and (min-width: 40em) { + .medium-1 { + width: 8.33333%; } + .medium-push-1 { + position: relative; + left: 8.33333%; } + .medium-pull-1 { + position: relative; + left: -8.33333%; } + .medium-offset-0 { + margin-left: 0%; } + .medium-2 { + width: 16.66667%; } + .medium-push-2 { + position: relative; + left: 16.66667%; } + .medium-pull-2 { + position: relative; + left: -16.66667%; } + .medium-offset-1 { + margin-left: 8.33333%; } + .medium-3 { + width: 25%; } + .medium-push-3 { + position: relative; + left: 25%; } + .medium-pull-3 { + position: relative; + left: -25%; } + .medium-offset-2 { + margin-left: 16.66667%; } + .medium-4 { + width: 33.33333%; } + .medium-push-4 { + position: relative; + left: 33.33333%; } + .medium-pull-4 { + position: relative; + left: -33.33333%; } + .medium-offset-3 { + margin-left: 25%; } + .medium-5 { + width: 41.66667%; } + .medium-push-5 { + position: relative; + left: 41.66667%; } + .medium-pull-5 { + position: relative; + left: -41.66667%; } + .medium-offset-4 { + margin-left: 33.33333%; } + .medium-6 { + width: 50%; } + .medium-push-6 { + position: relative; + left: 50%; } + .medium-pull-6 { + position: relative; + left: -50%; } + .medium-offset-5 { + margin-left: 41.66667%; } + .medium-7 { + width: 58.33333%; } + .medium-push-7 { + position: relative; + left: 58.33333%; } + .medium-pull-7 { + position: relative; + left: -58.33333%; } + .medium-offset-6 { + margin-left: 50%; } + .medium-8 { + width: 66.66667%; } + .medium-push-8 { + position: relative; + left: 66.66667%; } + .medium-pull-8 { + position: relative; + left: -66.66667%; } + .medium-offset-7 { + margin-left: 58.33333%; } + .medium-9 { + width: 75%; } + .medium-push-9 { + position: relative; + left: 75%; } + .medium-pull-9 { + position: relative; + left: -75%; } + .medium-offset-8 { + margin-left: 66.66667%; } + .medium-10 { + width: 83.33333%; } + .medium-push-10 { + position: relative; + left: 83.33333%; } + .medium-pull-10 { + position: relative; + left: -83.33333%; } + .medium-offset-9 { + margin-left: 75%; } + .medium-11 { + width: 91.66667%; } + .medium-push-11 { + position: relative; + left: 91.66667%; } + .medium-pull-11 { + position: relative; + left: -91.66667%; } + .medium-offset-10 { + margin-left: 83.33333%; } + .medium-12 { + width: 100%; } + .medium-offset-11 { + margin-left: 91.66667%; } + .medium-up-1 > .column, .medium-up-1 > .columns { + width: 100%; + float: left; } + .medium-up-1 > .column:nth-of-type(1n), .medium-up-1 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-1 > .column:nth-of-type(1n+1), .medium-up-1 > .columns:nth-of-type(1n+1) { + clear: both; } + .medium-up-1 > .column:last-child, .medium-up-1 > .columns:last-child { + float: left; } + .medium-up-2 > .column, .medium-up-2 > .columns { + width: 50%; + float: left; } + .medium-up-2 > .column:nth-of-type(1n), .medium-up-2 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-2 > .column:nth-of-type(2n+1), .medium-up-2 > .columns:nth-of-type(2n+1) { + clear: both; } + .medium-up-2 > .column:last-child, .medium-up-2 > .columns:last-child { + float: left; } + .medium-up-3 > .column, .medium-up-3 > .columns { + width: 33.33333%; + float: left; } + .medium-up-3 > .column:nth-of-type(1n), .medium-up-3 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-3 > .column:nth-of-type(3n+1), .medium-up-3 > .columns:nth-of-type(3n+1) { + clear: both; } + .medium-up-3 > .column:last-child, .medium-up-3 > .columns:last-child { + float: left; } + .medium-up-4 > .column, .medium-up-4 > .columns { + width: 25%; + float: left; } + .medium-up-4 > .column:nth-of-type(1n), .medium-up-4 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-4 > .column:nth-of-type(4n+1), .medium-up-4 > .columns:nth-of-type(4n+1) { + clear: both; } + .medium-up-4 > .column:last-child, .medium-up-4 > .columns:last-child { + float: left; } + .medium-up-5 > .column, .medium-up-5 > .columns { + width: 20%; + float: left; } + .medium-up-5 > .column:nth-of-type(1n), .medium-up-5 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-5 > .column:nth-of-type(5n+1), .medium-up-5 > .columns:nth-of-type(5n+1) { + clear: both; } + .medium-up-5 > .column:last-child, .medium-up-5 > .columns:last-child { + float: left; } + .medium-up-6 > .column, .medium-up-6 > .columns { + width: 16.66667%; + float: left; } + .medium-up-6 > .column:nth-of-type(1n), .medium-up-6 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-6 > .column:nth-of-type(6n+1), .medium-up-6 > .columns:nth-of-type(6n+1) { + clear: both; } + .medium-up-6 > .column:last-child, .medium-up-6 > .columns:last-child { + float: left; } + .medium-up-7 > .column, .medium-up-7 > .columns { + width: 14.28571%; + float: left; } + .medium-up-7 > .column:nth-of-type(1n), .medium-up-7 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-7 > .column:nth-of-type(7n+1), .medium-up-7 > .columns:nth-of-type(7n+1) { + clear: both; } + .medium-up-7 > .column:last-child, .medium-up-7 > .columns:last-child { + float: left; } + .medium-up-8 > .column, .medium-up-8 > .columns { + width: 12.5%; + float: left; } + .medium-up-8 > .column:nth-of-type(1n), .medium-up-8 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-8 > .column:nth-of-type(8n+1), .medium-up-8 > .columns:nth-of-type(8n+1) { + clear: both; } + .medium-up-8 > .column:last-child, .medium-up-8 > .columns:last-child { + float: left; } + .medium-collapse > .column, .medium-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .medium-collapse .row, + .expanded.row .medium-collapse.row { + margin-left: 0; + margin-right: 0; } + .medium-uncollapse > .column, .medium-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } + .medium-centered { + float: none; + margin-left: auto; + margin-right: auto; } + .medium-uncentered, + .medium-push-0, + .medium-pull-0 { + position: static; + margin-left: 0; + margin-right: 0; + float: left; } } + +@media screen and (min-width: 64em) { + .large-1 { + width: 8.33333%; } + .large-push-1 { + position: relative; + left: 8.33333%; } + .large-pull-1 { + position: relative; + left: -8.33333%; } + .large-offset-0 { + margin-left: 0%; } + .large-2 { + width: 16.66667%; } + .large-push-2 { + position: relative; + left: 16.66667%; } + .large-pull-2 { + position: relative; + left: -16.66667%; } + .large-offset-1 { + margin-left: 8.33333%; } + .large-3 { + width: 25%; } + .large-push-3 { + position: relative; + left: 25%; } + .large-pull-3 { + position: relative; + left: -25%; } + .large-offset-2 { + margin-left: 16.66667%; } + .large-4 { + width: 33.33333%; } + .large-push-4 { + position: relative; + left: 33.33333%; } + .large-pull-4 { + position: relative; + left: -33.33333%; } + .large-offset-3 { + margin-left: 25%; } + .large-5 { + width: 41.66667%; } + .large-push-5 { + position: relative; + left: 41.66667%; } + .large-pull-5 { + position: relative; + left: -41.66667%; } + .large-offset-4 { + margin-left: 33.33333%; } + .large-6 { + width: 50%; } + .large-push-6 { + position: relative; + left: 50%; } + .large-pull-6 { + position: relative; + left: -50%; } + .large-offset-5 { + margin-left: 41.66667%; } + .large-7 { + width: 58.33333%; } + .large-push-7 { + position: relative; + left: 58.33333%; } + .large-pull-7 { + position: relative; + left: -58.33333%; } + .large-offset-6 { + margin-left: 50%; } + .large-8 { + width: 66.66667%; } + .large-push-8 { + position: relative; + left: 66.66667%; } + .large-pull-8 { + position: relative; + left: -66.66667%; } + .large-offset-7 { + margin-left: 58.33333%; } + .large-9 { + width: 75%; } + .large-push-9 { + position: relative; + left: 75%; } + .large-pull-9 { + position: relative; + left: -75%; } + .large-offset-8 { + margin-left: 66.66667%; } + .large-10 { + width: 83.33333%; } + .large-push-10 { + position: relative; + left: 83.33333%; } + .large-pull-10 { + position: relative; + left: -83.33333%; } + .large-offset-9 { + margin-left: 75%; } + .large-11 { + width: 91.66667%; } + .large-push-11 { + position: relative; + left: 91.66667%; } + .large-pull-11 { + position: relative; + left: -91.66667%; } + .large-offset-10 { + margin-left: 83.33333%; } + .large-12 { + width: 100%; } + .large-offset-11 { + margin-left: 91.66667%; } + .large-up-1 > .column, .large-up-1 > .columns { + width: 100%; + float: left; } + .large-up-1 > .column:nth-of-type(1n), .large-up-1 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-1 > .column:nth-of-type(1n+1), .large-up-1 > .columns:nth-of-type(1n+1) { + clear: both; } + .large-up-1 > .column:last-child, .large-up-1 > .columns:last-child { + float: left; } + .large-up-2 > .column, .large-up-2 > .columns { + width: 50%; + float: left; } + .large-up-2 > .column:nth-of-type(1n), .large-up-2 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-2 > .column:nth-of-type(2n+1), .large-up-2 > .columns:nth-of-type(2n+1) { + clear: both; } + .large-up-2 > .column:last-child, .large-up-2 > .columns:last-child { + float: left; } + .large-up-3 > .column, .large-up-3 > .columns { + width: 33.33333%; + float: left; } + .large-up-3 > .column:nth-of-type(1n), .large-up-3 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-3 > .column:nth-of-type(3n+1), .large-up-3 > .columns:nth-of-type(3n+1) { + clear: both; } + .large-up-3 > .column:last-child, .large-up-3 > .columns:last-child { + float: left; } + .large-up-4 > .column, .large-up-4 > .columns { + width: 25%; + float: left; } + .large-up-4 > .column:nth-of-type(1n), .large-up-4 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-4 > .column:nth-of-type(4n+1), .large-up-4 > .columns:nth-of-type(4n+1) { + clear: both; } + .large-up-4 > .column:last-child, .large-up-4 > .columns:last-child { + float: left; } + .large-up-5 > .column, .large-up-5 > .columns { + width: 20%; + float: left; } + .large-up-5 > .column:nth-of-type(1n), .large-up-5 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-5 > .column:nth-of-type(5n+1), .large-up-5 > .columns:nth-of-type(5n+1) { + clear: both; } + .large-up-5 > .column:last-child, .large-up-5 > .columns:last-child { + float: left; } + .large-up-6 > .column, .large-up-6 > .columns { + width: 16.66667%; + float: left; } + .large-up-6 > .column:nth-of-type(1n), .large-up-6 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-6 > .column:nth-of-type(6n+1), .large-up-6 > .columns:nth-of-type(6n+1) { + clear: both; } + .large-up-6 > .column:last-child, .large-up-6 > .columns:last-child { + float: left; } + .large-up-7 > .column, .large-up-7 > .columns { + width: 14.28571%; + float: left; } + .large-up-7 > .column:nth-of-type(1n), .large-up-7 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-7 > .column:nth-of-type(7n+1), .large-up-7 > .columns:nth-of-type(7n+1) { + clear: both; } + .large-up-7 > .column:last-child, .large-up-7 > .columns:last-child { + float: left; } + .large-up-8 > .column, .large-up-8 > .columns { + width: 12.5%; + float: left; } + .large-up-8 > .column:nth-of-type(1n), .large-up-8 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-8 > .column:nth-of-type(8n+1), .large-up-8 > .columns:nth-of-type(8n+1) { + clear: both; } + .large-up-8 > .column:last-child, .large-up-8 > .columns:last-child { + float: left; } + .large-collapse > .column, .large-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .large-collapse .row, + .expanded.row .large-collapse.row { + margin-left: 0; + margin-right: 0; } + .large-uncollapse > .column, .large-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } + .large-centered { + float: none; + margin-left: auto; + margin-right: auto; } + .large-uncentered, + .large-push-0, + .large-pull-0 { + position: static; + margin-left: 0; + margin-right: 0; + float: left; } } + +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +form, +p, +blockquote, +th, +td { + margin: 0; + padding: 0; } + +p { + font-size: inherit; + line-height: 1.6; + margin-bottom: 1rem; + text-rendering: optimizeLegibility; } + +em, +i { + font-style: italic; + line-height: inherit; } + +strong, +b { + font-weight: bold; + line-height: inherit; } + +small { + font-size: 80%; + line-height: inherit; } + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + font-style: normal; + color: inherit; + text-rendering: optimizeLegibility; + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.4; } + h1 small, + h2 small, + h3 small, + h4 small, + h5 small, + h6 small { + color: #cacaca; + line-height: 0; } + +h1 { + font-size: 1.5rem; } + +h2 { + font-size: 1.25rem; } + +h3 { + font-size: 1.1875rem; } + +h4 { + font-size: 1.125rem; } + +h5 { + font-size: 1.0625rem; } + +h6 { + font-size: 1rem; } + +@media screen and (min-width: 40em) { + h1 { + font-size: 3rem; } + h2 { + font-size: 2.5rem; } + h3 { + font-size: 1.9375rem; } + h4 { + font-size: 1.5625rem; } + h5 { + font-size: 1.25rem; } + h6 { + font-size: 1rem; } } + +a { + color: #2199e8; + text-decoration: none; + line-height: inherit; + cursor: pointer; } + a:hover, a:focus { + color: #1585cf; } + a img { + border: 0; } + +hr { + max-width: 75rem; + height: 0; + border-right: 0; + border-top: 0; + border-bottom: 1px solid #cacaca; + border-left: 0; + margin: 1.25rem auto; + clear: both; } + +ul, +ol, +dl { + line-height: 1.6; + margin-bottom: 1rem; + list-style-position: outside; } + +li { + font-size: inherit; } + +ul { + list-style-type: disc; + margin-left: 1.25rem; } + +ol { + margin-left: 1.25rem; } + +ul ul, ol ul, ul ol, ol ol { + margin-left: 1.25rem; + margin-bottom: 0; } + +dl { + margin-bottom: 1rem; } + dl dt { + margin-bottom: 0.3rem; + font-weight: bold; } + +blockquote { + margin: 0 0 1rem; + padding: 0.5625rem 1.25rem 0 1.1875rem; + border-left: 1px solid #cacaca; } + blockquote, blockquote p { + line-height: 1.6; + color: #8a8a8a; } + +cite { + display: block; + font-size: 0.8125rem; + color: #8a8a8a; } + cite:before { + content: '\2014 \0020'; } + +abbr { + color: #0a0a0a; + cursor: help; + border-bottom: 1px dotted #0a0a0a; } + +code { + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-weight: normal; + color: #0a0a0a; + background-color: #e6e6e6; + border: 1px solid #cacaca; + padding: 0.125rem 0.3125rem 0.0625rem; } + +kbd { + padding: 0.125rem 0.25rem 0; + margin: 0; + background-color: #e6e6e6; + color: #0a0a0a; + font-family: Consolas, "Liberation Mono", Courier, monospace; } + +.subheader { + margin-top: 0.2rem; + margin-bottom: 0.5rem; + font-weight: normal; + line-height: 1.4; + color: #8a8a8a; } + +.lead { + font-size: 125%; + line-height: 1.6; } + +.stat { + font-size: 2.5rem; + line-height: 1; } + p + .stat { + margin-top: -1rem; } + +.no-bullet { + margin-left: 0; + list-style: none; } + +.text-left { + text-align: left; } + +.text-right { + text-align: right; } + +.text-center { + text-align: center; } + +.text-justify { + text-align: justify; } + +@media screen and (min-width: 40em) { + .medium-text-left { + text-align: left; } + .medium-text-right { + text-align: right; } + .medium-text-center { + text-align: center; } + .medium-text-justify { + text-align: justify; } } + +@media screen and (min-width: 64em) { + .large-text-left { + text-align: left; } + .large-text-right { + text-align: right; } + .large-text-center { + text-align: center; } + .large-text-justify { + text-align: justify; } } + +.show-for-print { + display: none !important; } + +@media print { + * { + background: transparent !important; + color: black !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: none !important; } + .show-for-print { + display: block !important; } + .hide-for-print { + display: none !important; } + table.show-for-print { + display: table !important; } + thead.show-for-print { + display: table-header-group !important; } + tbody.show-for-print { + display: table-row-group !important; } + tr.show-for-print { + display: table-row !important; } + td.show-for-print { + display: table-cell !important; } + th.show-for-print { + display: table-cell !important; } + a, + a:visited { + text-decoration: underline; } + a[href]:after { + content: " (" attr(href) ")"; } + .ir a:after, + a[href^='javascript:']:after, + a[href^='#']:after { + content: ''; } + abbr[title]:after { + content: " (" attr(title) ")"; } + pre, + blockquote { + border: 1px solid #8a8a8a; + page-break-inside: avoid; } + thead { + display: table-header-group; } + tr, + img { + page-break-inside: avoid; } + img { + max-width: 100% !important; } + @page { + margin: 0.5cm; } + p, + h2, + h3 { + orphans: 3; + widows: 3; } + h2, + h3 { + page-break-after: avoid; } } + +[type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'], +textarea { + display: block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + height: 2.4375rem; + padding: 0.5rem; + border: 1px solid #cacaca; + margin: 0 0 1rem; + font-family: inherit; + font-size: 1rem; + color: #0a0a0a; + background-color: #fefefe; + -webkit-box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + border-radius: 0; + -webkit-transition: -webkit-box-shadow 0.5s, border-color 0.25s ease-in-out; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; + -webkit-appearance: none; + -moz-appearance: none; } + [type='text']:focus, [type='password']:focus, [type='date']:focus, [type='datetime']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='week']:focus, [type='email']:focus, [type='number']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='url']:focus, [type='color']:focus, + textarea:focus { + border: 1px solid #8a8a8a; + background-color: #fefefe; + outline: none; + -webkit-box-shadow: 0 0 5px #cacaca; + box-shadow: 0 0 5px #cacaca; + -webkit-transition: -webkit-box-shadow 0.5s, border-color 0.25s ease-in-out; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; } + +textarea { + max-width: 100%; } + textarea[rows] { + height: auto; } + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #cacaca; } + +input::-moz-placeholder, +textarea::-moz-placeholder { + color: #cacaca; } + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #cacaca; } + +input::placeholder, +textarea::placeholder { + color: #cacaca; } + +input:disabled, input[readonly], +textarea:disabled, +textarea[readonly] { + background-color: #e6e6e6; + cursor: not-allowed; } + +[type='submit'], +[type='button'] { + border-radius: 0; + -webkit-appearance: none; + -moz-appearance: none; } + +input[type='search'] { + -webkit-box-sizing: border-box; + box-sizing: border-box; } + +[type='file'], +[type='checkbox'], +[type='radio'] { + margin: 0 0 1rem; } + +[type='checkbox'] + label, +[type='radio'] + label { + display: inline-block; + margin-left: 0.5rem; + margin-right: 1rem; + margin-bottom: 0; + vertical-align: baseline; } + [type='checkbox'] + label[for], + [type='radio'] + label[for] { + cursor: pointer; } + +label > [type='checkbox'], +label > [type='radio'] { + margin-right: 0.5rem; } + +[type='file'] { + width: 100%; } + +label { + display: block; + margin: 0; + font-size: 0.875rem; + font-weight: normal; + line-height: 1.8; + color: #0a0a0a; } + label.middle { + margin: 0 0 1rem; + padding: 0.5625rem 0; } + +.help-text { + margin-top: -0.5rem; + font-size: 0.8125rem; + font-style: italic; + color: #0a0a0a; } + +.input-group { + display: table; + width: 100%; + margin-bottom: 1rem; } + .input-group > :first-child { + border-radius: 0 0 0 0; } + .input-group > :last-child > * { + border-radius: 0 0 0 0; } + +.input-group-label, .input-group-field, .input-group-button { + margin: 0; + white-space: nowrap; + display: table-cell; + vertical-align: middle; } + +.input-group-label { + text-align: center; + padding: 0 1rem; + background: #e6e6e6; + color: #0a0a0a; + border: 1px solid #cacaca; + white-space: nowrap; + width: 1%; + height: 100%; } + .input-group-label:first-child { + border-right: 0; } + .input-group-label:last-child { + border-left: 0; } + +.input-group-field { + border-radius: 0; + height: 2.5rem; } + +.input-group-button { + padding-top: 0; + padding-bottom: 0; + text-align: center; + height: 100%; + width: 1%; } + .input-group-button a, + .input-group-button input, + .input-group-button button { + margin: 0; } + +.input-group .input-group-button { + display: table-cell; } + +fieldset { + border: 0; + padding: 0; + margin: 0; } + +legend { + margin-bottom: 0.5rem; + max-width: 100%; } + +.fieldset { + border: 1px solid #cacaca; + padding: 1.25rem; + margin: 1.125rem 0; } + .fieldset legend { + background: #fefefe; + padding: 0 0.1875rem; + margin: 0; + margin-left: -0.1875rem; } + +select { + height: 2.4375rem; + padding: 0.5rem; + border: 1px solid #cacaca; + margin: 0 0 1rem; + font-size: 1rem; + font-family: inherit; + line-height: normal; + color: #0a0a0a; + background-color: #fefefe; + border-radius: 0; + -webkit-appearance: none; + -moz-appearance: none; + background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%28138, 138, 138%29'></polygon></svg>"); + -webkit-background-size: 9px 6px; + background-size: 9px 6px; + background-position: right -1rem center; + -webkit-background-origin: content-box; + background-origin: content-box; + background-repeat: no-repeat; + padding-right: 1.5rem; } + @media screen and (min-width: 0\0) { + select { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); } } + select:disabled { + background-color: #e6e6e6; + cursor: not-allowed; } + select::-ms-expand { + display: none; } + select[multiple] { + height: auto; + background-image: none; } + +.is-invalid-input:not(:focus) { + background-color: rgba(236, 88, 64, 0.1); + border-color: #ec5840; } + +.is-invalid-label { + color: #ec5840; } + +.form-error { + display: none; + margin-top: -0.5rem; + margin-bottom: 1rem; + font-size: 0.75rem; + font-weight: bold; + color: #ec5840; } + .form-error.is-visible { + display: block; } + +.button { + display: inline-block; + text-align: center; + line-height: 1; + cursor: pointer; + -webkit-appearance: none; + -webkit-transition: background-color 0.25s ease-out, color 0.25s ease-out; + transition: background-color 0.25s ease-out, color 0.25s ease-out; + vertical-align: middle; + border: 1px solid transparent; + border-radius: 0; + padding: 0.85em 1em; + margin: 0 0 1rem 0; + font-size: 0.9rem; + background-color: #2199e8; + color: #fefefe; } + [data-whatinput='mouse'] .button { + outline: 0; } + .button:hover, .button:focus { + background-color: #1583cc; + color: #fefefe; } + .button.tiny { + font-size: 0.6rem; } + .button.small { + font-size: 0.75rem; } + .button.large { + font-size: 1.25rem; } + .button.expanded { + display: block; + width: 100%; + margin-left: 0; + margin-right: 0; } + .button.primary { + background-color: #2199e8; + color: #fefefe; } + .button.primary:hover, .button.primary:focus { + background-color: #147cc0; + color: #fefefe; } + .button.secondary { + background-color: #777; + color: #fefefe; } + .button.secondary:hover, .button.secondary:focus { + background-color: #5f5f5f; + color: #fefefe; } + .button.success { + background-color: #3adb76; + color: #fefefe; } + .button.success:hover, .button.success:focus { + background-color: #22bb5b; + color: #fefefe; } + .button.warning { + background-color: #ffae00; + color: #fefefe; } + .button.warning:hover, .button.warning:focus { + background-color: #cc8b00; + color: #fefefe; } + .button.alert { + background-color: #ec5840; + color: #fefefe; } + .button.alert:hover, .button.alert:focus { + background-color: #da3116; + color: #fefefe; } + .button.hollow { + border: 1px solid #2199e8; + color: #2199e8; } + .button.hollow, .button.hollow:hover, .button.hollow:focus { + background-color: transparent; } + .button.hollow:hover, .button.hollow:focus { + border-color: #0c4d78; + color: #0c4d78; } + .button.hollow.primary { + border: 1px solid #2199e8; + color: #2199e8; } + .button.hollow.primary:hover, .button.hollow.primary:focus { + border-color: #0c4d78; + color: #0c4d78; } + .button.hollow.secondary { + border: 1px solid #777; + color: #777; } + .button.hollow.secondary:hover, .button.hollow.secondary:focus { + border-color: #3c3c3c; + color: #3c3c3c; } + .button.hollow.success { + border: 1px solid #3adb76; + color: #3adb76; } + .button.hollow.success:hover, .button.hollow.success:focus { + border-color: #157539; + color: #157539; } + .button.hollow.warning { + border: 1px solid #ffae00; + color: #ffae00; } + .button.hollow.warning:hover, .button.hollow.warning:focus { + border-color: #805700; + color: #805700; } + .button.hollow.alert { + border: 1px solid #ec5840; + color: #ec5840; } + .button.hollow.alert:hover, .button.hollow.alert:focus { + border-color: #881f0e; + color: #881f0e; } + .button.disabled, .button[disabled] { + opacity: 0.25; + cursor: not-allowed; } + .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { + background-color: #2199e8; + color: #fefefe; } + .button.dropdown::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.4em; + border-color: #fefefe transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + position: relative; + top: 0.4em; + float: right; + margin-left: 1em; + display: inline-block; } + .button.arrow-only::after { + margin-left: 0; + float: none; + top: -0.1em; } + +.accordion { + list-style-type: none; + background: #fefefe; + margin-left: 0; } + +.accordion-item:first-child > :first-child { + border-radius: 0 0 0 0; } + +.accordion-item:last-child > :last-child { + border-radius: 0 0 0 0; } + +.accordion-title { + display: block; + padding: 1.25rem 1rem; + line-height: 1; + font-size: 0.75rem; + color: #2199e8; + position: relative; + border: 1px solid #e6e6e6; + border-bottom: 0; } + :last-child:not(.is-active) > .accordion-title { + border-radius: 0 0 0 0; + border-bottom: 1px solid #e6e6e6; } + .accordion-title:hover, .accordion-title:focus { + background-color: #e6e6e6; } + .accordion-title::before { + content: '+'; + position: absolute; + right: 1rem; + top: 50%; + margin-top: -0.5rem; } + .is-active > .accordion-title::before { + content: '–'; } + +.accordion-content { + padding: 1rem; + display: none; + border: 1px solid #e6e6e6; + border-bottom: 0; + background-color: #fefefe; + color: #0a0a0a; } + :last-child > .accordion-content:last-child { + border-bottom: 1px solid #e6e6e6; } + +.is-accordion-submenu-parent > a { + position: relative; } + .is-accordion-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + position: absolute; + top: 50%; + margin-top: -4px; + right: 1rem; } + +.is-accordion-submenu-parent[aria-expanded='true'] > a::after { + -webkit-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transform: scaleY(-1); + -ms-transform: scaleY(-1); + transform: scaleY(-1); } + +.badge { + display: inline-block; + padding: 0.3em; + min-width: 2.1em; + font-size: 0.6rem; + text-align: center; + border-radius: 50%; + background: #2199e8; + color: #fefefe; } + .badge.secondary { + background: #777; + color: #fefefe; } + .badge.success { + background: #3adb76; + color: #fefefe; } + .badge.warning { + background: #ffae00; + color: #fefefe; } + .badge.alert { + background: #ec5840; + color: #fefefe; } + +.breadcrumbs { + list-style: none; + margin: 0 0 1rem 0; } + .breadcrumbs::before, .breadcrumbs::after { + content: ' '; + display: table; } + .breadcrumbs::after { + clear: both; } + .breadcrumbs li { + float: left; + color: #0a0a0a; + font-size: 0.6875rem; + cursor: default; + text-transform: uppercase; } + .breadcrumbs li:not(:last-child)::after { + color: #cacaca; + content: "/"; + margin: 0 0.75rem; + position: relative; + top: 1px; + opacity: 1; } + .breadcrumbs a { + color: #2199e8; } + .breadcrumbs a:hover { + text-decoration: underline; } + .breadcrumbs .disabled { + color: #cacaca; + cursor: not-allowed; } + +.button-group { + margin-bottom: 1rem; + font-size: 0; } + .button-group::before, .button-group::after { + content: ' '; + display: table; } + .button-group::after { + clear: both; } + .button-group .button { + margin: 0; + margin-right: 1px; + margin-bottom: 1px; + font-size: 0.9rem; } + .button-group .button:last-child { + margin-right: 0; } + .button-group.tiny .button { + font-size: 0.6rem; } + .button-group.small .button { + font-size: 0.75rem; } + .button-group.large .button { + font-size: 1.25rem; } + .button-group.expanded { + margin-right: -1px; } + .button-group.expanded::before, .button-group.expanded::after { + display: none; } + .button-group.expanded .button:first-child:nth-last-child(2), .button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2) ~ .button { + display: inline-block; + width: calc(50% - 1px); + margin-right: 1px; } + .button-group.expanded .button:first-child:nth-last-child(2):last-child, .button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2) ~ .button:last-child { + margin-right: -6px; } + .button-group.expanded .button:first-child:nth-last-child(3), .button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3) ~ .button { + display: inline-block; + width: calc(33.33333% - 1px); + margin-right: 1px; } + .button-group.expanded .button:first-child:nth-last-child(3):last-child, .button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3) ~ .button:last-child { + margin-right: -6px; } + .button-group.expanded .button:first-child:nth-last-child(4), .button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4) ~ .button { + display: inline-block; + width: calc(25% - 1px); + margin-right: 1px; } + .button-group.expanded .button:first-child:nth-last-child(4):last-child, .button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4) ~ .button:last-child { + margin-right: -6px; } + .button-group.expanded .button:first-child:nth-last-child(5), .button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5) ~ .button { + display: inline-block; + width: calc(20% - 1px); + margin-right: 1px; } + .button-group.expanded .button:first-child:nth-last-child(5):last-child, .button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5) ~ .button:last-child { + margin-right: -6px; } + .button-group.expanded .button:first-child:nth-last-child(6), .button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6) ~ .button { + display: inline-block; + width: calc(16.66667% - 1px); + margin-right: 1px; } + .button-group.expanded .button:first-child:nth-last-child(6):last-child, .button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6) ~ .button:last-child { + margin-right: -6px; } + .button-group.primary .button { + background-color: #2199e8; + color: #fefefe; } + .button-group.primary .button:hover, .button-group.primary .button:focus { + background-color: #147cc0; + color: #fefefe; } + .button-group.secondary .button { + background-color: #777; + color: #fefefe; } + .button-group.secondary .button:hover, .button-group.secondary .button:focus { + background-color: #5f5f5f; + color: #fefefe; } + .button-group.success .button { + background-color: #3adb76; + color: #fefefe; } + .button-group.success .button:hover, .button-group.success .button:focus { + background-color: #22bb5b; + color: #fefefe; } + .button-group.warning .button { + background-color: #ffae00; + color: #fefefe; } + .button-group.warning .button:hover, .button-group.warning .button:focus { + background-color: #cc8b00; + color: #fefefe; } + .button-group.alert .button { + background-color: #ec5840; + color: #fefefe; } + .button-group.alert .button:hover, .button-group.alert .button:focus { + background-color: #da3116; + color: #fefefe; } + .button-group.stacked .button, .button-group.stacked-for-small .button, .button-group.stacked-for-medium .button { + width: 100%; } + .button-group.stacked .button:last-child, .button-group.stacked-for-small .button:last-child, .button-group.stacked-for-medium .button:last-child { + margin-bottom: 0; } + @media screen and (min-width: 40em) { + .button-group.stacked-for-small .button { + width: auto; + margin-bottom: 0; } } + @media screen and (min-width: 64em) { + .button-group.stacked-for-medium .button { + width: auto; + margin-bottom: 0; } } + @media screen and (max-width: 39.9375em) { + .button-group.stacked-for-small.expanded { + display: block; } + .button-group.stacked-for-small.expanded .button { + display: block; + margin-right: 0; } } + +.callout { + margin: 0 0 1rem 0; + padding: 1rem; + border: 1px solid rgba(10, 10, 10, 0.25); + border-radius: 0; + position: relative; + color: #0a0a0a; + background-color: white; } + .callout > :first-child { + margin-top: 0; } + .callout > :last-child { + margin-bottom: 0; } + .callout.primary { + background-color: #def0fc; } + .callout.secondary { + background-color: #ebebeb; } + .callout.success { + background-color: #e1faea; } + .callout.warning { + background-color: #fff3d9; } + .callout.alert { + background-color: #fce6e2; } + .callout.small { + padding-top: 0.5rem; + padding-right: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.5rem; } + .callout.large { + padding-top: 3rem; + padding-right: 3rem; + padding-bottom: 3rem; + padding-left: 3rem; } + +.close-button { + position: absolute; + color: #8a8a8a; + right: 1rem; + top: 0.5rem; + font-size: 2em; + line-height: 1; + cursor: pointer; } + [data-whatinput='mouse'] .close-button { + outline: 0; } + .close-button:hover, .close-button:focus { + color: #0a0a0a; } + +.menu { + margin: 0; + list-style-type: none; } + .menu > li { + display: table-cell; + vertical-align: middle; } + [data-whatinput='mouse'] .menu > li { + outline: 0; } + .menu > li > a { + display: block; + padding: 0.7rem 1rem; + line-height: 1; } + .menu input, + .menu a, + .menu button { + margin-bottom: 0; } + .menu > li > a img, + .menu > li > a i, + .menu > li > a svg { + vertical-align: middle; } + .menu > li > a img + span, + .menu > li > a i + span, + .menu > li > a svg + span { + vertical-align: middle; } + .menu > li > a img, + .menu > li > a i, + .menu > li > a svg { + margin-right: 0.25rem; + display: inline-block; } + .menu > li { + display: table-cell; } + .menu.vertical > li { + display: block; } + @media screen and (min-width: 40em) { + .menu.medium-horizontal > li { + display: table-cell; } + .menu.medium-vertical > li { + display: block; } } + @media screen and (min-width: 64em) { + .menu.large-horizontal > li { + display: table-cell; } + .menu.large-vertical > li { + display: block; } } + .menu.simple li { + line-height: 1; + display: inline-block; + margin-right: 1rem; } + .menu.simple a { + padding: 0; } + .menu.align-right::before, .menu.align-right::after { + content: ' '; + display: table; } + .menu.align-right::after { + clear: both; } + .menu.align-right > li { + float: right; } + .menu.expanded { + width: 100%; + display: table; + table-layout: fixed; } + .menu.expanded > li:first-child:last-child { + width: 100%; } + .menu.icon-top > li > a { + text-align: center; } + .menu.icon-top > li > a img, + .menu.icon-top > li > a i, + .menu.icon-top > li > a svg { + display: block; + margin: 0 auto 0.25rem; } + .menu.nested { + margin-left: 1rem; } + .menu .active > a { + color: #fefefe; + background: #2199e8; } + +.menu-text { + font-weight: bold; + color: inherit; + line-height: 1; + padding-top: 0; + padding-bottom: 0; + padding: 0.7rem 1rem; } + +.menu-centered { + text-align: center; } + .menu-centered > .menu { + display: inline-block; } + +.no-js [data-responsive-menu] ul { + display: none; } + +.menu-icon { + position: relative; + display: inline-block; + vertical-align: middle; + cursor: pointer; + width: 20px; + height: 16px; } + .menu-icon::after { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 2px; + background: #fefefe; + top: 0; + left: 0; + -webkit-box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; + box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; } + .menu-icon:hover::after { + background: #cacaca; + -webkit-box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; + box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; } + +.menu-icon.dark { + position: relative; + display: inline-block; + vertical-align: middle; + cursor: pointer; + width: 20px; + height: 16px; } + .menu-icon.dark::after { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 2px; + background: #0a0a0a; + top: 0; + left: 0; + -webkit-box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; + box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; } + .menu-icon.dark:hover::after { + background: #8a8a8a; + -webkit-box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; + box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; } + +.is-drilldown { + position: relative; + overflow: hidden; } + .is-drilldown li { + display: block !important; } + +.is-drilldown-submenu { + position: absolute; + top: 0; + left: 100%; + z-index: -1; + height: 100%; + width: 100%; + background: #fefefe; + -webkit-transition: -webkit-transform 0.15s linear; + transition: transform 0.15s linear; } + .is-drilldown-submenu.is-active { + z-index: 1; + display: block; + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); } + .is-drilldown-submenu.is-closing { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); } + +.is-drilldown-submenu-parent > a { + position: relative; } + .is-drilldown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; + position: absolute; + top: 50%; + margin-top: -6px; + right: 1rem; } + +.js-drilldown-back > a::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; + border-left-width: 0; + display: inline-block; + vertical-align: middle; + margin-right: 0.75rem; } + +.dropdown-pane { + background-color: #fefefe; + border: 1px solid #cacaca; + border-radius: 0; + display: block; + font-size: 1rem; + padding: 1rem; + position: absolute; + visibility: hidden; + width: 300px; + z-index: 10; } + .dropdown-pane.is-open { + visibility: visible; } + +.dropdown-pane.tiny { + width: 100px; } + +.dropdown-pane.small { + width: 200px; } + +.dropdown-pane.large { + width: 400px; } + +.dropdown.menu > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + +.dropdown.menu > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + +.dropdown.menu > li.is-dropdown-submenu-parent > a { + padding-right: 1.5rem; + position: relative; } + +.dropdown.menu > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + right: 5px; + margin-top: -2px; } + +[data-whatinput='mouse'] .dropdown.menu a { + outline: 0; } + +.no-js .dropdown.menu ul { + display: none; } + +.dropdown.menu.vertical > li .is-dropdown-submenu { + top: 0; } + +.dropdown.menu.vertical > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + +.dropdown.menu.vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + +.dropdown.menu.vertical > li > a::after { + right: 14px; + margin-top: -3px; } + +.dropdown.menu.vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + +.dropdown.menu.vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } + +@media screen and (min-width: 40em) { + .dropdown.menu.medium-horizontal > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + .dropdown.menu.medium-horizontal > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a { + padding-right: 1.5rem; + position: relative; } + .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + right: 5px; + margin-top: -2px; } + .dropdown.menu.medium-vertical > li .is-dropdown-submenu { + top: 0; } + .dropdown.menu.medium-vertical > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + .dropdown.menu.medium-vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + .dropdown.menu.medium-vertical > li > a::after { + right: 14px; + margin-top: -3px; } + .dropdown.menu.medium-vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .dropdown.menu.medium-vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } } + +@media screen and (min-width: 64em) { + .dropdown.menu.large-horizontal > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + .dropdown.menu.large-horizontal > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a { + padding-right: 1.5rem; + position: relative; } + .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + right: 5px; + margin-top: -2px; } + .dropdown.menu.large-vertical > li .is-dropdown-submenu { + top: 0; } + .dropdown.menu.large-vertical > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + .dropdown.menu.large-vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + .dropdown.menu.large-vertical > li > a::after { + right: 14px; + margin-top: -3px; } + .dropdown.menu.large-vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .dropdown.menu.large-vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } } + +.dropdown.menu.align-right .is-dropdown-submenu.first-sub { + top: 100%; + left: auto; + right: 0; } + +.is-dropdown-menu.vertical { + width: 100px; } + .is-dropdown-menu.vertical.align-right { + float: right; } + +.is-dropdown-submenu-parent { + position: relative; } + .is-dropdown-submenu-parent a::after { + position: absolute; + top: 50%; + right: 5px; + margin-top: -2px; } + .is-dropdown-submenu-parent.opens-inner > .is-dropdown-submenu { + top: 100%; + left: auto; } + .is-dropdown-submenu-parent.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + .is-dropdown-submenu-parent.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + +.is-dropdown-submenu { + display: none; + position: absolute; + top: 0; + left: 100%; + min-width: 200px; + z-index: 1; + background: #fefefe; + border: 1px solid #cacaca; } + .is-dropdown-submenu .is-dropdown-submenu-parent > a::after { + right: 14px; + margin-top: -3px; } + .is-dropdown-submenu .is-dropdown-submenu-parent.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .is-dropdown-submenu .is-dropdown-submenu-parent.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } + .is-dropdown-submenu .is-dropdown-submenu { + margin-top: -1px; } + .is-dropdown-submenu > li { + width: 100%; } + .is-dropdown-submenu.js-dropdown-active { + display: block; } + +.flex-video { + position: relative; + height: 0; + padding-bottom: 75%; + margin-bottom: 1rem; + overflow: hidden; } + .flex-video iframe, + .flex-video object, + .flex-video embed, + .flex-video video { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } + .flex-video.widescreen { + padding-bottom: 56.25%; } + .flex-video.vimeo { + padding-top: 0; } + +.label { + display: inline-block; + padding: 0.33333rem 0.5rem; + font-size: 0.8rem; + line-height: 1; + white-space: nowrap; + cursor: default; + border-radius: 0; + background: #2199e8; + color: #fefefe; } + .label.secondary { + background: #777; + color: #fefefe; } + .label.success { + background: #3adb76; + color: #fefefe; } + .label.warning { + background: #ffae00; + color: #fefefe; } + .label.alert { + background: #ec5840; + color: #fefefe; } + +.media-object { + margin-bottom: 1rem; + display: block; } + .media-object img { + max-width: none; } + @media screen and (max-width: 39.9375em) { + .media-object.stack-for-small .media-object-section { + padding: 0; + padding-bottom: 1rem; + display: block; } + .media-object.stack-for-small .media-object-section img { + width: 100%; } } + +.media-object-section { + display: table-cell; + vertical-align: top; } + .media-object-section:first-child { + padding-right: 1rem; } + .media-object-section:last-child:not(:nth-child(2)) { + padding-left: 1rem; } + .media-object-section > :last-child { + margin-bottom: 0; } + .media-object-section.middle { + vertical-align: middle; } + .media-object-section.bottom { + vertical-align: bottom; } + +html, +body { + height: 100%; } + +.off-canvas-wrapper { + width: 100%; + overflow-x: hidden; + position: relative; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-overflow-scrolling: auto; } + +.off-canvas-wrapper-inner { + position: relative; + width: 100%; + -webkit-transition: -webkit-transform 0.5s ease; + transition: transform 0.5s ease; } + .off-canvas-wrapper-inner::before, .off-canvas-wrapper-inner::after { + content: ' '; + display: table; } + .off-canvas-wrapper-inner::after { + clear: both; } + +.off-canvas-content, +.off-canvas-content { + min-height: 100%; + background: #fefefe; + -webkit-transition: -webkit-transform 0.5s ease; + transition: transform 0.5s ease; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + padding-bottom: 0.1px; + -webkit-box-shadow: 0 0 10px rgba(10, 10, 10, 0.5); + box-shadow: 0 0 10px rgba(10, 10, 10, 0.5); } + +.js-off-canvas-exit { + display: none; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(254, 254, 254, 0.25); + cursor: pointer; + -webkit-transition: background 0.5s ease; + transition: background 0.5s ease; } + +.off-canvas { + position: absolute; + background: #e6e6e6; + z-index: -1; + max-height: 100%; + overflow-y: auto; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); } + [data-whatinput='mouse'] .off-canvas { + outline: 0; } + .off-canvas.position-left { + left: -250px; + top: 0; + width: 250px; } + .is-open-left { + -webkit-transform: translateX(250px); + -ms-transform: translateX(250px); + transform: translateX(250px); } + .off-canvas.position-right { + right: -250px; + top: 0; + width: 250px; } + .is-open-right { + -webkit-transform: translateX(-250px); + -ms-transform: translateX(-250px); + transform: translateX(-250px); } + +@media screen and (min-width: 40em) { + .position-left.reveal-for-medium { + left: 0; + z-index: auto; + position: fixed; } + .position-left.reveal-for-medium ~ .off-canvas-content { + margin-left: 250px; } + .position-right.reveal-for-medium { + right: 0; + z-index: auto; + position: fixed; } + .position-right.reveal-for-medium ~ .off-canvas-content { + margin-right: 250px; } } + +@media screen and (min-width: 64em) { + .position-left.reveal-for-large { + left: 0; + z-index: auto; + position: fixed; } + .position-left.reveal-for-large ~ .off-canvas-content { + margin-left: 250px; } + .position-right.reveal-for-large { + right: 0; + z-index: auto; + position: fixed; } + .position-right.reveal-for-large ~ .off-canvas-content { + margin-right: 250px; } } + +.orbit { + position: relative; } + +.orbit-container { + position: relative; + margin: 0; + overflow: hidden; + list-style: none; } + +.orbit-slide { + width: 100%; + max-height: 100%; } + .orbit-slide.no-motionui.is-active { + top: 0; + left: 0; } + +.orbit-figure { + margin: 0; } + +.orbit-image { + margin: 0; + width: 100%; + max-width: 100%; } + +.orbit-caption { + position: absolute; + bottom: 0; + width: 100%; + padding: 1rem; + margin-bottom: 0; + color: #fefefe; + background-color: rgba(10, 10, 10, 0.5); } + +.orbit-previous, .orbit-next { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + z-index: 10; + padding: 1rem; + color: #fefefe; } + [data-whatinput='mouse'] .orbit-previous, [data-whatinput='mouse'] .orbit-next { + outline: 0; } + .orbit-previous:hover, .orbit-next:hover, .orbit-previous:active, .orbit-next:active, .orbit-previous:focus, .orbit-next:focus { + background-color: rgba(10, 10, 10, 0.5); } + +.orbit-previous { + left: 0; } + +.orbit-next { + left: auto; + right: 0; } + +.orbit-bullets { + position: relative; + margin-top: 0.8rem; + margin-bottom: 0.8rem; + text-align: center; } + [data-whatinput='mouse'] .orbit-bullets { + outline: 0; } + .orbit-bullets button { + width: 1.2rem; + height: 1.2rem; + margin: 0.1rem; + background-color: #cacaca; + border-radius: 50%; } + .orbit-bullets button:hover { + background-color: #8a8a8a; } + .orbit-bullets button.is-active { + background-color: #8a8a8a; } + +.pagination { + margin-left: 0; + margin-bottom: 1rem; } + .pagination::before, .pagination::after { + content: ' '; + display: table; } + .pagination::after { + clear: both; } + .pagination li { + font-size: 0.875rem; + margin-right: 0.0625rem; + border-radius: 0; + display: none; } + .pagination li:last-child, .pagination li:first-child { + display: inline-block; } + @media screen and (min-width: 40em) { + .pagination li { + display: inline-block; } } + .pagination a, + .pagination button { + color: #0a0a0a; + display: block; + padding: 0.1875rem 0.625rem; + border-radius: 0; } + .pagination a:hover, + .pagination button:hover { + background: #e6e6e6; } + .pagination .current { + padding: 0.1875rem 0.625rem; + background: #2199e8; + color: #fefefe; + cursor: default; } + .pagination .disabled { + padding: 0.1875rem 0.625rem; + color: #cacaca; + cursor: not-allowed; } + .pagination .disabled:hover { + background: transparent; } + .pagination .ellipsis::after { + content: '\2026'; + padding: 0.1875rem 0.625rem; + color: #0a0a0a; } + +.pagination-previous a::before, +.pagination-previous.disabled::before { + content: '\00ab'; + display: inline-block; + margin-right: 0.5rem; } + +.pagination-next a::after, +.pagination-next.disabled::after { + content: '\00bb'; + display: inline-block; + margin-left: 0.5rem; } + +.progress { + background-color: #cacaca; + height: 1rem; + margin-bottom: 1rem; + border-radius: 0; } + .progress.primary .progress-meter { + background-color: #2199e8; } + .progress.secondary .progress-meter { + background-color: #777; } + .progress.success .progress-meter { + background-color: #3adb76; } + .progress.warning .progress-meter { + background-color: #ffae00; } + .progress.alert .progress-meter { + background-color: #ec5840; } + +.progress-meter { + position: relative; + display: block; + width: 0%; + height: 100%; + background-color: #2199e8; } + +.progress-meter-text { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + position: absolute; + margin: 0; + font-size: 0.75rem; + font-weight: bold; + color: #fefefe; + white-space: nowrap; } + +.slider { + position: relative; + height: 0.5rem; + margin-top: 1.25rem; + margin-bottom: 2.25rem; + background-color: #e6e6e6; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -ms-touch-action: none; + touch-action: none; } + +.slider-fill { + position: absolute; + top: 0; + left: 0; + display: inline-block; + max-width: 100%; + height: 0.5rem; + background-color: #cacaca; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; } + .slider-fill.is-dragging { + -webkit-transition: all 0s linear; + transition: all 0s linear; } + +.slider-handle { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + position: absolute; + left: 0; + z-index: 1; + display: inline-block; + width: 1.4rem; + height: 1.4rem; + background-color: #2199e8; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + -ms-touch-action: manipulation; + touch-action: manipulation; + border-radius: 0; } + [data-whatinput='mouse'] .slider-handle { + outline: 0; } + .slider-handle:hover { + background-color: #1583cc; } + .slider-handle.is-dragging { + -webkit-transition: all 0s linear; + transition: all 0s linear; } + +.slider.disabled, +.slider[disabled] { + opacity: 0.25; + cursor: not-allowed; } + +.slider.vertical { + display: inline-block; + width: 0.5rem; + height: 12.5rem; + margin: 0 1.25rem; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); } + .slider.vertical .slider-fill { + top: 0; + width: 0.5rem; + max-height: 100%; } + .slider.vertical .slider-handle { + position: absolute; + top: 0; + left: 50%; + width: 1.4rem; + height: 1.4rem; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); } + +.sticky-container { + position: relative; } + +.sticky { + position: absolute; + z-index: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.sticky.is-stuck { + position: fixed; + z-index: 5; } + .sticky.is-stuck.is-at-top { + top: 0; } + .sticky.is-stuck.is-at-bottom { + bottom: 0; } + +.sticky.is-anchored { + position: absolute; + left: auto; + right: auto; } + .sticky.is-anchored.is-at-bottom { + bottom: 0; } + +body.is-reveal-open { + overflow: hidden; } + +html.is-reveal-open, +html.is-reveal-open body { + height: 100%; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.reveal-overlay { + display: none; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1005; + background-color: rgba(10, 10, 10, 0.45); + overflow-y: scroll; } + +.reveal { + display: none; + z-index: 1006; + padding: 1rem; + border: 1px solid #cacaca; + background-color: #fefefe; + border-radius: 0; + position: relative; + top: 100px; + margin-left: auto; + margin-right: auto; + overflow-y: auto; } + [data-whatinput='mouse'] .reveal { + outline: 0; } + @media screen and (min-width: 40em) { + .reveal { + min-height: 0; } } + .reveal .column, .reveal .columns, + .reveal .columns { + min-width: 0; } + .reveal > :last-child { + margin-bottom: 0; } + @media screen and (min-width: 40em) { + .reveal { + width: 600px; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal .reveal { + left: auto; + right: auto; + margin: 0 auto; } } + .reveal.collapse { + padding: 0; } + @media screen and (min-width: 40em) { + .reveal.tiny { + width: 30%; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal.small { + width: 50%; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal.large { + width: 90%; + max-width: 75rem; } } + .reveal.full { + top: 0; + left: 0; + width: 100%; + height: 100%; + height: 100vh; + min-height: 100vh; + max-width: none; + margin-left: 0; + border: 0; + border-radius: 0; } + @media screen and (max-width: 39.9375em) { + .reveal { + top: 0; + left: 0; + width: 100%; + height: 100%; + height: 100vh; + min-height: 100vh; + max-width: none; + margin-left: 0; + border: 0; + border-radius: 0; } } + .reveal.without-overlay { + position: fixed; } + +.switch { + margin-bottom: 1rem; + outline: 0; + position: relative; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #fefefe; + font-weight: bold; + font-size: 0.875rem; } + +.switch-input { + opacity: 0; + position: absolute; } + +.switch-paddle { + background: #cacaca; + cursor: pointer; + display: block; + position: relative; + width: 4rem; + height: 2rem; + -webkit-transition: all 0.25s ease-out; + transition: all 0.25s ease-out; + border-radius: 0; + color: inherit; + font-weight: inherit; } + input + .switch-paddle { + margin: 0; } + .switch-paddle::after { + background: #fefefe; + content: ''; + display: block; + position: absolute; + height: 1.5rem; + left: 0.25rem; + top: 0.25rem; + width: 1.5rem; + -webkit-transition: all 0.25s ease-out; + transition: all 0.25s ease-out; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + border-radius: 0; } + input:checked ~ .switch-paddle { + background: #2199e8; } + input:checked ~ .switch-paddle::after { + left: 2.25rem; } + [data-whatinput='mouse'] input:focus ~ .switch-paddle { + outline: 0; } + +.switch-active, .switch-inactive { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + +.switch-active { + left: 8%; + display: none; } + input:checked + label > .switch-active { + display: block; } + +.switch-inactive { + right: 15%; } + input:checked + label > .switch-inactive { + display: none; } + +.switch.tiny .switch-paddle { + width: 3rem; + height: 1.5rem; + font-size: 0.625rem; } + +.switch.tiny .switch-paddle::after { + width: 1rem; + height: 1rem; } + +.switch.tiny input:checked ~ .switch-paddle::after { + left: 1.75rem; } + +.switch.small .switch-paddle { + width: 3.5rem; + height: 1.75rem; + font-size: 0.75rem; } + +.switch.small .switch-paddle::after { + width: 1.25rem; + height: 1.25rem; } + +.switch.small input:checked ~ .switch-paddle::after { + left: 2rem; } + +.switch.large .switch-paddle { + width: 5rem; + height: 2.5rem; + font-size: 1rem; } + +.switch.large .switch-paddle::after { + width: 2rem; + height: 2rem; } + +.switch.large input:checked ~ .switch-paddle::after { + left: 2.75rem; } + +table { + width: 100%; + margin-bottom: 1rem; + border-radius: 0; } + table thead, + table tbody, + table tfoot { + border: 1px solid #f1f1f1; + background-color: #fefefe; } + table caption { + font-weight: bold; + padding: 0.5rem 0.625rem 0.625rem; } + table thead, + table tfoot { + background: #f8f8f8; + color: #0a0a0a; } + table thead tr, + table tfoot tr { + background: transparent; } + table thead th, + table thead td, + table tfoot th, + table tfoot td { + padding: 0.5rem 0.625rem 0.625rem; + font-weight: bold; + text-align: left; } + table tbody tr:nth-child(even) { + background-color: #f1f1f1; } + table tbody th, + table tbody td { + padding: 0.5rem 0.625rem 0.625rem; } + +@media screen and (max-width: 63.9375em) { + table.stack thead { + display: none; } + table.stack tfoot { + display: none; } + table.stack tr, + table.stack th, + table.stack td { + display: block; } + table.stack td { + border-top: 0; } } + +table.scroll { + display: block; + width: 100%; + overflow-x: auto; } + +table.hover tr:hover { + background-color: #f9f9f9; } + +table.hover tr:nth-of-type(even):hover { + background-color: #ececec; } + +.table-scroll { + overflow-x: auto; } + .table-scroll table { + width: auto; } + +.tabs { + margin: 0; + list-style-type: none; + background: #fefefe; + border: 1px solid #e6e6e6; } + .tabs::before, .tabs::after { + content: ' '; + display: table; } + .tabs::after { + clear: both; } + +.tabs.vertical > li { + width: auto; + float: none; + display: block; } + +.tabs.simple > li > a { + padding: 0; } + .tabs.simple > li > a:hover { + background: transparent; } + +.tabs.primary { + background: #2199e8; } + .tabs.primary > li > a { + color: #fefefe; } + .tabs.primary > li > a:hover, .tabs.primary > li > a:focus { + background: #1893e4; } + +.tabs-title { + float: left; } + .tabs-title > a { + display: block; + padding: 1.25rem 1.5rem; + line-height: 1; + font-size: 0.75rem; } + .tabs-title > a:hover { + background: #fefefe; } + .tabs-title > a:focus, .tabs-title > a[aria-selected='true'] { + background: #e6e6e6; } + +.tabs-content { + background: #fefefe; + -webkit-transition: all 0.5s ease; + transition: all 0.5s ease; + border: 1px solid #e6e6e6; + border-top: 0; } + +.tabs-content.vertical { + border: 1px solid #e6e6e6; + border-left: 0; } + +.tabs-panel { + display: none; + padding: 1rem; } + .tabs-panel.is-active { + display: block; } + +.thumbnail { + border: solid 4px #fefefe; + -webkit-box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2); + box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2); + display: inline-block; + line-height: 0; + max-width: 100%; + -webkit-transition: -webkit-box-shadow 200ms ease-out; + transition: box-shadow 200ms ease-out; + border-radius: 0; + margin-bottom: 1rem; } + .thumbnail:hover, .thumbnail:focus { + -webkit-box-shadow: 0 0 6px 1px rgba(33, 153, 232, 0.5); + box-shadow: 0 0 6px 1px rgba(33, 153, 232, 0.5); } + +.title-bar { + background: #0a0a0a; + color: #fefefe; + padding: 0.5rem; } + .title-bar::before, .title-bar::after { + content: ' '; + display: table; } + .title-bar::after { + clear: both; } + .title-bar .menu-icon { + margin-left: 0.25rem; + margin-right: 0.25rem; } + +.title-bar-left { + float: left; } + +.title-bar-right { + float: right; + text-align: right; } + +.title-bar-title { + font-weight: bold; + vertical-align: middle; + display: inline-block; } + +.menu-icon.dark { + position: relative; + display: inline-block; + vertical-align: middle; + cursor: pointer; + width: 20px; + height: 16px; } + .menu-icon.dark::after { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 2px; + background: #0a0a0a; + top: 0; + left: 0; + -webkit-box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; + box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; } + .menu-icon.dark:hover::after { + background: #8a8a8a; + -webkit-box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; + box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; } + +.has-tip { + border-bottom: dotted 1px #8a8a8a; + font-weight: bold; + position: relative; + display: inline-block; + cursor: help; } + +.tooltip { + background-color: #0a0a0a; + color: #fefefe; + font-size: 80%; + padding: 0.75rem; + position: absolute; + z-index: 10; + top: calc(100% + 0.6495rem); + max-width: 10rem !important; + border-radius: 0; } + .tooltip::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent transparent #0a0a0a; + border-bottom-style: solid; + border-top-width: 0; + bottom: 100%; + position: absolute; + left: 50%; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); } + .tooltip.top::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: #0a0a0a transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + top: 100%; + bottom: auto; } + .tooltip.left::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent transparent transparent #0a0a0a; + border-left-style: solid; + border-right-width: 0; + bottom: auto; + left: 100%; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + .tooltip.right::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent #0a0a0a transparent transparent; + border-right-style: solid; + border-left-width: 0; + bottom: auto; + left: auto; + right: 100%; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + +.top-bar { + padding: 0.5rem; } + .top-bar::before, .top-bar::after { + content: ' '; + display: table; } + .top-bar::after { + clear: both; } + .top-bar, + .top-bar ul { + background-color: #e6e6e6; } + .top-bar input { + max-width: 200px; + margin-right: 1rem; } + .top-bar .input-group-field { + width: 100%; + margin-right: 0; } + .top-bar input.button { + width: auto; } + .top-bar .top-bar-left, + .top-bar .top-bar-right { + width: 100%; } + @media screen and (min-width: 40em) { + .top-bar .top-bar-left, + .top-bar .top-bar-right { + width: auto; } } + @media screen and (max-width: 63.9375em) { + .top-bar.stacked-for-medium .top-bar-left, + .top-bar.stacked-for-medium .top-bar-right { + width: 100%; } } + @media screen and (max-width: 74.9375em) { + .top-bar.stacked-for-large .top-bar-left, + .top-bar.stacked-for-large .top-bar-right { + width: 100%; } } + +.top-bar-title { + float: left; + margin-right: 1rem; } + +.top-bar-left { + float: left; } + +.top-bar-right { + float: right; } + +.hide { + display: none !important; } + +.invisible { + visibility: hidden; } + +@media screen and (max-width: 39.9375em) { + .hide-for-small-only { + display: none !important; } } + +@media screen and (max-width: 0em), screen and (min-width: 40em) { + .show-for-small-only { + display: none !important; } } + +@media screen and (min-width: 40em) { + .hide-for-medium { + display: none !important; } } + +@media screen and (max-width: 39.9375em) { + .show-for-medium { + display: none !important; } } + +@media screen and (min-width: 40em) and (max-width: 63.9375em) { + .hide-for-medium-only { + display: none !important; } } + +@media screen and (max-width: 39.9375em), screen and (min-width: 64em) { + .show-for-medium-only { + display: none !important; } } + +@media screen and (min-width: 64em) { + .hide-for-large { + display: none !important; } } + +@media screen and (max-width: 63.9375em) { + .show-for-large { + display: none !important; } } + +@media screen and (min-width: 64em) and (max-width: 74.9375em) { + .hide-for-large-only { + display: none !important; } } + +@media screen and (max-width: 63.9375em), screen and (min-width: 75em) { + .show-for-large-only { + display: none !important; } } + +.show-for-sr, +.show-on-focus { + position: absolute !important; + width: 1px; + height: 1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); } + +.show-on-focus:active, .show-on-focus:focus { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + +.show-for-landscape, +.hide-for-portrait { + display: block !important; } + @media screen and (orientation: landscape) { + .show-for-landscape, + .hide-for-portrait { + display: block !important; } } + @media screen and (orientation: portrait) { + .show-for-landscape, + .hide-for-portrait { + display: none !important; } } + +.hide-for-landscape, +.show-for-portrait { + display: none !important; } + @media screen and (orientation: landscape) { + .hide-for-landscape, + .show-for-portrait { + display: none !important; } } + @media screen and (orientation: portrait) { + .hide-for-landscape, + .show-for-portrait { + display: block !important; } } + +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.float-center { + display: block; + margin-left: auto; + margin-right: auto; } + +.clearfix::before, .clearfix::after { + content: ' '; + display: table; } + +.clearfix::after { + clear: both; } + +/*# sourceMappingURL=foundation.css.map */ diff --git a/libraries/foundation-6/js/vendor/foundation.js b/libraries/foundation-6/dist/foundation.js old mode 100644 new mode 100755 similarity index 99% rename from libraries/foundation-6/js/vendor/foundation.js rename to libraries/foundation-6/dist/foundation.js index 87e04589..63b04ace --- a/libraries/foundation-6/js/vendor/foundation.js +++ b/libraries/foundation-6/dist/foundation.js @@ -2,7 +2,7 @@ "use strict"; - var FOUNDATION_VERSION = '6.2.2'; + var FOUNDATION_VERSION = '6.2.3'; // Global Foundation object // This is attached to the window, or used as a module for AMD/Browserify @@ -388,217 +388,197 @@ !function ($) { - // Default set of media queries - var defaultQueries = { - 'default': 'only screen', - landscape: 'only screen and (orientation: landscape)', - portrait: 'only screen and (orientation: portrait)', - retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)' + Foundation.Box = { + ImNotTouchingYou: ImNotTouchingYou, + GetDimensions: GetDimensions, + GetOffsets: GetOffsets }; - var MediaQuery = { - queries: [], - - current: '', - - /** - * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher. - * @function - * @private - */ - _init: function () { - var self = this; - var extractedStyles = $('.foundation-mq').css('font-family'); - var namedQueries; + /** + * Compares the dimensions of an element to a container and determines collision events with container. + * @function + * @param {jQuery} element - jQuery object to test for collisions. + * @param {jQuery} parent - jQuery object to use as bounding container. + * @param {Boolean} lrOnly - set to true to check left and right values only. + * @param {Boolean} tbOnly - set to true to check top and bottom values only. + * @default if no parent object passed, detects collisions with `window`. + * @returns {Boolean} - true if collision free, false if a collision in any direction. + */ + function ImNotTouchingYou(element, parent, lrOnly, tbOnly) { + var eleDims = GetDimensions(element), + top, + bottom, + left, + right; - namedQueries = parseStyleToObject(extractedStyles); + if (parent) { + var parDims = GetDimensions(parent); - for (var key in namedQueries) { - if (namedQueries.hasOwnProperty(key)) { - self.queries.push({ - name: key, - value: 'only screen and (min-width: ' + namedQueries[key] + ')' - }); - } - } + bottom = eleDims.offset.top + eleDims.height <= parDims.height + parDims.offset.top; + top = eleDims.offset.top >= parDims.offset.top; + left = eleDims.offset.left >= parDims.offset.left; + right = eleDims.offset.left + eleDims.width <= parDims.width + parDims.offset.left; + } else { + bottom = eleDims.offset.top + eleDims.height <= eleDims.windowDims.height + eleDims.windowDims.offset.top; + top = eleDims.offset.top >= eleDims.windowDims.offset.top; + left = eleDims.offset.left >= eleDims.windowDims.offset.left; + right = eleDims.offset.left + eleDims.width <= eleDims.windowDims.width; + } - this.current = this._getCurrentSize(); + var allDirs = [bottom, top, left, right]; - this._watcher(); - }, + if (lrOnly) { + return left === right === true; + } + if (tbOnly) { + return top === bottom === true; + } - /** - * Checks if the screen is at least as wide as a breakpoint. - * @function - * @param {String} size - Name of the breakpoint to check. - * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller. - */ - atLeast: function (size) { - var query = this.get(size); + return allDirs.indexOf(false) === -1; + }; - if (query) { - return window.matchMedia(query).matches; - } + /** + * Uses native methods to return an object of dimension values. + * @function + * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window. + * @returns {Object} - nested object of integer pixel values + * TODO - if element is window, return only those values. + */ + function GetDimensions(elem, test) { + elem = elem.length ? elem[0] : elem; - return false; - }, + if (elem === window || elem === document) { + throw new Error("I'm sorry, Dave. I'm afraid I can't do that."); + } + var rect = elem.getBoundingClientRect(), + parRect = elem.parentNode.getBoundingClientRect(), + winRect = document.body.getBoundingClientRect(), + winY = window.pageYOffset, + winX = window.pageXOffset; - /** - * Gets the media query of a breakpoint. - * @function - * @param {String} size - Name of the breakpoint to get. - * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist. - */ - get: function (size) { - for (var i in this.queries) { - if (this.queries.hasOwnProperty(i)) { - var query = this.queries[i]; - if (size === query.name) return query.value; + return { + width: rect.width, + height: rect.height, + offset: { + top: rect.top + winY, + left: rect.left + winX + }, + parentDims: { + width: parRect.width, + height: parRect.height, + offset: { + top: parRect.top + winY, + left: parRect.left + winX } - } - - return null; - }, - - - /** - * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one). - * @function - * @private - * @returns {String} Name of the current breakpoint. - */ - _getCurrentSize: function () { - var matched; - - for (var i = 0; i < this.queries.length; i++) { - var query = this.queries[i]; - - if (window.matchMedia(query.value).matches) { - matched = query; + }, + windowDims: { + width: winRect.width, + height: winRect.height, + offset: { + top: winY, + left: winX } } - - if (typeof matched === 'object') { - return matched.name; - } else { - return matched; - } - }, - - - /** - * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes. - * @function - * @private - */ - _watcher: function () { - var _this = this; - - $(window).on('resize.zf.mediaquery', function () { - var newSize = _this._getCurrentSize(), - currentSize = _this.current; - - if (newSize !== currentSize) { - // Change the current media query - _this.current = newSize; - - // Broadcast the media query change on the window - $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]); - } - }); - } - }; - - Foundation.MediaQuery = MediaQuery; - - // matchMedia() polyfill - Test a CSS media type/query in JS. - // Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license - window.matchMedia || (window.matchMedia = function () { - 'use strict'; - - // For browsers that support matchMedium api such as IE 9 and webkit - - var styleMedia = window.styleMedia || window.media; - - // For those that don't support matchMedium - if (!styleMedia) { - var style = document.createElement('style'), - script = document.getElementsByTagName('script')[0], - info = null; - - style.type = 'text/css'; - style.id = 'matchmediajs-test'; - - script.parentNode.insertBefore(style, script); - - // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers - info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle; - - styleMedia = { - matchMedium: function (media) { - var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; - - // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers - if (style.styleSheet) { - style.styleSheet.cssText = text; - } else { - style.textContent = text; - } - - // Test if media query is true or false - return info.width === '1px'; - } - }; - } - - return function (media) { - return { - matches: styleMedia.matchMedium(media || 'all'), - media: media || 'all' - }; }; - }()); - - // Thank you: https://github.com/sindresorhus/query-string - function parseStyleToObject(str) { - var styleObject = {}; - - if (typeof str !== 'string') { - return styleObject; - } + } - str = str.trim().slice(1, -1); // browsers re-quote string style values + /** + * Returns an object of top and left integer pixel values for dynamically rendered elements, + * such as: Tooltip, Reveal, and Dropdown + * @function + * @param {jQuery} element - jQuery object for the element being positioned. + * @param {jQuery} anchor - jQuery object for the element's anchor point. + * @param {String} position - a string relating to the desired position of the element, relative to it's anchor + * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element. + * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element. + * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset. + * TODO alter/rewrite to work with `em` values as well/instead of pixels + */ + function GetOffsets(element, anchor, position, vOffset, hOffset, isOverflow) { + var $eleDims = GetDimensions(element), + $anchorDims = anchor ? GetDimensions(anchor) : null; - if (!str) { - return styleObject; + switch (position) { + case 'top': + return { + left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left, + top: $anchorDims.offset.top - ($eleDims.height + vOffset) + }; + break; + case 'left': + return { + left: $anchorDims.offset.left - ($eleDims.width + hOffset), + top: $anchorDims.offset.top + }; + break; + case 'right': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset, + top: $anchorDims.offset.top + }; + break; + case 'center top': + return { + left: $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2, + top: $anchorDims.offset.top - ($eleDims.height + vOffset) + }; + break; + case 'center bottom': + return { + left: isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2, + top: $anchorDims.offset.top + $anchorDims.height + vOffset + }; + break; + case 'center left': + return { + left: $anchorDims.offset.left - ($eleDims.width + hOffset), + top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2 + }; + break; + case 'center right': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset + 1, + top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2 + }; + break; + case 'center': + return { + left: $eleDims.windowDims.offset.left + $eleDims.windowDims.width / 2 - $eleDims.width / 2, + top: $eleDims.windowDims.offset.top + $eleDims.windowDims.height / 2 - $eleDims.height / 2 + }; + break; + case 'reveal': + return { + left: ($eleDims.windowDims.width - $eleDims.width) / 2, + top: $eleDims.windowDims.offset.top + vOffset + }; + case 'reveal full': + return { + left: $eleDims.windowDims.offset.left, + top: $eleDims.windowDims.offset.top + }; + break; + case 'left bottom': + return { + left: $anchorDims.offset.left - ($eleDims.width + hOffset), + top: $anchorDims.offset.top + $anchorDims.height + }; + break; + case 'right bottom': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset - $eleDims.width, + top: $anchorDims.offset.top + $anchorDims.height + }; + break; + default: + return { + left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left, + top: $anchorDims.offset.top + $anchorDims.height + vOffset + }; } - - styleObject = str.split('&').reduce(function (ret, param) { - var parts = param.replace(/\+/g, ' ').split('='); - var key = parts[0]; - var val = parts[1]; - key = decodeURIComponent(key); - - // missing `=` should be `null`: - // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters - val = val === undefined ? null : decodeURIComponent(val); - - if (!ret.hasOwnProperty(key)) { - ret[key] = val; - } else if (Array.isArray(ret[key])) { - ret[key].push(val); - } else { - ret[key] = [ret[key], val]; - } - return ret; - }, {}); - - return styleObject; } - - Foundation.MediaQuery = MediaQuery; }(jQuery); /******************************************* * * @@ -694,640 +674,417 @@ if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { return false; } //only have visible elements and those that have a tabindex greater or equal 0 - return true; - }); - }, - - - /** - * Returns the component name name - * @param {Object} component - Foundation component, e.g. Slider or Reveal - * @return String componentName - */ - - register: function (componentName, cmds) { - commands[componentName] = cmds; - } - }; - - /* - * Constants for easier comparing. - * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE - */ - function getKeyCodes(kcs) { - var k = {}; - for (var kc in kcs) { - k[kcs[kc]] = kcs[kc]; - }return k; - } - - Foundation.Keyboard = Keyboard; -}(jQuery); -'use strict'; - -!function ($) { - - /** - * Motion module. - * @module foundation.motion - */ - - var initClasses = ['mui-enter', 'mui-leave']; - var activeClasses = ['mui-enter-active', 'mui-leave-active']; - - var Motion = { - animateIn: function (element, animation, cb) { - animate(true, element, animation, cb); - }, - - animateOut: function (element, animation, cb) { - animate(false, element, animation, cb); - } - }; - - function Move(duration, elem, fn) { - var anim, - prog, - start = null; - // console.log('called'); - - function move(ts) { - if (!start) start = window.performance.now(); - // console.log(start, ts); - prog = ts - start; - fn.apply(elem); - - if (prog < duration) { - anim = window.requestAnimationFrame(move, elem); - } else { - window.cancelAnimationFrame(anim); - elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]); - } - } - anim = window.requestAnimationFrame(move); - } - - /** - * Animates an element in or out using a CSS transition class. - * @function - * @private - * @param {Boolean} isIn - Defines if the animation is in or out. - * @param {Object} element - jQuery or HTML object to animate. - * @param {String} animation - CSS class to use. - * @param {Function} cb - Callback to run when animation is finished. - */ - function animate(isIn, element, animation, cb) { - element = $(element).eq(0); - - if (!element.length) return; - - var initClass = isIn ? initClasses[0] : initClasses[1]; - var activeClass = isIn ? activeClasses[0] : activeClasses[1]; - - // Set up the animation - reset(); - - element.addClass(animation).css('transition', 'none'); - - requestAnimationFrame(function () { - element.addClass(initClass); - if (isIn) element.show(); - }); + return true; + }); + }, - // Start the animation - requestAnimationFrame(function () { - element[0].offsetWidth; - element.css('transition', '').addClass(activeClass); - }); - // Clean up the animation when it finishes - element.one(Foundation.transitionend(element), finish); + /** + * Returns the component name name + * @param {Object} component - Foundation component, e.g. Slider or Reveal + * @return String componentName + */ - // Hides the element (for out animations), resets the element, and runs a callback - function finish() { - if (!isIn) element.hide(); - reset(); - if (cb) cb.apply(element); + register: function (componentName, cmds) { + commands[componentName] = cmds; } + }; - // Resets transitions and removes motion-specific classes - function reset() { - element[0].style.transitionDuration = 0; - element.removeClass(initClass + ' ' + activeClass + ' ' + animation); - } + /* + * Constants for easier comparing. + * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE + */ + function getKeyCodes(kcs) { + var k = {}; + for (var kc in kcs) { + k[kcs[kc]] = kcs[kc]; + }return k; } - Foundation.Move = Move; - Foundation.Motion = Motion; + Foundation.Keyboard = Keyboard; }(jQuery); 'use strict'; !function ($) { - var Nest = { - Feather: function (menu) { - var type = arguments.length <= 1 || arguments[1] === undefined ? 'zf' : arguments[1]; + // Default set of media queries + var defaultQueries = { + 'default': 'only screen', + landscape: 'only screen and (orientation: landscape)', + portrait: 'only screen and (orientation: portrait)', + retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)' + }; - menu.attr('role', 'menubar'); + var MediaQuery = { + queries: [], - var items = menu.find('li').attr({ 'role': 'menuitem' }), - subMenuClass = 'is-' + type + '-submenu', - subItemClass = subMenuClass + '-item', - hasSubClass = 'is-' + type + '-submenu-parent'; + current: '', - menu.find('a:first').attr('tabindex', 0); + /** + * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher. + * @function + * @private + */ + _init: function () { + var self = this; + var extractedStyles = $('.foundation-mq').css('font-family'); + var namedQueries; - items.each(function () { - var $item = $(this), - $sub = $item.children('ul'); + namedQueries = parseStyleToObject(extractedStyles); - if ($sub.length) { - $item.addClass(hasSubClass).attr({ - 'aria-haspopup': true, - 'aria-expanded': false, - 'aria-label': $item.children('a:first').text() + for (var key in namedQueries) { + if (namedQueries.hasOwnProperty(key)) { + self.queries.push({ + name: key, + value: 'only screen and (min-width: ' + namedQueries[key] + ')' }); + } + } - $sub.addClass('submenu ' + subMenuClass).attr({ - 'data-submenu': '', - 'aria-hidden': true, - 'role': 'menu' - }); + this.current = this._getCurrentSize(); + + this._watcher(); + }, + + + /** + * Checks if the screen is at least as wide as a breakpoint. + * @function + * @param {String} size - Name of the breakpoint to check. + * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller. + */ + atLeast: function (size) { + var query = this.get(size); + + if (query) { + return window.matchMedia(query).matches; + } + + return false; + }, + + + /** + * Gets the media query of a breakpoint. + * @function + * @param {String} size - Name of the breakpoint to get. + * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist. + */ + get: function (size) { + for (var i in this.queries) { + if (this.queries.hasOwnProperty(i)) { + var query = this.queries[i]; + if (size === query.name) return query.value; } + } - if ($item.parent('[data-submenu]').length) { - $item.addClass('is-submenu-item ' + subItemClass); + return null; + }, + + + /** + * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one). + * @function + * @private + * @returns {String} Name of the current breakpoint. + */ + _getCurrentSize: function () { + var matched; + + for (var i = 0; i < this.queries.length; i++) { + var query = this.queries[i]; + + if (window.matchMedia(query.value).matches) { + matched = query; } - }); + } - return; + if (typeof matched === 'object') { + return matched.name; + } else { + return matched; + } }, - Burn: function (menu, type) { - var items = menu.find('li').removeAttr('tabindex'), - subMenuClass = 'is-' + type + '-submenu', - subItemClass = subMenuClass + '-item', - hasSubClass = 'is-' + type + '-submenu-parent'; - menu.find('*').removeClass(subMenuClass + ' ' + subItemClass + ' ' + hasSubClass + ' is-submenu-item submenu is-active').removeAttr('data-submenu').css('display', ''); - // console.log( menu.find('.' + subMenuClass + ', .' + subItemClass + ', .has-submenu, .is-submenu-item, .submenu, [data-submenu]') - // .removeClass(subMenuClass + ' ' + subItemClass + ' has-submenu is-submenu-item submenu') - // .removeAttr('data-submenu')); - // items.each(function(){ - // var $item = $(this), - // $sub = $item.children('ul'); - // if($item.parent('[data-submenu]').length){ - // $item.removeClass('is-submenu-item ' + subItemClass); - // } - // if($sub.length){ - // $item.removeClass('has-submenu'); - // $sub.removeClass('submenu ' + subMenuClass).removeAttr('data-submenu'); - // } - // }); + /** + * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes. + * @function + * @private + */ + _watcher: function () { + var _this = this; + + $(window).on('resize.zf.mediaquery', function () { + var newSize = _this._getCurrentSize(), + currentSize = _this.current; + + if (newSize !== currentSize) { + // Change the current media query + _this.current = newSize; + + // Broadcast the media query change on the window + $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]); + } + }); } }; - Foundation.Nest = Nest; -}(jQuery); -'use strict'; + Foundation.MediaQuery = MediaQuery; -!function ($) { + // matchMedia() polyfill - Test a CSS media type/query in JS. + // Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license + window.matchMedia || (window.matchMedia = function () { + 'use strict'; - Foundation.Box = { - ImNotTouchingYou: ImNotTouchingYou, - GetDimensions: GetDimensions, - GetOffsets: GetOffsets - }; + // For browsers that support matchMedium api such as IE 9 and webkit - /** - * Compares the dimensions of an element to a container and determines collision events with container. - * @function - * @param {jQuery} element - jQuery object to test for collisions. - * @param {jQuery} parent - jQuery object to use as bounding container. - * @param {Boolean} lrOnly - set to true to check left and right values only. - * @param {Boolean} tbOnly - set to true to check top and bottom values only. - * @default if no parent object passed, detects collisions with `window`. - * @returns {Boolean} - true if collision free, false if a collision in any direction. - */ - function ImNotTouchingYou(element, parent, lrOnly, tbOnly) { - var eleDims = GetDimensions(element), - top, - bottom, - left, - right; + var styleMedia = window.styleMedia || window.media; - if (parent) { - var parDims = GetDimensions(parent); + // For those that don't support matchMedium + if (!styleMedia) { + var style = document.createElement('style'), + script = document.getElementsByTagName('script')[0], + info = null; - bottom = eleDims.offset.top + eleDims.height <= parDims.height + parDims.offset.top; - top = eleDims.offset.top >= parDims.offset.top; - left = eleDims.offset.left >= parDims.offset.left; - right = eleDims.offset.left + eleDims.width <= parDims.width + parDims.offset.left; - } else { - bottom = eleDims.offset.top + eleDims.height <= eleDims.windowDims.height + eleDims.windowDims.offset.top; - top = eleDims.offset.top >= eleDims.windowDims.offset.top; - left = eleDims.offset.left >= eleDims.windowDims.offset.left; - right = eleDims.offset.left + eleDims.width <= eleDims.windowDims.width; + style.type = 'text/css'; + style.id = 'matchmediajs-test'; + + script.parentNode.insertBefore(style, script); + + // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers + info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle; + + styleMedia = { + matchMedium: function (media) { + var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; + + // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers + if (style.styleSheet) { + style.styleSheet.cssText = text; + } else { + style.textContent = text; + } + + // Test if media query is true or false + return info.width === '1px'; + } + }; } - var allDirs = [bottom, top, left, right]; + return function (media) { + return { + matches: styleMedia.matchMedium(media || 'all'), + media: media || 'all' + }; + }; + }()); - if (lrOnly) { - return left === right === true; - } + // Thank you: https://github.com/sindresorhus/query-string + function parseStyleToObject(str) { + var styleObject = {}; - if (tbOnly) { - return top === bottom === true; + if (typeof str !== 'string') { + return styleObject; } - return allDirs.indexOf(false) === -1; - }; - - /** - * Uses native methods to return an object of dimension values. - * @function - * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window. - * @returns {Object} - nested object of integer pixel values - * TODO - if element is window, return only those values. - */ - function GetDimensions(elem, test) { - elem = elem.length ? elem[0] : elem; + str = str.trim().slice(1, -1); // browsers re-quote string style values - if (elem === window || elem === document) { - throw new Error("I'm sorry, Dave. I'm afraid I can't do that."); + if (!str) { + return styleObject; } - var rect = elem.getBoundingClientRect(), - parRect = elem.parentNode.getBoundingClientRect(), - winRect = document.body.getBoundingClientRect(), - winY = window.pageYOffset, - winX = window.pageXOffset; + styleObject = str.split('&').reduce(function (ret, param) { + var parts = param.replace(/\+/g, ' ').split('='); + var key = parts[0]; + var val = parts[1]; + key = decodeURIComponent(key); - return { - width: rect.width, - height: rect.height, - offset: { - top: rect.top + winY, - left: rect.left + winX - }, - parentDims: { - width: parRect.width, - height: parRect.height, - offset: { - top: parRect.top + winY, - left: parRect.left + winX - } - }, - windowDims: { - width: winRect.width, - height: winRect.height, - offset: { - top: winY, - left: winX - } - } - }; - } + // missing `=` should be `null`: + // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters + val = val === undefined ? null : decodeURIComponent(val); - /** - * Returns an object of top and left integer pixel values for dynamically rendered elements, - * such as: Tooltip, Reveal, and Dropdown - * @function - * @param {jQuery} element - jQuery object for the element being positioned. - * @param {jQuery} anchor - jQuery object for the element's anchor point. - * @param {String} position - a string relating to the desired position of the element, relative to it's anchor - * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element. - * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element. - * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset. - * TODO alter/rewrite to work with `em` values as well/instead of pixels - */ - function GetOffsets(element, anchor, position, vOffset, hOffset, isOverflow) { - var $eleDims = GetDimensions(element), - $anchorDims = anchor ? GetDimensions(anchor) : null; + if (!ret.hasOwnProperty(key)) { + ret[key] = val; + } else if (Array.isArray(ret[key])) { + ret[key].push(val); + } else { + ret[key] = [ret[key], val]; + } + return ret; + }, {}); - switch (position) { - case 'top': - return { - left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left, - top: $anchorDims.offset.top - ($eleDims.height + vOffset) - }; - break; - case 'left': - return { - left: $anchorDims.offset.left - ($eleDims.width + hOffset), - top: $anchorDims.offset.top - }; - break; - case 'right': - return { - left: $anchorDims.offset.left + $anchorDims.width + hOffset, - top: $anchorDims.offset.top - }; - break; - case 'center top': - return { - left: $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2, - top: $anchorDims.offset.top - ($eleDims.height + vOffset) - }; - break; - case 'center bottom': - return { - left: isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2, - top: $anchorDims.offset.top + $anchorDims.height + vOffset - }; - break; - case 'center left': - return { - left: $anchorDims.offset.left - ($eleDims.width + hOffset), - top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2 - }; - break; - case 'center right': - return { - left: $anchorDims.offset.left + $anchorDims.width + hOffset + 1, - top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2 - }; - break; - case 'center': - return { - left: $eleDims.windowDims.offset.left + $eleDims.windowDims.width / 2 - $eleDims.width / 2, - top: $eleDims.windowDims.offset.top + $eleDims.windowDims.height / 2 - $eleDims.height / 2 - }; - break; - case 'reveal': - return { - left: ($eleDims.windowDims.width - $eleDims.width) / 2, - top: $eleDims.windowDims.offset.top + vOffset - }; - case 'reveal full': - return { - left: $eleDims.windowDims.offset.left, - top: $eleDims.windowDims.offset.top - }; - break; - case 'left bottom': - return { - left: $anchorDims.offset.left - ($eleDims.width + hOffset), - top: $anchorDims.offset.top + $anchorDims.height - }; - break; - case 'right bottom': - return { - left: $anchorDims.offset.left + $anchorDims.width + hOffset - $eleDims.width, - top: $anchorDims.offset.top + $anchorDims.height - }; - break; - default: - return { - left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left, - top: $anchorDims.offset.top + $anchorDims.height + vOffset - }; - } + return styleObject; } + + Foundation.MediaQuery = MediaQuery; }(jQuery); 'use strict'; !function ($) { - var MutationObserver = function () { - var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; - for (var i = 0; i < prefixes.length; i++) { - if (prefixes[i] + 'MutationObserver' in window) { - return window[prefixes[i] + 'MutationObserver']; - } - } - return false; - }(); - - var triggers = function (el, type) { - el.data(type).split(' ').forEach(function (id) { - $('#' + id)[type === 'close' ? 'trigger' : 'triggerHandler'](type + '.zf.trigger', [el]); - }); - }; - // Elements with [data-open] will reveal a plugin that supports it when clicked. - $(document).on('click.zf.trigger', '[data-open]', function () { - triggers($(this), 'open'); - }); - - // Elements with [data-close] will close a plugin that supports it when clicked. - // If used without a value on [data-close], the event will bubble, allowing it to close a parent component. - $(document).on('click.zf.trigger', '[data-close]', function () { - var id = $(this).data('close'); - if (id) { - triggers($(this), 'close'); - } else { - $(this).trigger('close.zf.trigger'); - } - }); + /** + * Motion module. + * @module foundation.motion + */ - // Elements with [data-toggle] will toggle a plugin that supports it when clicked. - $(document).on('click.zf.trigger', '[data-toggle]', function () { - triggers($(this), 'toggle'); - }); + var initClasses = ['mui-enter', 'mui-leave']; + var activeClasses = ['mui-enter-active', 'mui-leave-active']; - // Elements with [data-closable] will respond to close.zf.trigger events. - $(document).on('close.zf.trigger', '[data-closable]', function (e) { - e.stopPropagation(); - var animation = $(this).data('closable'); + var Motion = { + animateIn: function (element, animation, cb) { + animate(true, element, animation, cb); + }, - if (animation !== '') { - Foundation.Motion.animateOut($(this), animation, function () { - $(this).trigger('closed.zf'); - }); - } else { - $(this).fadeOut().trigger('closed.zf'); + animateOut: function (element, animation, cb) { + animate(false, element, animation, cb); } - }); - - $(document).on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', function () { - var id = $(this).data('toggle-focus'); - $('#' + id).triggerHandler('toggle.zf.trigger', [$(this)]); - }); - - /** - * Fires once after all other scripts have loaded - * @function - * @private - */ - $(window).load(function () { - checkListeners(); - }); + }; - function checkListeners() { - eventsListener(); - resizeListener(); - scrollListener(); - closemeListener(); - } + function Move(duration, elem, fn) { + var anim, + prog, + start = null; + // console.log('called'); - //******** only fires this function once on load, if there's something to watch ******** - function closemeListener(pluginName) { - var yetiBoxes = $('[data-yeti-box]'), - plugNames = ['dropdown', 'tooltip', 'reveal']; + function move(ts) { + if (!start) start = window.performance.now(); + // console.log(start, ts); + prog = ts - start; + fn.apply(elem); - if (pluginName) { - if (typeof pluginName === 'string') { - plugNames.push(pluginName); - } else if (typeof pluginName === 'object' && typeof pluginName[0] === 'string') { - plugNames.concat(pluginName); + if (prog < duration) { + anim = window.requestAnimationFrame(move, elem); } else { - console.error('Plugin names must be strings'); + window.cancelAnimationFrame(anim); + elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]); } } - if (yetiBoxes.length) { - var listeners = plugNames.map(function (name) { - return 'closeme.zf.' + name; - }).join(' '); + anim = window.requestAnimationFrame(move); + } - $(window).off(listeners).on(listeners, function (e, pluginId) { - var plugin = e.namespace.split('.')[0]; - var plugins = $('[data-' + plugin + ']').not('[data-yeti-box="' + pluginId + '"]'); + /** + * Animates an element in or out using a CSS transition class. + * @function + * @private + * @param {Boolean} isIn - Defines if the animation is in or out. + * @param {Object} element - jQuery or HTML object to animate. + * @param {String} animation - CSS class to use. + * @param {Function} cb - Callback to run when animation is finished. + */ + function animate(isIn, element, animation, cb) { + element = $(element).eq(0); - plugins.each(function () { - var _this = $(this); + if (!element.length) return; - _this.triggerHandler('close.zf.trigger', [_this]); - }); - }); - } - } + var initClass = isIn ? initClasses[0] : initClasses[1]; + var activeClass = isIn ? activeClasses[0] : activeClasses[1]; - function resizeListener(debounce) { - var timer = void 0, - $nodes = $('[data-resize]'); - if ($nodes.length) { - $(window).off('resize.zf.trigger').on('resize.zf.trigger', function (e) { - if (timer) { - clearTimeout(timer); - } + // Set up the animation + reset(); - timer = setTimeout(function () { + element.addClass(animation).css('transition', 'none'); - if (!MutationObserver) { - //fallback for IE 9 - $nodes.each(function () { - $(this).triggerHandler('resizeme.zf.trigger'); - }); - } - //trigger all listening elements and signal a resize event - $nodes.attr('data-events', "resize"); - }, debounce || 10); //default time to emit resize event - }); - } - } + requestAnimationFrame(function () { + element.addClass(initClass); + if (isIn) element.show(); + }); - function scrollListener(debounce) { - var timer = void 0, - $nodes = $('[data-scroll]'); - if ($nodes.length) { - $(window).off('scroll.zf.trigger').on('scroll.zf.trigger', function (e) { - if (timer) { - clearTimeout(timer); - } + // Start the animation + requestAnimationFrame(function () { + element[0].offsetWidth; + element.css('transition', '').addClass(activeClass); + }); - timer = setTimeout(function () { + // Clean up the animation when it finishes + element.one(Foundation.transitionend(element), finish); - if (!MutationObserver) { - //fallback for IE 9 - $nodes.each(function () { - $(this).triggerHandler('scrollme.zf.trigger'); - }); - } - //trigger all listening elements and signal a scroll event - $nodes.attr('data-events', "scroll"); - }, debounce || 10); //default time to emit scroll event - }); + // Hides the element (for out animations), resets the element, and runs a callback + function finish() { + if (!isIn) element.hide(); + reset(); + if (cb) cb.apply(element); } - } - function eventsListener() { - if (!MutationObserver) { - return false; + // Resets transitions and removes motion-specific classes + function reset() { + element[0].style.transitionDuration = 0; + element.removeClass(initClass + ' ' + activeClass + ' ' + animation); } - var nodes = document.querySelectorAll('[data-resize], [data-scroll], [data-mutate]'); + } - //element callback - var listeningElementsMutation = function (mutationRecordsList) { - var $target = $(mutationRecordsList[0].target); - //trigger the event handler for the element depending on type - switch ($target.attr("data-events")) { + Foundation.Move = Move; + Foundation.Motion = Motion; +}(jQuery); +'use strict'; - case "resize": - $target.triggerHandler('resizeme.zf.trigger', [$target]); - break; +!function ($) { - case "scroll": - $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); - break; + var Nest = { + Feather: function (menu) { + var type = arguments.length <= 1 || arguments[1] === undefined ? 'zf' : arguments[1]; - // case "mutate" : - // console.log('mutate', $target); - // $target.triggerHandler('mutate.zf.trigger'); - // - // //make sure we don't get stuck in an infinite loop from sloppy codeing - // if ($target.index('[data-mutate]') == $("[data-mutate]").length-1) { - // domMutationObserver(); - // } - // break; + menu.attr('role', 'menubar'); - default: - return false; - //nothing - } - }; + var items = menu.find('li').attr({ 'role': 'menuitem' }), + subMenuClass = 'is-' + type + '-submenu', + subItemClass = subMenuClass + '-item', + hasSubClass = 'is-' + type + '-submenu-parent'; - if (nodes.length) { - //for each element that needs to listen for resizing, scrolling, (or coming soon mutation) add a single observer - for (var i = 0; i <= nodes.length - 1; i++) { - var elementObserver = new MutationObserver(listeningElementsMutation); - elementObserver.observe(nodes[i], { attributes: true, childList: false, characterData: false, subtree: false, attributeFilter: ["data-events"] }); - } - } - } + menu.find('a:first').attr('tabindex', 0); - // ------------------------------------ + items.each(function () { + var $item = $(this), + $sub = $item.children('ul'); - // [PH] - // Foundation.CheckWatchers = checkWatchers; - Foundation.IHearYou = checkListeners; - // Foundation.ISeeYou = scrollListener; - // Foundation.IFeelYou = closemeListener; -}(jQuery); + if ($sub.length) { + $item.addClass(hasSubClass).attr({ + 'aria-haspopup': true, + 'aria-expanded': false, + 'aria-label': $item.children('a:first').text() + }); -// function domMutationObserver(debounce) { -// // !!! This is coming soon and needs more work; not active !!! // -// var timer, -// nodes = document.querySelectorAll('[data-mutate]'); -// // -// if (nodes.length) { -// // var MutationObserver = (function () { -// // var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; -// // for (var i=0; i < prefixes.length; i++) { -// // if (prefixes[i] + 'MutationObserver' in window) { -// // return window[prefixes[i] + 'MutationObserver']; -// // } -// // } -// // return false; -// // }()); -// -// -// //for the body, we need to listen for all changes effecting the style and class attributes -// var bodyObserver = new MutationObserver(bodyMutation); -// bodyObserver.observe(document.body, { attributes: true, childList: true, characterData: false, subtree:true, attributeFilter:["style", "class"]}); -// -// -// //body callback -// function bodyMutation(mutate) { -// //trigger all listening elements and signal a mutation event -// if (timer) { clearTimeout(timer); } -// -// timer = setTimeout(function() { -// bodyObserver.disconnect(); -// $('[data-mutate]').attr('data-events',"mutate"); -// }, debounce || 150); -// } -// } -// } + $sub.addClass('submenu ' + subMenuClass).attr({ + 'data-submenu': '', + 'aria-hidden': true, + 'role': 'menu' + }); + } + + if ($item.parent('[data-submenu]').length) { + $item.addClass('is-submenu-item ' + subItemClass); + } + }); + + return; + }, + Burn: function (menu, type) { + var items = menu.find('li').removeAttr('tabindex'), + subMenuClass = 'is-' + type + '-submenu', + subItemClass = subMenuClass + '-item', + hasSubClass = 'is-' + type + '-submenu-parent'; + + menu.find('*').removeClass(subMenuClass + ' ' + subItemClass + ' ' + hasSubClass + ' is-submenu-item submenu is-active').removeAttr('data-submenu').css('display', ''); + + // console.log( menu.find('.' + subMenuClass + ', .' + subItemClass + ', .has-submenu, .is-submenu-item, .submenu, [data-submenu]') + // .removeClass(subMenuClass + ' ' + subItemClass + ' has-submenu is-submenu-item submenu') + // .removeAttr('data-submenu')); + // items.each(function(){ + // var $item = $(this), + // $sub = $item.children('ul'); + // if($item.parent('[data-submenu]').length){ + // $item.removeClass('is-submenu-item ' + subItemClass); + // } + // if($sub.length){ + // $item.removeClass('has-submenu'); + // $sub.removeClass('submenu ' + subMenuClass).removeAttr('data-submenu'); + // } + // }); + } + }; + + Foundation.Nest = Nest; +}(jQuery); 'use strict'; !function ($) { @@ -1766,6 +1523,249 @@ */ 'use strict'; +!function ($) { + + var MutationObserver = function () { + var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; + for (var i = 0; i < prefixes.length; i++) { + if (prefixes[i] + 'MutationObserver' in window) { + return window[prefixes[i] + 'MutationObserver']; + } + } + return false; + }(); + + var triggers = function (el, type) { + el.data(type).split(' ').forEach(function (id) { + $('#' + id)[type === 'close' ? 'trigger' : 'triggerHandler'](type + '.zf.trigger', [el]); + }); + }; + // Elements with [data-open] will reveal a plugin that supports it when clicked. + $(document).on('click.zf.trigger', '[data-open]', function () { + triggers($(this), 'open'); + }); + + // Elements with [data-close] will close a plugin that supports it when clicked. + // If used without a value on [data-close], the event will bubble, allowing it to close a parent component. + $(document).on('click.zf.trigger', '[data-close]', function () { + var id = $(this).data('close'); + if (id) { + triggers($(this), 'close'); + } else { + $(this).trigger('close.zf.trigger'); + } + }); + + // Elements with [data-toggle] will toggle a plugin that supports it when clicked. + $(document).on('click.zf.trigger', '[data-toggle]', function () { + triggers($(this), 'toggle'); + }); + + // Elements with [data-closable] will respond to close.zf.trigger events. + $(document).on('close.zf.trigger', '[data-closable]', function (e) { + e.stopPropagation(); + var animation = $(this).data('closable'); + + if (animation !== '') { + Foundation.Motion.animateOut($(this), animation, function () { + $(this).trigger('closed.zf'); + }); + } else { + $(this).fadeOut().trigger('closed.zf'); + } + }); + + $(document).on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', function () { + var id = $(this).data('toggle-focus'); + $('#' + id).triggerHandler('toggle.zf.trigger', [$(this)]); + }); + + /** + * Fires once after all other scripts have loaded + * @function + * @private + */ + $(window).load(function () { + checkListeners(); + }); + + function checkListeners() { + eventsListener(); + resizeListener(); + scrollListener(); + closemeListener(); + } + + //******** only fires this function once on load, if there's something to watch ******** + function closemeListener(pluginName) { + var yetiBoxes = $('[data-yeti-box]'), + plugNames = ['dropdown', 'tooltip', 'reveal']; + + if (pluginName) { + if (typeof pluginName === 'string') { + plugNames.push(pluginName); + } else if (typeof pluginName === 'object' && typeof pluginName[0] === 'string') { + plugNames.concat(pluginName); + } else { + console.error('Plugin names must be strings'); + } + } + if (yetiBoxes.length) { + var listeners = plugNames.map(function (name) { + return 'closeme.zf.' + name; + }).join(' '); + + $(window).off(listeners).on(listeners, function (e, pluginId) { + var plugin = e.namespace.split('.')[0]; + var plugins = $('[data-' + plugin + ']').not('[data-yeti-box="' + pluginId + '"]'); + + plugins.each(function () { + var _this = $(this); + + _this.triggerHandler('close.zf.trigger', [_this]); + }); + }); + } + } + + function resizeListener(debounce) { + var timer = void 0, + $nodes = $('[data-resize]'); + if ($nodes.length) { + $(window).off('resize.zf.trigger').on('resize.zf.trigger', function (e) { + if (timer) { + clearTimeout(timer); + } + + timer = setTimeout(function () { + + if (!MutationObserver) { + //fallback for IE 9 + $nodes.each(function () { + $(this).triggerHandler('resizeme.zf.trigger'); + }); + } + //trigger all listening elements and signal a resize event + $nodes.attr('data-events', "resize"); + }, debounce || 10); //default time to emit resize event + }); + } + } + + function scrollListener(debounce) { + var timer = void 0, + $nodes = $('[data-scroll]'); + if ($nodes.length) { + $(window).off('scroll.zf.trigger').on('scroll.zf.trigger', function (e) { + if (timer) { + clearTimeout(timer); + } + + timer = setTimeout(function () { + + if (!MutationObserver) { + //fallback for IE 9 + $nodes.each(function () { + $(this).triggerHandler('scrollme.zf.trigger'); + }); + } + //trigger all listening elements and signal a scroll event + $nodes.attr('data-events', "scroll"); + }, debounce || 10); //default time to emit scroll event + }); + } + } + + function eventsListener() { + if (!MutationObserver) { + return false; + } + var nodes = document.querySelectorAll('[data-resize], [data-scroll], [data-mutate]'); + + //element callback + var listeningElementsMutation = function (mutationRecordsList) { + var $target = $(mutationRecordsList[0].target); + //trigger the event handler for the element depending on type + switch ($target.attr("data-events")) { + + case "resize": + $target.triggerHandler('resizeme.zf.trigger', [$target]); + break; + + case "scroll": + $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); + break; + + // case "mutate" : + // console.log('mutate', $target); + // $target.triggerHandler('mutate.zf.trigger'); + // + // //make sure we don't get stuck in an infinite loop from sloppy codeing + // if ($target.index('[data-mutate]') == $("[data-mutate]").length-1) { + // domMutationObserver(); + // } + // break; + + default: + return false; + //nothing + } + }; + + if (nodes.length) { + //for each element that needs to listen for resizing, scrolling, (or coming soon mutation) add a single observer + for (var i = 0; i <= nodes.length - 1; i++) { + var elementObserver = new MutationObserver(listeningElementsMutation); + elementObserver.observe(nodes[i], { attributes: true, childList: false, characterData: false, subtree: false, attributeFilter: ["data-events"] }); + } + } + } + + // ------------------------------------ + + // [PH] + // Foundation.CheckWatchers = checkWatchers; + Foundation.IHearYou = checkListeners; + // Foundation.ISeeYou = scrollListener; + // Foundation.IFeelYou = closemeListener; +}(jQuery); + +// function domMutationObserver(debounce) { +// // !!! This is coming soon and needs more work; not active !!! // +// var timer, +// nodes = document.querySelectorAll('[data-mutate]'); +// // +// if (nodes.length) { +// // var MutationObserver = (function () { +// // var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; +// // for (var i=0; i < prefixes.length; i++) { +// // if (prefixes[i] + 'MutationObserver' in window) { +// // return window[prefixes[i] + 'MutationObserver']; +// // } +// // } +// // return false; +// // }()); +// +// +// //for the body, we need to listen for all changes effecting the style and class attributes +// var bodyObserver = new MutationObserver(bodyMutation); +// bodyObserver.observe(document.body, { attributes: true, childList: true, characterData: false, subtree:true, attributeFilter:["style", "class"]}); +// +// +// //body callback +// function bodyMutation(mutate) { +// //trigger all listening elements and signal a mutation event +// if (timer) { clearTimeout(timer); } +// +// timer = setTimeout(function() { +// bodyObserver.disconnect(); +// $('[data-mutate]').attr('data-events',"mutate"); +// }, debounce || 150); +// } +// } +// } +'use strict'; + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -9066,4 +9066,4 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons // Window exports Foundation.plugin(Tooltip, 'Tooltip'); -}(jQuery); \ No newline at end of file +}(jQuery); diff --git a/libraries/foundation-6/dist/foundation.min.css b/libraries/foundation-6/dist/foundation.min.css new file mode 100755 index 00000000..81418ac0 --- /dev/null +++ b/libraries/foundation-6/dist/foundation.min.css @@ -0,0 +1,2 @@ +@charset "UTF-8"; +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:not-allowed}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{font-size:100%;box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{padding:0;margin:0;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;line-height:1.5;color:#0a0a0a;background:#fefefe;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{max-width:100%;height:auto;-ms-interpolation-mode:bicubic;display:inline-block;vertical-align:middle}textarea{height:auto;min-height:50px;border-radius:0}select{width:100%;border-radius:0}#map_canvas embed,#map_canvas img,#map_canvas object,.map_canvas embed,.map_canvas img,.map_canvas object,.mqa-display embed,.mqa-display img,.mqa-display object{max-width:none!important}button{-webkit-appearance:none;-moz-appearance:none;background:transparent;padding:0;border:0;border-radius:0;line-height:1}[data-whatinput=mouse] button{outline:0}.is-visible{display:block!important}.is-hidden{display:none!important}.row{max-width:75rem;margin-left:auto;margin-right:auto}.row:after,.row:before{content:' ';display:table}.row:after{clear:both}.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0}.row .row{max-width:none;margin-left:-.625rem;margin-right:-.625rem}@media screen and (min-width:40em){.row .row{margin-left:-.9375rem;margin-right:-.9375rem}}.row .row.collapse{margin-left:0;margin-right:0}.row.expanded{max-width:none}.row.expanded .row{margin-left:auto;margin-right:auto}.column,.columns{width:100%;float:left;padding-left:.625rem;padding-right:.625rem}@media screen and (min-width:40em){.column,.columns{padding-left:.9375rem;padding-right:.9375rem}}.column:last-child:not(:first-child),.columns:last-child:not(:first-child){float:right}.column.end:last-child:last-child,.end.columns:last-child:last-child{float:left}.column.row.row,.row.row.columns{float:none}.row .column.row.row,.row .row.row.columns{padding-left:0;padding-right:0;margin-left:0;margin-right:0}.small-1{width:8.33333%}.small-push-1{position:relative;left:8.33333%}.small-pull-1{position:relative;left:-8.33333%}.small-offset-0{margin-left:0}.small-2{width:16.66667%}.small-push-2{position:relative;left:16.66667%}.small-pull-2{position:relative;left:-16.66667%}.small-offset-1{margin-left:8.33333%}.small-3{width:25%}.small-push-3{position:relative;left:25%}.small-pull-3{position:relative;left:-25%}.small-offset-2{margin-left:16.66667%}.small-4{width:33.33333%}.small-push-4{position:relative;left:33.33333%}.small-pull-4{position:relative;left:-33.33333%}.small-offset-3{margin-left:25%}.small-5{width:41.66667%}.small-push-5{position:relative;left:41.66667%}.small-pull-5{position:relative;left:-41.66667%}.small-offset-4{margin-left:33.33333%}.small-6{width:50%}.small-push-6{position:relative;left:50%}.small-pull-6{position:relative;left:-50%}.small-offset-5{margin-left:41.66667%}.small-7{width:58.33333%}.small-push-7{position:relative;left:58.33333%}.small-pull-7{position:relative;left:-58.33333%}.small-offset-6{margin-left:50%}.small-8{width:66.66667%}.small-push-8{position:relative;left:66.66667%}.small-pull-8{position:relative;left:-66.66667%}.small-offset-7{margin-left:58.33333%}.small-9{width:75%}.small-push-9{position:relative;left:75%}.small-pull-9{position:relative;left:-75%}.small-offset-8{margin-left:66.66667%}.small-10{width:83.33333%}.small-push-10{position:relative;left:83.33333%}.small-pull-10{position:relative;left:-83.33333%}.small-offset-9{margin-left:75%}.small-11{width:91.66667%}.small-push-11{position:relative;left:91.66667%}.small-pull-11{position:relative;left:-91.66667%}.small-offset-10{margin-left:83.33333%}.small-12{width:100%}.small-offset-11{margin-left:91.66667%}.small-up-1>.column,.small-up-1>.columns{width:100%;float:left}.small-up-1>.column:nth-of-type(1n),.small-up-1>.columns:nth-of-type(1n){clear:none}.small-up-1>.column:nth-of-type(1n+1),.small-up-1>.columns:nth-of-type(1n+1){clear:both}.small-up-1>.column:last-child,.small-up-1>.columns:last-child{float:left}.small-up-2>.column,.small-up-2>.columns{width:50%;float:left}.small-up-2>.column:nth-of-type(1n),.small-up-2>.columns:nth-of-type(1n){clear:none}.small-up-2>.column:nth-of-type(2n+1),.small-up-2>.columns:nth-of-type(2n+1){clear:both}.small-up-2>.column:last-child,.small-up-2>.columns:last-child{float:left}.small-up-3>.column,.small-up-3>.columns{width:33.33333%;float:left}.small-up-3>.column:nth-of-type(1n),.small-up-3>.columns:nth-of-type(1n){clear:none}.small-up-3>.column:nth-of-type(3n+1),.small-up-3>.columns:nth-of-type(3n+1){clear:both}.small-up-3>.column:last-child,.small-up-3>.columns:last-child{float:left}.small-up-4>.column,.small-up-4>.columns{width:25%;float:left}.small-up-4>.column:nth-of-type(1n),.small-up-4>.columns:nth-of-type(1n){clear:none}.small-up-4>.column:nth-of-type(4n+1),.small-up-4>.columns:nth-of-type(4n+1){clear:both}.small-up-4>.column:last-child,.small-up-4>.columns:last-child{float:left}.small-up-5>.column,.small-up-5>.columns{width:20%;float:left}.small-up-5>.column:nth-of-type(1n),.small-up-5>.columns:nth-of-type(1n){clear:none}.small-up-5>.column:nth-of-type(5n+1),.small-up-5>.columns:nth-of-type(5n+1){clear:both}.small-up-5>.column:last-child,.small-up-5>.columns:last-child{float:left}.small-up-6>.column,.small-up-6>.columns{width:16.66667%;float:left}.small-up-6>.column:nth-of-type(1n),.small-up-6>.columns:nth-of-type(1n){clear:none}.small-up-6>.column:nth-of-type(6n+1),.small-up-6>.columns:nth-of-type(6n+1){clear:both}.small-up-6>.column:last-child,.small-up-6>.columns:last-child{float:left}.small-up-7>.column,.small-up-7>.columns{width:14.28571%;float:left}.small-up-7>.column:nth-of-type(1n),.small-up-7>.columns:nth-of-type(1n){clear:none}.small-up-7>.column:nth-of-type(7n+1),.small-up-7>.columns:nth-of-type(7n+1){clear:both}.small-up-7>.column:last-child,.small-up-7>.columns:last-child{float:left}.small-up-8>.column,.small-up-8>.columns{width:12.5%;float:left}.small-up-8>.column:nth-of-type(1n),.small-up-8>.columns:nth-of-type(1n){clear:none}.small-up-8>.column:nth-of-type(8n+1),.small-up-8>.columns:nth-of-type(8n+1){clear:both}.small-up-8>.column:last-child,.small-up-8>.columns:last-child{float:left}.small-collapse>.column,.small-collapse>.columns{padding-left:0;padding-right:0}.expanded.row .small-collapse.row,.small-collapse .row{margin-left:0;margin-right:0}.small-uncollapse>.column,.small-uncollapse>.columns{padding-left:.625rem;padding-right:.625rem}.small-centered{float:none;margin-left:auto;margin-right:auto}.small-pull-0,.small-push-0,.small-uncentered{position:static;margin-left:0;margin-right:0;float:left}@media screen and (min-width:40em){.medium-1{width:8.33333%}.medium-push-1{position:relative;left:8.33333%}.medium-pull-1{position:relative;left:-8.33333%}.medium-offset-0{margin-left:0}.medium-2{width:16.66667%}.medium-push-2{position:relative;left:16.66667%}.medium-pull-2{position:relative;left:-16.66667%}.medium-offset-1{margin-left:8.33333%}.medium-3{width:25%}.medium-push-3{position:relative;left:25%}.medium-pull-3{position:relative;left:-25%}.medium-offset-2{margin-left:16.66667%}.medium-4{width:33.33333%}.medium-push-4{position:relative;left:33.33333%}.medium-pull-4{position:relative;left:-33.33333%}.medium-offset-3{margin-left:25%}.medium-5{width:41.66667%}.medium-push-5{position:relative;left:41.66667%}.medium-pull-5{position:relative;left:-41.66667%}.medium-offset-4{margin-left:33.33333%}.medium-6{width:50%}.medium-push-6{position:relative;left:50%}.medium-pull-6{position:relative;left:-50%}.medium-offset-5{margin-left:41.66667%}.medium-7{width:58.33333%}.medium-push-7{position:relative;left:58.33333%}.medium-pull-7{position:relative;left:-58.33333%}.medium-offset-6{margin-left:50%}.medium-8{width:66.66667%}.medium-push-8{position:relative;left:66.66667%}.medium-pull-8{position:relative;left:-66.66667%}.medium-offset-7{margin-left:58.33333%}.medium-9{width:75%}.medium-push-9{position:relative;left:75%}.medium-pull-9{position:relative;left:-75%}.medium-offset-8{margin-left:66.66667%}.medium-10{width:83.33333%}.medium-push-10{position:relative;left:83.33333%}.medium-pull-10{position:relative;left:-83.33333%}.medium-offset-9{margin-left:75%}.medium-11{width:91.66667%}.medium-push-11{position:relative;left:91.66667%}.medium-pull-11{position:relative;left:-91.66667%}.medium-offset-10{margin-left:83.33333%}.medium-12{width:100%}.medium-offset-11{margin-left:91.66667%}.medium-up-1>.column,.medium-up-1>.columns{width:100%;float:left}.medium-up-1>.column:nth-of-type(1n),.medium-up-1>.columns:nth-of-type(1n){clear:none}.medium-up-1>.column:nth-of-type(1n+1),.medium-up-1>.columns:nth-of-type(1n+1){clear:both}.medium-up-1>.column:last-child,.medium-up-1>.columns:last-child{float:left}.medium-up-2>.column,.medium-up-2>.columns{width:50%;float:left}.medium-up-2>.column:nth-of-type(1n),.medium-up-2>.columns:nth-of-type(1n){clear:none}.medium-up-2>.column:nth-of-type(2n+1),.medium-up-2>.columns:nth-of-type(2n+1){clear:both}.medium-up-2>.column:last-child,.medium-up-2>.columns:last-child{float:left}.medium-up-3>.column,.medium-up-3>.columns{width:33.33333%;float:left}.medium-up-3>.column:nth-of-type(1n),.medium-up-3>.columns:nth-of-type(1n){clear:none}.medium-up-3>.column:nth-of-type(3n+1),.medium-up-3>.columns:nth-of-type(3n+1){clear:both}.medium-up-3>.column:last-child,.medium-up-3>.columns:last-child{float:left}.medium-up-4>.column,.medium-up-4>.columns{width:25%;float:left}.medium-up-4>.column:nth-of-type(1n),.medium-up-4>.columns:nth-of-type(1n){clear:none}.medium-up-4>.column:nth-of-type(4n+1),.medium-up-4>.columns:nth-of-type(4n+1){clear:both}.medium-up-4>.column:last-child,.medium-up-4>.columns:last-child{float:left}.medium-up-5>.column,.medium-up-5>.columns{width:20%;float:left}.medium-up-5>.column:nth-of-type(1n),.medium-up-5>.columns:nth-of-type(1n){clear:none}.medium-up-5>.column:nth-of-type(5n+1),.medium-up-5>.columns:nth-of-type(5n+1){clear:both}.medium-up-5>.column:last-child,.medium-up-5>.columns:last-child{float:left}.medium-up-6>.column,.medium-up-6>.columns{width:16.66667%;float:left}.medium-up-6>.column:nth-of-type(1n),.medium-up-6>.columns:nth-of-type(1n){clear:none}.medium-up-6>.column:nth-of-type(6n+1),.medium-up-6>.columns:nth-of-type(6n+1){clear:both}.medium-up-6>.column:last-child,.medium-up-6>.columns:last-child{float:left}.medium-up-7>.column,.medium-up-7>.columns{width:14.28571%;float:left}.medium-up-7>.column:nth-of-type(1n),.medium-up-7>.columns:nth-of-type(1n){clear:none}.medium-up-7>.column:nth-of-type(7n+1),.medium-up-7>.columns:nth-of-type(7n+1){clear:both}.medium-up-7>.column:last-child,.medium-up-7>.columns:last-child{float:left}.medium-up-8>.column,.medium-up-8>.columns{width:12.5%;float:left}.medium-up-8>.column:nth-of-type(1n),.medium-up-8>.columns:nth-of-type(1n){clear:none}.medium-up-8>.column:nth-of-type(8n+1),.medium-up-8>.columns:nth-of-type(8n+1){clear:both}.medium-up-8>.column:last-child,.medium-up-8>.columns:last-child{float:left}.medium-collapse>.column,.medium-collapse>.columns{padding-left:0;padding-right:0}.expanded.row .medium-collapse.row,.medium-collapse .row{margin-left:0;margin-right:0}.medium-uncollapse>.column,.medium-uncollapse>.columns{padding-left:.9375rem;padding-right:.9375rem}.medium-centered{float:none;margin-left:auto;margin-right:auto}.medium-pull-0,.medium-push-0,.medium-uncentered{position:static;margin-left:0;margin-right:0;float:left}}@media screen and (min-width:64em){.large-1{width:8.33333%}.large-push-1{position:relative;left:8.33333%}.large-pull-1{position:relative;left:-8.33333%}.large-offset-0{margin-left:0}.large-2{width:16.66667%}.large-push-2{position:relative;left:16.66667%}.large-pull-2{position:relative;left:-16.66667%}.large-offset-1{margin-left:8.33333%}.large-3{width:25%}.large-push-3{position:relative;left:25%}.large-pull-3{position:relative;left:-25%}.large-offset-2{margin-left:16.66667%}.large-4{width:33.33333%}.large-push-4{position:relative;left:33.33333%}.large-pull-4{position:relative;left:-33.33333%}.large-offset-3{margin-left:25%}.large-5{width:41.66667%}.large-push-5{position:relative;left:41.66667%}.large-pull-5{position:relative;left:-41.66667%}.large-offset-4{margin-left:33.33333%}.large-6{width:50%}.large-push-6{position:relative;left:50%}.large-pull-6{position:relative;left:-50%}.large-offset-5{margin-left:41.66667%}.large-7{width:58.33333%}.large-push-7{position:relative;left:58.33333%}.large-pull-7{position:relative;left:-58.33333%}.large-offset-6{margin-left:50%}.large-8{width:66.66667%}.large-push-8{position:relative;left:66.66667%}.large-pull-8{position:relative;left:-66.66667%}.large-offset-7{margin-left:58.33333%}.large-9{width:75%}.large-push-9{position:relative;left:75%}.large-pull-9{position:relative;left:-75%}.large-offset-8{margin-left:66.66667%}.large-10{width:83.33333%}.large-push-10{position:relative;left:83.33333%}.large-pull-10{position:relative;left:-83.33333%}.large-offset-9{margin-left:75%}.large-11{width:91.66667%}.large-push-11{position:relative;left:91.66667%}.large-pull-11{position:relative;left:-91.66667%}.large-offset-10{margin-left:83.33333%}.large-12{width:100%}.large-offset-11{margin-left:91.66667%}.large-up-1>.column,.large-up-1>.columns{width:100%;float:left}.large-up-1>.column:nth-of-type(1n),.large-up-1>.columns:nth-of-type(1n){clear:none}.large-up-1>.column:nth-of-type(1n+1),.large-up-1>.columns:nth-of-type(1n+1){clear:both}.large-up-1>.column:last-child,.large-up-1>.columns:last-child{float:left}.large-up-2>.column,.large-up-2>.columns{width:50%;float:left}.large-up-2>.column:nth-of-type(1n),.large-up-2>.columns:nth-of-type(1n){clear:none}.large-up-2>.column:nth-of-type(2n+1),.large-up-2>.columns:nth-of-type(2n+1){clear:both}.large-up-2>.column:last-child,.large-up-2>.columns:last-child{float:left}.large-up-3>.column,.large-up-3>.columns{width:33.33333%;float:left}.large-up-3>.column:nth-of-type(1n),.large-up-3>.columns:nth-of-type(1n){clear:none}.large-up-3>.column:nth-of-type(3n+1),.large-up-3>.columns:nth-of-type(3n+1){clear:both}.large-up-3>.column:last-child,.large-up-3>.columns:last-child{float:left}.large-up-4>.column,.large-up-4>.columns{width:25%;float:left}.large-up-4>.column:nth-of-type(1n),.large-up-4>.columns:nth-of-type(1n){clear:none}.large-up-4>.column:nth-of-type(4n+1),.large-up-4>.columns:nth-of-type(4n+1){clear:both}.large-up-4>.column:last-child,.large-up-4>.columns:last-child{float:left}.large-up-5>.column,.large-up-5>.columns{width:20%;float:left}.large-up-5>.column:nth-of-type(1n),.large-up-5>.columns:nth-of-type(1n){clear:none}.large-up-5>.column:nth-of-type(5n+1),.large-up-5>.columns:nth-of-type(5n+1){clear:both}.large-up-5>.column:last-child,.large-up-5>.columns:last-child{float:left}.large-up-6>.column,.large-up-6>.columns{width:16.66667%;float:left}.large-up-6>.column:nth-of-type(1n),.large-up-6>.columns:nth-of-type(1n){clear:none}.large-up-6>.column:nth-of-type(6n+1),.large-up-6>.columns:nth-of-type(6n+1){clear:both}.large-up-6>.column:last-child,.large-up-6>.columns:last-child{float:left}.large-up-7>.column,.large-up-7>.columns{width:14.28571%;float:left}.large-up-7>.column:nth-of-type(1n),.large-up-7>.columns:nth-of-type(1n){clear:none}.large-up-7>.column:nth-of-type(7n+1),.large-up-7>.columns:nth-of-type(7n+1){clear:both}.large-up-7>.column:last-child,.large-up-7>.columns:last-child{float:left}.large-up-8>.column,.large-up-8>.columns{width:12.5%;float:left}.large-up-8>.column:nth-of-type(1n),.large-up-8>.columns:nth-of-type(1n){clear:none}.large-up-8>.column:nth-of-type(8n+1),.large-up-8>.columns:nth-of-type(8n+1){clear:both}.large-up-8>.column:last-child,.large-up-8>.columns:last-child{float:left}.large-collapse>.column,.large-collapse>.columns{padding-left:0;padding-right:0}.expanded.row .large-collapse.row,.large-collapse .row{margin-left:0;margin-right:0}.large-uncollapse>.column,.large-uncollapse>.columns{padding-left:.9375rem;padding-right:.9375rem}.large-centered{float:none;margin-left:auto;margin-right:auto}.large-pull-0,.large-push-0,.large-uncentered{position:static;margin-left:0;margin-right:0;float:left}}blockquote,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,li,ol,p,pre,td,th,ul{margin:0;padding:0}p{font-size:inherit;line-height:1.6;margin-bottom:1rem;text-rendering:optimizeLegibility}em,i{font-style:italic}b,em,i,strong{line-height:inherit}b,strong{font-weight:700}small{font-size:80%;line-height:inherit}h1,h2,h3,h4,h5,h6{font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;font-style:normal;color:inherit;text-rendering:optimizeLegibility;margin-top:0;margin-bottom:.5rem;line-height:1.4}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#cacaca;line-height:0}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.1875rem}h4{font-size:1.125rem}h5{font-size:1.0625rem}h6{font-size:1rem}@media screen and (min-width:40em){h1{font-size:3rem}h2{font-size:2.5rem}h3{font-size:1.9375rem}h4{font-size:1.5625rem}h5{font-size:1.25rem}h6{font-size:1rem}}a{color:#2199e8;text-decoration:none;line-height:inherit;cursor:pointer}a:focus,a:hover{color:#1585cf}a img{border:0}hr{max-width:75rem;height:0;border-right:0;border-top:0;border-bottom:1px solid #cacaca;border-left:0;margin:1.25rem auto;clear:both}dl,ol,ul{line-height:1.6;margin-bottom:1rem;list-style-position:outside}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-left:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-left:1.25rem;margin-bottom:0}dl{margin-bottom:1rem}dl dt{margin-bottom:.3rem;font-weight:700}blockquote{margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #cacaca}blockquote,blockquote p{line-height:1.6;color:#8a8a8a}cite{display:block;font-size:.8125rem;color:#8a8a8a}cite:before{content:'\2014 \0020'}abbr{color:#0a0a0a;cursor:help;border-bottom:1px dotted #0a0a0a}code{font-weight:400;border:1px solid #cacaca;padding:.125rem .3125rem .0625rem}code,kbd{font-family:Consolas,Liberation Mono,Courier,monospace;color:#0a0a0a;background-color:#e6e6e6}kbd{padding:.125rem .25rem 0;margin:0}.subheader{margin-top:.2rem;margin-bottom:.5rem;font-weight:400;line-height:1.4;color:#8a8a8a}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}.no-bullet{margin-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none!important}@media print{*{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}.show-for-print{display:block!important}.hide-for-print{display:none!important}table.show-for-print{display:table!important}thead.show-for-print{display:table-header-group!important}tbody.show-for-print{display:table-row-group!important}tr.show-for-print{display:table-row!important}td.show-for-print,th.show-for-print{display:table-cell!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^='#']:after,a[href^='javascript:']:after{content:''}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}}[type=color],[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],textarea{display:block;box-sizing:border-box;width:100%;height:2.4375rem;padding:.5rem;border:1px solid #cacaca;margin:0 0 1rem;font-family:inherit;font-size:1rem;color:#0a0a0a;background-color:#fefefe;box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);border-radius:0;-webkit-transition:-webkit-box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out;-webkit-appearance:none;-moz-appearance:none}[type=color]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=datetime]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,textarea:focus{border:1px solid #8a8a8a;background-color:#fefefe;outline:none;box-shadow:0 0 5px #cacaca;-webkit-transition:-webkit-box-shadow .5s,border-color .25s ease-in-out;transition:box-shadow .5s,border-color .25s ease-in-out}textarea{max-width:100%}textarea[rows]{height:auto}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#cacaca}input::-moz-placeholder,textarea::-moz-placeholder{color:#cacaca}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#cacaca}input::placeholder,textarea::placeholder{color:#cacaca}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type=button],[type=submit]{border-radius:0;-webkit-appearance:none;-moz-appearance:none}input[type=search]{box-sizing:border-box}[type=checkbox],[type=file],[type=radio]{margin:0 0 1rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;margin-left:.5rem;margin-right:1rem;margin-bottom:0;vertical-align:baseline}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-right:.5rem}[type=file]{width:100%}label{display:block;margin:0;font-size:.875rem;font-weight:400;line-height:1.8;color:#0a0a0a}label.middle{margin:0 0 1rem;padding:.5625rem 0}.help-text{margin-top:-.5rem;font-size:.8125rem;font-style:italic;color:#0a0a0a}.input-group{display:table;width:100%;margin-bottom:1rem}.input-group>:first-child,.input-group>:last-child>*{border-radius:0 0 0 0}.input-group-button,.input-group-field,.input-group-label{margin:0;white-space:nowrap;display:table-cell;vertical-align:middle}.input-group-label{text-align:center;padding:0 1rem;background:#e6e6e6;color:#0a0a0a;border:1px solid #cacaca;white-space:nowrap;width:1%;height:100%}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;height:2.5rem}.input-group-button{padding-top:0;padding-bottom:0;text-align:center;height:100%;width:1%}.input-group-button a,.input-group-button button,.input-group-button input{margin:0}.input-group .input-group-button{display:table-cell}fieldset{border:0;padding:0;margin:0}legend{margin-bottom:.5rem;max-width:100%}.fieldset{border:1px solid #cacaca;padding:1.25rem;margin:1.125rem 0}.fieldset legend{background:#fefefe;padding:0 .1875rem;margin:0;margin-left:-.1875rem}select{height:2.4375rem;padding:.5rem;border:1px solid #cacaca;margin:0 0 1rem;font-size:1rem;font-family:inherit;line-height:normal;color:#0a0a0a;background-color:#fefefe;border-radius:0;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%28138, 138, 138%29'></polygon></svg>");background-size:9px 6px;background-position:right -1rem center;background-origin:content-box;background-repeat:no-repeat;padding-right:1.5rem}@media screen and (min-width:0\0){select{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==")}}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{height:auto;background-image:none}.is-invalid-input:not(:focus){background-color:rgba(236,88,64,.1);border-color:#ec5840}.form-error,.is-invalid-label{color:#ec5840}.form-error{display:none;margin-top:-.5rem;margin-bottom:1rem;font-size:.75rem;font-weight:700}.form-error.is-visible{display:block}.button{display:inline-block;text-align:center;line-height:1;cursor:pointer;-webkit-appearance:none;-webkit-transition:background-color .25s ease-out,color .25s ease-out;transition:background-color .25s ease-out,color .25s ease-out;vertical-align:middle;border:1px solid transparent;border-radius:0;padding:.85em 1em;margin:0 0 1rem;font-size:.9rem;background-color:#2199e8;color:#fefefe}[data-whatinput=mouse] .button{outline:0}.button:focus,.button:hover{background-color:#1583cc;color:#fefefe}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;width:100%;margin-left:0;margin-right:0}.button.primary{background-color:#2199e8;color:#fefefe}.button.primary:focus,.button.primary:hover{background-color:#147cc0;color:#fefefe}.button.secondary{background-color:#777;color:#fefefe}.button.secondary:focus,.button.secondary:hover{background-color:#5f5f5f;color:#fefefe}.button.success{background-color:#3adb76;color:#fefefe}.button.success:focus,.button.success:hover{background-color:#22bb5b;color:#fefefe}.button.warning{background-color:#ffae00;color:#fefefe}.button.warning:focus,.button.warning:hover{background-color:#cc8b00;color:#fefefe}.button.alert{background-color:#ec5840;color:#fefefe}.button.alert:focus,.button.alert:hover{background-color:#da3116;color:#fefefe}.button.hollow{border:1px solid #2199e8;color:#2199e8}.button.hollow,.button.hollow:focus,.button.hollow:hover{background-color:transparent}.button.hollow:focus,.button.hollow:hover{border-color:#0c4d78;color:#0c4d78}.button.hollow.primary{border:1px solid #2199e8;color:#2199e8}.button.hollow.primary:focus,.button.hollow.primary:hover{border-color:#0c4d78;color:#0c4d78}.button.hollow.secondary{border:1px solid #777;color:#777}.button.hollow.secondary:focus,.button.hollow.secondary:hover{border-color:#3c3c3c;color:#3c3c3c}.button.hollow.success{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:focus,.button.hollow.success:hover{border-color:#157539;color:#157539}.button.hollow.warning{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:focus,.button.hollow.warning:hover{border-color:#805700;color:#805700}.button.hollow.alert{border:1px solid #ec5840;color:#ec5840}.button.hollow.alert:focus,.button.hollow.alert:hover{border-color:#881f0e;color:#881f0e}.button.disabled,.button[disabled]{opacity:.25;cursor:not-allowed}.button.disabled:focus,.button.disabled:hover,.button[disabled]:focus,.button[disabled]:hover{background-color:#2199e8;color:#fefefe}.button.dropdown:after{content:'';display:block;width:0;height:0;border:.4em inset;border-color:#fefefe transparent transparent;border-top-style:solid;border-bottom-width:0;position:relative;top:.4em;float:right;margin-left:1em;display:inline-block}.button.arrow-only:after{margin-left:0;float:none;top:-.1em}.accordion{list-style-type:none;background:#fefefe;margin-left:0}.accordion-item:first-child>:first-child,.accordion-item:last-child>:last-child{border-radius:0 0 0 0}.accordion-title{display:block;padding:1.25rem 1rem;line-height:1;font-size:.75rem;color:#2199e8;position:relative;border:1px solid #e6e6e6;border-bottom:0}:last-child:not(.is-active)>.accordion-title{border-radius:0 0 0 0;border-bottom:1px solid #e6e6e6}.accordion-title:focus,.accordion-title:hover{background-color:#e6e6e6}.accordion-title:before{content:'+';position:absolute;right:1rem;top:50%;margin-top:-.5rem}.is-active>.accordion-title:before{content:'–'}.accordion-content{padding:1rem;display:none;border:1px solid #e6e6e6;border-bottom:0;background-color:#fefefe;color:#0a0a0a}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.is-accordion-submenu-parent>a{position:relative}.is-accordion-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:6px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;position:absolute;top:50%;margin-top:-4px;right:1rem}.is-accordion-submenu-parent[aria-expanded=true]>a:after{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:scaleY(-1);transform:scaleY(-1)}.badge{display:inline-block;padding:.3em;min-width:2.1em;font-size:.6rem;text-align:center;border-radius:50%;background:#2199e8;color:#fefefe}.badge.secondary{background:#777;color:#fefefe}.badge.success{background:#3adb76;color:#fefefe}.badge.warning{background:#ffae00;color:#fefefe}.badge.alert{background:#ec5840;color:#fefefe}.breadcrumbs{list-style:none;margin:0 0 1rem}.breadcrumbs:after,.breadcrumbs:before{content:' ';display:table}.breadcrumbs:after{clear:both}.breadcrumbs li{float:left;color:#0a0a0a;font-size:.6875rem;cursor:default;text-transform:uppercase}.breadcrumbs li:not(:last-child):after{color:#cacaca;content:"/";margin:0 .75rem;position:relative;top:1px;opacity:1}.breadcrumbs a{color:#2199e8}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.button-group{margin-bottom:1rem;font-size:0}.button-group:after,.button-group:before{content:' ';display:table}.button-group:after{clear:both}.button-group .button{margin:0;margin-right:1px;margin-bottom:1px;font-size:.9rem}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded{margin-right:-1px}.button-group.expanded:after,.button-group.expanded:before{display:none}.button-group.expanded .button:first-child:nth-last-child(2),.button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2)~.button{display:inline-block;width:calc(50% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(2):last-child{margin-right:-6px}.button-group.expanded .button:first-child:nth-last-child(3),.button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3)~.button{display:inline-block;width:calc(33.33333% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(3):last-child{margin-right:-6px}.button-group.expanded .button:first-child:nth-last-child(4),.button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4)~.button{display:inline-block;width:calc(25% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(4):last-child{margin-right:-6px}.button-group.expanded .button:first-child:nth-last-child(5),.button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5)~.button{display:inline-block;width:calc(20% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(5):last-child{margin-right:-6px}.button-group.expanded .button:first-child:nth-last-child(6),.button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6)~.button{display:inline-block;width:calc(16.66667% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6)~.button:last-child,.button-group.expanded .button:first-child:nth-last-child(6):last-child{margin-right:-6px}.button-group.primary .button{background-color:#2199e8;color:#fefefe}.button-group.primary .button:focus,.button-group.primary .button:hover{background-color:#147cc0;color:#fefefe}.button-group.secondary .button{background-color:#777;color:#fefefe}.button-group.secondary .button:focus,.button-group.secondary .button:hover{background-color:#5f5f5f;color:#fefefe}.button-group.success .button{background-color:#3adb76;color:#fefefe}.button-group.success .button:focus,.button-group.success .button:hover{background-color:#22bb5b;color:#fefefe}.button-group.warning .button{background-color:#ffae00;color:#fefefe}.button-group.warning .button:focus,.button-group.warning .button:hover{background-color:#cc8b00;color:#fefefe}.button-group.alert .button{background-color:#ec5840;color:#fefefe}.button-group.alert .button:focus,.button-group.alert .button:hover{background-color:#da3116;color:#fefefe}.button-group.stacked-for-medium .button,.button-group.stacked-for-small .button,.button-group.stacked .button{width:100%}.button-group.stacked-for-medium .button:last-child,.button-group.stacked-for-small .button:last-child,.button-group.stacked .button:last-child{margin-bottom:0}@media screen and (min-width:40em){.button-group.stacked-for-small .button{width:auto;margin-bottom:0}}@media screen and (min-width:64em){.button-group.stacked-for-medium .button{width:auto;margin-bottom:0}}@media screen and (max-width:39.9375em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}.callout{margin:0 0 1rem;padding:1rem;border:1px solid hsla(0,0%,4%,.25);border-radius:0;position:relative;color:#0a0a0a;background-color:#fff}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#def0fc}.callout.secondary{background-color:#ebebeb}.callout.success{background-color:#e1faea}.callout.warning{background-color:#fff3d9}.callout.alert{background-color:#fce6e2}.callout.small{padding:.5rem}.callout.large{padding:3rem}.close-button{position:absolute;color:#8a8a8a;right:1rem;top:.5rem;font-size:2em;line-height:1;cursor:pointer}[data-whatinput=mouse] .close-button{outline:0}.close-button:focus,.close-button:hover{color:#0a0a0a}.menu{margin:0;list-style-type:none}.menu>li{display:table-cell;vertical-align:middle}[data-whatinput=mouse] .menu>li{outline:0}.menu>li>a{display:block;padding:.7rem 1rem;line-height:1}.menu a,.menu button,.menu input{margin-bottom:0}.menu>li>a i,.menu>li>a i+span,.menu>li>a img,.menu>li>a img+span,.menu>li>a svg,.menu>li>a svg+span{vertical-align:middle}.menu>li>a i,.menu>li>a img,.menu>li>a svg{margin-right:.25rem;display:inline-block}.menu>li{display:table-cell}.menu.vertical>li{display:block}@media screen and (min-width:40em){.menu.medium-horizontal>li{display:table-cell}.menu.medium-vertical>li{display:block}}@media screen and (min-width:64em){.menu.large-horizontal>li{display:table-cell}.menu.large-vertical>li{display:block}}.menu.simple li{line-height:1;display:inline-block;margin-right:1rem}.menu.simple a{padding:0}.menu.align-right:after,.menu.align-right:before{content:' ';display:table}.menu.align-right:after{clear:both}.menu.align-right>li{float:right}.menu.expanded{width:100%;display:table;table-layout:fixed}.menu.expanded>li:first-child:last-child{width:100%}.menu.icon-top>li>a{text-align:center}.menu.icon-top>li>a i,.menu.icon-top>li>a img,.menu.icon-top>li>a svg{display:block;margin:0 auto .25rem}.menu.nested{margin-left:1rem}.menu .active>a{color:#fefefe;background:#2199e8}.menu-text{font-weight:700;color:inherit;line-height:1;padding-top:0;padding-bottom:0;padding:.7rem 1rem}.menu-centered{text-align:center}.menu-centered>.menu{display:inline-block}.no-js [data-responsive-menu] ul{display:none}.menu-icon{position:relative;display:inline-block;vertical-align:middle;cursor:pointer;width:20px;height:16px}.menu-icon:after{content:'';position:absolute;display:block;width:100%;height:2px;background:#fefefe;top:0;left:0;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe}.menu-icon:hover:after{background:#cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.is-drilldown{position:relative;overflow:hidden}.is-drilldown li{display:block!important}.is-drilldown-submenu{position:absolute;top:0;left:100%;z-index:-1;height:100%;width:100%;background:#fefefe;-webkit-transition:-webkit-transform .15s linear;transition:transform .15s linear}.is-drilldown-submenu.is-active{z-index:1;display:block;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.is-drilldown-submenu.is-closing{-webkit-transform:translateX(100%);transform:translateX(100%)}.is-drilldown-submenu-parent>a{position:relative}.is-drilldown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:6px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0;position:absolute;top:50%;margin-top:-6px;right:1rem}.js-drilldown-back>a:before{content:'';display:block;width:0;height:0;border:6px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0;display:inline-block;vertical-align:middle;margin-right:.75rem}.dropdown-pane{background-color:#fefefe;border:1px solid #cacaca;border-radius:0;display:block;font-size:1rem;padding:1rem;position:absolute;visibility:hidden;width:300px;z-index:10}.dropdown-pane.is-open{visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.dropdown.menu>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}[data-whatinput=mouse] .dropdown.menu a{outline:0}.no-js .dropdown.menu ul{display:none}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.vertical>li>a:after{right:14px;margin-top:-3px}.dropdown.menu.vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}@media screen and (min-width:40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.medium-vertical>li>a:after{right:14px;margin-top:-3px}.dropdown.menu.medium-vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.medium-vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}}@media screen and (min-width:64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.large-vertical>li>a:after{right:14px;margin-top:-3px}.dropdown.menu.large-vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.large-vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{top:100%;left:auto;right:0}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a:after{position:absolute;top:50%;right:5px;margin-top:-2px}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{top:100%;left:auto}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{left:auto;right:100%}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{right:auto;left:100%}.is-dropdown-submenu{display:none;position:absolute;top:0;left:100%;min-width:200px;z-index:1;background:#fefefe;border:1px solid #cacaca}.is-dropdown-submenu .is-dropdown-submenu-parent>a:after{right:14px;margin-top:-3px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.flex-video{position:relative;height:0;padding-bottom:75%;margin-bottom:1rem;overflow:hidden}.flex-video embed,.flex-video iframe,.flex-video object,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}.flex-video.widescreen{padding-bottom:56.25%}.flex-video.vimeo{padding-top:0}.label{display:inline-block;padding:.33333rem .5rem;font-size:.8rem;line-height:1;white-space:nowrap;cursor:default;border-radius:0;background:#2199e8;color:#fefefe}.label.secondary{background:#777;color:#fefefe}.label.success{background:#3adb76;color:#fefefe}.label.warning{background:#ffae00;color:#fefefe}.label.alert{background:#ec5840;color:#fefefe}.media-object{margin-bottom:1rem;display:block}.media-object img{max-width:none}@media screen and (max-width:39.9375em){.media-object.stack-for-small .media-object-section{padding:0;padding-bottom:1rem;display:block}.media-object.stack-for-small .media-object-section img{width:100%}}.media-object-section{display:table-cell;vertical-align:top}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}.media-object-section.middle{vertical-align:middle}.media-object-section.bottom{vertical-align:bottom}body,html{height:100%}.off-canvas-wrapper{width:100%;overflow-x:hidden;position:relative;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-overflow-scrolling:auto}.off-canvas-wrapper-inner{position:relative;width:100%;-webkit-transition:-webkit-transform .5s ease;transition:transform .5s ease}.off-canvas-wrapper-inner:after,.off-canvas-wrapper-inner:before{content:' ';display:table}.off-canvas-wrapper-inner:after{clear:both}.off-canvas-content{min-height:100%;background:#fefefe;-webkit-transition:-webkit-transform .5s ease;transition:transform .5s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;padding-bottom:.1px;box-shadow:0 0 10px hsla(0,0%,4%,.5)}.js-off-canvas-exit{display:none;position:absolute;top:0;left:0;width:100%;height:100%;background:hsla(0,0%,100%,.25);cursor:pointer;-webkit-transition:background .5s ease;transition:background .5s ease}.off-canvas{position:absolute;background:#e6e6e6;z-index:-1;max-height:100%;overflow-y:auto;-webkit-transform:translateX(0);transform:translateX(0)}[data-whatinput=mouse] .off-canvas{outline:0}.off-canvas.position-left{left:-250px;top:0;width:250px}.is-open-left{-webkit-transform:translateX(250px);transform:translateX(250px)}.off-canvas.position-right{right:-250px;top:0;width:250px}.is-open-right{-webkit-transform:translateX(-250px);transform:translateX(-250px)}@media screen and (min-width:40em){.position-left.reveal-for-medium{left:0;z-index:auto;position:fixed}.position-left.reveal-for-medium~.off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{right:0;z-index:auto;position:fixed}.position-right.reveal-for-medium~.off-canvas-content{margin-right:250px}}@media screen and (min-width:64em){.position-left.reveal-for-large{left:0;z-index:auto;position:fixed}.position-left.reveal-for-large~.off-canvas-content{margin-left:250px}.position-right.reveal-for-large{right:0;z-index:auto;position:fixed}.position-right.reveal-for-large~.off-canvas-content{margin-right:250px}}.orbit,.orbit-container{position:relative}.orbit-container{margin:0;overflow:hidden;list-style:none}.orbit-slide{width:100%;max-height:100%}.orbit-slide.no-motionui.is-active{top:0;left:0}.orbit-figure{margin:0}.orbit-image{margin:0;width:100%;max-width:100%}.orbit-caption{bottom:0;width:100%;margin-bottom:0;background-color:hsla(0,0%,4%,.5)}.orbit-caption,.orbit-next,.orbit-previous{position:absolute;padding:1rem;color:#fefefe}.orbit-next,.orbit-previous{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:10}[data-whatinput=mouse] .orbit-next,[data-whatinput=mouse] .orbit-previous{outline:0}.orbit-next:active,.orbit-next:focus,.orbit-next:hover,.orbit-previous:active,.orbit-previous:focus,.orbit-previous:hover{background-color:hsla(0,0%,4%,.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{position:relative;margin-top:.8rem;margin-bottom:.8rem;text-align:center}[data-whatinput=mouse] .orbit-bullets{outline:0}.orbit-bullets button{width:1.2rem;height:1.2rem;margin:.1rem;background-color:#cacaca;border-radius:50%}.orbit-bullets button.is-active,.orbit-bullets button:hover{background-color:#8a8a8a}.pagination{margin-left:0;margin-bottom:1rem}.pagination:after,.pagination:before{content:' ';display:table}.pagination:after{clear:both}.pagination li{font-size:.875rem;margin-right:.0625rem;border-radius:0;display:none}.pagination li:first-child,.pagination li:last-child{display:inline-block}@media screen and (min-width:40em){.pagination li{display:inline-block}}.pagination a,.pagination button{color:#0a0a0a;display:block;padding:.1875rem .625rem;border-radius:0}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{padding:.1875rem .625rem;background:#2199e8;color:#fefefe;cursor:default}.pagination .disabled{padding:.1875rem .625rem;color:#cacaca;cursor:not-allowed}.pagination .disabled:hover{background:transparent}.pagination .ellipsis:after{content:'\2026';padding:.1875rem .625rem;color:#0a0a0a}.pagination-previous.disabled:before,.pagination-previous a:before{content:'\00ab';display:inline-block;margin-right:.5rem}.pagination-next.disabled:after,.pagination-next a:after{content:'\00bb';display:inline-block;margin-left:.5rem}.progress{background-color:#cacaca;height:1rem;margin-bottom:1rem;border-radius:0}.progress.primary .progress-meter{background-color:#2199e8}.progress.secondary .progress-meter{background-color:#777}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#ec5840}.progress-meter{position:relative;display:block;width:0;height:100%;background-color:#2199e8}.progress-meter-text{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;margin:0;font-size:.75rem;font-weight:700;color:#fefefe;white-space:nowrap}.slider{position:relative;height:.5rem;margin-top:1.25rem;margin-bottom:2.25rem;background-color:#e6e6e6;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:none;touch-action:none}.slider-fill{position:absolute;top:0;left:0;display:inline-block;max-width:100%;height:.5rem;background-color:#cacaca;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.slider-fill.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider-handle{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);position:absolute;left:0;z-index:1;display:inline-block;width:1.4rem;height:1.4rem;background-color:#2199e8;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;-ms-touch-action:manipulation;touch-action:manipulation;border-radius:0}[data-whatinput=mouse] .slider-handle{outline:0}.slider-handle:hover{background-color:#1583cc}.slider-handle.is-dragging{-webkit-transition:all 0s linear;transition:all 0s linear}.slider.disabled,.slider[disabled]{opacity:.25;cursor:not-allowed}.slider.vertical{display:inline-block;width:.5rem;height:12.5rem;margin:0 1.25rem;-webkit-transform:scaleY(-1);transform:scaleY(-1)}.slider.vertical .slider-fill{top:0;width:.5rem;max-height:100%}.slider.vertical .slider-handle{position:absolute;top:0;left:50%;width:1.4rem;height:1.4rem;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.sticky-container{position:relative}.sticky{position:absolute;z-index:0;-webkit-transform:translateZ(0);transform:translateZ(0)}.sticky.is-stuck{position:fixed;z-index:5}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{position:absolute;left:auto;right:auto}.sticky.is-anchored.is-at-bottom{bottom:0}body.is-reveal-open{overflow:hidden}html.is-reveal-open,html.is-reveal-open body{height:100%;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reveal-overlay{display:none;position:fixed;top:0;bottom:0;left:0;right:0;z-index:1005;background-color:hsla(0,0%,4%,.45);overflow-y:scroll}.reveal{display:none;z-index:1006;padding:1rem;border:1px solid #cacaca;background-color:#fefefe;border-radius:0;position:relative;top:100px;margin-left:auto;margin-right:auto;overflow-y:auto}[data-whatinput=mouse] .reveal{outline:0}@media screen and (min-width:40em){.reveal{min-height:0}}.reveal .column,.reveal .columns{min-width:0}.reveal>:last-child{margin-bottom:0}@media screen and (min-width:40em){.reveal{width:600px;max-width:75rem}}@media screen and (min-width:40em){.reveal .reveal{left:auto;right:auto;margin:0 auto}}.reveal.collapse{padding:0}@media screen and (min-width:40em){.reveal.tiny{width:30%;max-width:75rem}}@media screen and (min-width:40em){.reveal.small{width:50%;max-width:75rem}}@media screen and (min-width:40em){.reveal.large{width:90%;max-width:75rem}}.reveal.full{top:0;left:0;width:100%;height:100%;height:100vh;min-height:100vh;max-width:none;margin-left:0;border:0;border-radius:0}@media screen and (max-width:39.9375em){.reveal{top:0;left:0;width:100%;height:100%;height:100vh;min-height:100vh;max-width:none;margin-left:0;border:0;border-radius:0}}.reveal.without-overlay{position:fixed}.switch{margin-bottom:1rem;outline:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#fefefe;font-weight:700;font-size:.875rem}.switch-input{opacity:0;position:absolute}.switch-paddle{background:#cacaca;cursor:pointer;display:block;position:relative;width:4rem;height:2rem;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;border-radius:0;color:inherit;font-weight:inherit}input+.switch-paddle{margin:0}.switch-paddle:after{background:#fefefe;content:'';display:block;position:absolute;height:1.5rem;left:.25rem;top:.25rem;width:1.5rem;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;-webkit-transform:translateZ(0);transform:translateZ(0);border-radius:0}input:checked~.switch-paddle{background:#2199e8}input:checked~.switch-paddle:after{left:2.25rem}[data-whatinput=mouse] input:focus~.switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.switch-active{left:8%;display:none}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny .switch-paddle{width:3rem;height:1.5rem;font-size:.625rem}.switch.tiny .switch-paddle:after{width:1rem;height:1rem}.switch.tiny input:checked~.switch-paddle:after{left:1.75rem}.switch.small .switch-paddle{width:3.5rem;height:1.75rem;font-size:.75rem}.switch.small .switch-paddle:after{width:1.25rem;height:1.25rem}.switch.small input:checked~.switch-paddle:after{left:2rem}.switch.large .switch-paddle{width:5rem;height:2.5rem;font-size:1rem}.switch.large .switch-paddle:after{width:2rem;height:2rem}.switch.large input:checked~.switch-paddle:after{left:2.75rem}table{width:100%;margin-bottom:1rem;border-radius:0}table tbody,table tfoot,table thead{border:1px solid #f1f1f1;background-color:#fefefe}table caption{font-weight:700;padding:.5rem .625rem .625rem}table tfoot,table thead{background:#f8f8f8;color:#0a0a0a}table tfoot tr,table thead tr{background:transparent}table tfoot td,table tfoot th,table thead td,table thead th{padding:.5rem .625rem .625rem;font-weight:700;text-align:left}table tbody tr:nth-child(even){background-color:#f1f1f1}table tbody td,table tbody th{padding:.5rem .625rem .625rem}@media screen and (max-width:63.9375em){table.stack tfoot,table.stack thead{display:none}table.stack td,table.stack th,table.stack tr{display:block}table.stack td{border-top:0}}table.scroll{display:block;width:100%;overflow-x:auto}table.hover tr:hover{background-color:#f9f9f9}table.hover tr:nth-of-type(even):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.table-scroll table{width:auto}.tabs{margin:0;list-style-type:none;background:#fefefe;border:1px solid #e6e6e6}.tabs:after,.tabs:before{content:' ';display:table}.tabs:after{clear:both}.tabs.vertical>li{width:auto;float:none;display:block}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:transparent}.tabs.primary{background:#2199e8}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:focus,.tabs.primary>li>a:hover{background:#1893e4}.tabs-title{float:left}.tabs-title>a{display:block;padding:1.25rem 1.5rem;line-height:1;font-size:.75rem}.tabs-title>a:hover{background:#fefefe}.tabs-title>a:focus,.tabs-title>a[aria-selected=true]{background:#e6e6e6}.tabs-content{background:#fefefe;-webkit-transition:all .5s ease;transition:all .5s ease;border:1px solid #e6e6e6;border-top:0}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{border:4px solid #fefefe;box-shadow:0 0 0 1px hsla(0,0%,4%,.2);display:inline-block;line-height:0;max-width:100%;-webkit-transition:-webkit-box-shadow .2s ease-out;transition:box-shadow .2s ease-out;border-radius:0;margin-bottom:1rem}.thumbnail:focus,.thumbnail:hover{box-shadow:0 0 6px 1px rgba(33,153,232,.5)}.title-bar{background:#0a0a0a;color:#fefefe;padding:.5rem}.title-bar:after,.title-bar:before{content:' ';display:table}.title-bar:after{clear:both}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left{float:left}.title-bar-right{float:right;text-align:right}.title-bar-title{font-weight:700}.menu-icon.dark,.title-bar-title{vertical-align:middle;display:inline-block}.menu-icon.dark{position:relative;cursor:pointer;width:20px;height:16px}.menu-icon.dark:after{content:'';position:absolute;display:block;width:100%;height:2px;background:#0a0a0a;top:0;left:0;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a}.menu-icon.dark:hover:after{background:#8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.has-tip{border-bottom:1px dotted #8a8a8a;font-weight:700;position:relative;display:inline-block;cursor:help}.tooltip{background-color:#0a0a0a;color:#fefefe;font-size:80%;padding:.75rem;position:absolute;z-index:10;top:calc(100% + .6495rem);max-width:10rem!important;border-radius:0}.tooltip:before{border-color:transparent transparent #0a0a0a;border-bottom-style:solid;border-top-width:0;bottom:100%;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.top:before,.tooltip:before{content:'';display:block;width:0;height:0;border:.75rem inset}.tooltip.top:before{border-color:#0a0a0a transparent transparent;border-top-style:solid;border-bottom-width:0;top:100%;bottom:auto}.tooltip.left:before{border-color:transparent transparent transparent #0a0a0a;border-left-style:solid;border-right-width:0;left:100%}.tooltip.left:before,.tooltip.right:before{content:'';display:block;width:0;height:0;border:.75rem inset;bottom:auto;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.right:before{border-color:transparent #0a0a0a transparent transparent;border-right-style:solid;border-left-width:0;left:auto;right:100%}.top-bar{padding:.5rem}.top-bar:after,.top-bar:before{content:' ';display:table}.top-bar:after{clear:both}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{max-width:200px;margin-right:1rem}.top-bar .input-group-field{width:100%;margin-right:0}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{width:100%}@media screen and (min-width:40em){.top-bar .top-bar-left,.top-bar .top-bar-right{width:auto}}@media screen and (max-width:63.9375em){.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{width:100%}}@media screen and (max-width:74.9375em){.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{width:100%}}.top-bar-title{float:left;margin-right:1rem}.top-bar-left{float:left}.top-bar-right{float:right}.hide{display:none!important}.invisible{visibility:hidden}@media screen and (max-width:39.9375em){.hide-for-small-only{display:none!important}}@media screen and (max-width:0em),screen and (min-width:40em){.show-for-small-only{display:none!important}}@media screen and (min-width:40em){.hide-for-medium{display:none!important}}@media screen and (max-width:39.9375em){.show-for-medium{display:none!important}}@media screen and (min-width:40em) and (max-width:63.9375em){.hide-for-medium-only{display:none!important}}@media screen and (max-width:39.9375em),screen and (min-width:64em){.show-for-medium-only{display:none!important}}@media screen and (min-width:64em){.hide-for-large{display:none!important}}@media screen and (max-width:63.9375em){.show-for-large{display:none!important}}@media screen and (min-width:64em) and (max-width:74.9375em){.hide-for-large-only{display:none!important}}@media screen and (max-width:63.9375em),screen and (min-width:75em){.show-for-large-only{display:none!important}}.show-for-sr,.show-on-focus{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.show-on-focus:active,.show-on-focus:focus{position:static!important;height:auto;width:auto;overflow:visible;clip:auto}.hide-for-portrait,.show-for-landscape{display:block!important}@media screen and (orientation:landscape){.hide-for-portrait,.show-for-landscape{display:block!important}}@media screen and (orientation:portrait){.hide-for-portrait,.show-for-landscape{display:none!important}}.hide-for-landscape,.show-for-portrait{display:none!important}@media screen and (orientation:landscape){.hide-for-landscape,.show-for-portrait{display:none!important}}@media screen and (orientation:portrait){.hide-for-landscape,.show-for-portrait{display:block!important}}.float-left{float:left!important}.float-right{float:right!important}.float-center{display:block;margin-left:auto;margin-right:auto}.clearfix:after,.clearfix:before{content:' ';display:table}.clearfix:after{clear:both} \ No newline at end of file diff --git a/libraries/foundation-6/js/vendor/foundation.min.js b/libraries/foundation-6/dist/foundation.min.js old mode 100644 new mode 100755 similarity index 88% rename from libraries/foundation-6/js/vendor/foundation.min.js rename to libraries/foundation-6/dist/foundation.min.js index d4812cc9..02b9150a --- a/libraries/foundation-6/js/vendor/foundation.min.js +++ b/libraries/foundation-6/dist/foundation.min.js @@ -1,4 +1,4 @@ -function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}!function(t){"use strict";function e(t){if(void 0===Function.prototype.name){var e=/function\s([^(]{1,})\(/,i=e.exec(t.toString());return i&&i.length>1?i[1].trim():""}return void 0===t.prototype?t.constructor.name:t.prototype.constructor.name}function i(t){return/true/.test(t)?!0:/false/.test(t)?!1:isNaN(1*t)?t:parseFloat(t)}function n(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}var s="6.2.2",o={version:s,_plugins:{},_uuids:[],rtl:function(){return"rtl"===t("html").attr("dir")},plugin:function(t,i){var s=i||e(t),o=n(s);this._plugins[o]=this[s]=t},registerPlugin:function(t,i){var s=i?n(i):e(t.constructor).toLowerCase();t.uuid=this.GetYoDigits(6,s),t.$element.attr("data-"+s)||t.$element.attr("data-"+s,t.uuid),t.$element.data("zfPlugin")||t.$element.data("zfPlugin",t),t.$element.trigger("init.zf."+s),this._uuids.push(t.uuid)},unregisterPlugin:function(t){var i=n(e(t.$element.data("zfPlugin").constructor));this._uuids.splice(this._uuids.indexOf(t.uuid),1),t.$element.removeAttr("data-"+i).removeData("zfPlugin").trigger("destroyed.zf."+i);for(var s in t)t[s]=null},reInit:function(e){var i=e instanceof t;try{if(i)e.each(function(){t(this).data("zfPlugin")._init()});else{var s=typeof e,o=this,a={object:function(e){e.forEach(function(e){e=n(e),t("[data-"+e+"]").foundation("_init")})},string:function(){e=n(e),t("[data-"+e+"]").foundation("_init")},undefined:function(){this.object(Object.keys(o._plugins))}};a[s](e)}}catch(r){console.error(r)}finally{return e}},GetYoDigits:function(t,e){return t=t||6,Math.round(Math.pow(36,t+1)-Math.random()*Math.pow(36,t)).toString(36).slice(1)+(e?"-"+e:"")},reflow:function(e,n){"undefined"==typeof n?n=Object.keys(this._plugins):"string"==typeof n&&(n=[n]);var s=this;t.each(n,function(n,o){var a=s._plugins[o],r=t(e).find("[data-"+o+"]").addBack("[data-"+o+"]");r.each(function(){var e=t(this),n={};if(e.data("zfPlugin"))return void console.warn("Tried to initialize "+o+" on an element that already has a Foundation plugin.");if(e.attr("data-options")){e.attr("data-options").split(";").forEach(function(t,e){var s=t.split(":").map(function(t){return t.trim()});s[0]&&(n[s[0]]=i(s[1]))})}try{e.data("zfPlugin",new a(t(this),n))}catch(s){console.error(s)}finally{return}})})},getFnName:e,transitionend:function(t){var e,i={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend"},n=document.createElement("div");for(var s in i)"undefined"!=typeof n.style[s]&&(e=i[s]);return e?e:(e=setTimeout(function(){t.triggerHandler("transitionend",[t])},1),"transitionend")}};o.util={throttle:function(t,e){var i=null;return function(){var n=this,s=arguments;null===i&&(i=setTimeout(function(){t.apply(n,s),i=null},e))}}};var a=function(i){var n=typeof i,s=t("meta.foundation-mq"),a=t(".no-js");if(s.length||t('<meta class="foundation-mq">').appendTo(document.head),a.length&&a.removeClass("no-js"),"undefined"===n)o.MediaQuery._init(),o.reflow(this);else{if("string"!==n)throw new TypeError("We're sorry, "+n+" is not a valid parameter. You must use a string representing the method you wish to invoke.");var r=Array.prototype.slice.call(arguments,1),l=this.data("zfPlugin");if(void 0===l||void 0===l[i])throw new ReferenceError("We're sorry, '"+i+"' is not an available method for "+(l?e(l):"this element")+".");1===this.length?l[i].apply(l,r):this.each(function(e,n){l[i].apply(t(n).data("zfPlugin"),r)})}return this};window.Foundation=o,t.fn.foundation=a,function(){Date.now&&window.Date.now||(window.Date.now=Date.now=function(){return(new Date).getTime()});for(var t=["webkit","moz"],e=0;e<t.length&&!window.requestAnimationFrame;++e){var i=t[e];window.requestAnimationFrame=window[i+"RequestAnimationFrame"],window.cancelAnimationFrame=window[i+"CancelAnimationFrame"]||window[i+"CancelRequestAnimationFrame"]}if(/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)||!window.requestAnimationFrame||!window.cancelAnimationFrame){var n=0;window.requestAnimationFrame=function(t){var e=Date.now(),i=Math.max(n+16,e);return setTimeout(function(){t(n=i)},i-e)},window.cancelAnimationFrame=clearTimeout}window.performance&&window.performance.now||(window.performance={start:Date.now(),now:function(){return Date.now()-this.start}})}(),Function.prototype.bind||(Function.prototype.bind=function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var e=Array.prototype.slice.call(arguments,1),i=this,n=function(){},s=function(){return i.apply(this instanceof n?this:t,e.concat(Array.prototype.slice.call(arguments)))};return this.prototype&&(n.prototype=this.prototype),s.prototype=new n,s})}(jQuery),!function(t){function e(t){var e={};return"string"!=typeof t?e:(t=t.trim().slice(1,-1))?e=t.split("&").reduce(function(t,e){var i=e.replace(/\+/g," ").split("="),n=i[0],s=i[1];return n=decodeURIComponent(n),s=void 0===s?null:decodeURIComponent(s),t.hasOwnProperty(n)?Array.isArray(t[n])?t[n].push(s):t[n]=[t[n],s]:t[n]=s,t},{}):e}var i={queries:[],current:"",_init:function(){var i,n=this,s=t(".foundation-mq").css("font-family");i=e(s);for(var o in i)i.hasOwnProperty(o)&&n.queries.push({name:o,value:"only screen and (min-width: "+i[o]+")"});this.current=this._getCurrentSize(),this._watcher()},atLeast:function(t){var e=this.get(t);return e?window.matchMedia(e).matches:!1},get:function(t){for(var e in this.queries)if(this.queries.hasOwnProperty(e)){var i=this.queries[e];if(t===i.name)return i.value}return null},_getCurrentSize:function(){for(var t,e=0;e<this.queries.length;e++){var i=this.queries[e];window.matchMedia(i.value).matches&&(t=i)}return"object"==typeof t?t.name:t},_watcher:function(){var e=this;t(window).on("resize.zf.mediaquery",function(){var i=e._getCurrentSize(),n=e.current;i!==n&&(e.current=i,t(window).trigger("changed.zf.mediaquery",[i,n]))})}};Foundation.MediaQuery=i,window.matchMedia||(window.matchMedia=function(){"use strict";var t=window.styleMedia||window.media;if(!t){var e=document.createElement("style"),i=document.getElementsByTagName("script")[0],n=null;e.type="text/css",e.id="matchmediajs-test",i.parentNode.insertBefore(e,i),n="getComputedStyle"in window&&window.getComputedStyle(e,null)||e.currentStyle,t={matchMedium:function(t){var i="@media "+t+"{ #matchmediajs-test { width: 1px; } }";return e.styleSheet?e.styleSheet.cssText=i:e.textContent=i,"1px"===n.width}}}return function(e){return{matches:t.matchMedium(e||"all"),media:e||"all"}}}()),Foundation.MediaQuery=i}(jQuery),!function(t){function e(t){var e={};for(var i in t)e[t[i]]=t[i];return e}var i={9:"TAB",13:"ENTER",27:"ESCAPE",32:"SPACE",37:"ARROW_LEFT",38:"ARROW_UP",39:"ARROW_RIGHT",40:"ARROW_DOWN"},n={},s={keys:e(i),parseKey:function(t){var e=i[t.which||t.keyCode]||String.fromCharCode(t.which).toUpperCase();return t.shiftKey&&(e="SHIFT_"+e),t.ctrlKey&&(e="CTRL_"+e),t.altKey&&(e="ALT_"+e),e},handleKey:function(e,i,s){var o,a,r,l=n[i],u=this.parseKey(e);if(!l)return console.warn("Component not defined!");if(o="undefined"==typeof l.ltr?l:Foundation.rtl()?t.extend({},l.ltr,l.rtl):t.extend({},l.rtl,l.ltr),a=o[u],r=s[a],r&&"function"==typeof r){var d=r.apply();(s.handled||"function"==typeof s.handled)&&s.handled(d)}else(s.unhandled||"function"==typeof s.unhandled)&&s.unhandled()},findFocusable:function(e){return e.find("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]").filter(function(){return t(this).is(":visible")&&!(t(this).attr("tabindex")<0)})},register:function(t,e){n[t]=e}};Foundation.Keyboard=s}(jQuery),!function(t){function e(t,e,i){function n(r){a||(a=window.performance.now()),o=r-a,i.apply(e),t>o?s=window.requestAnimationFrame(n,e):(window.cancelAnimationFrame(s),e.trigger("finished.zf.animate",[e]).triggerHandler("finished.zf.animate",[e]))}var s,o,a=null;s=window.requestAnimationFrame(n)}function i(e,i,o,a){function r(){e||i.hide(),l(),a&&a.apply(i)}function l(){i[0].style.transitionDuration=0,i.removeClass(u+" "+d+" "+o)}if(i=t(i).eq(0),i.length){var u=e?n[0]:n[1],d=e?s[0]:s[1];l(),i.addClass(o).css("transition","none"),requestAnimationFrame(function(){i.addClass(u),e&&i.show()}),requestAnimationFrame(function(){i[0].offsetWidth,i.css("transition","").addClass(d)}),i.one(Foundation.transitionend(i),r)}}var n=["mui-enter","mui-leave"],s=["mui-enter-active","mui-leave-active"],o={animateIn:function(t,e,n){i(!0,t,e,n)},animateOut:function(t,e,n){i(!1,t,e,n)}};Foundation.Move=e,Foundation.Motion=o}(jQuery),!function(t){var e={Feather:function(e){var i=arguments.length<=1||void 0===arguments[1]?"zf":arguments[1];e.attr("role","menubar");var n=e.find("li").attr({role:"menuitem"}),s="is-"+i+"-submenu",o=s+"-item",a="is-"+i+"-submenu-parent";e.find("a:first").attr("tabindex",0),n.each(function(){var e=t(this),i=e.children("ul");i.length&&(e.addClass(a).attr({"aria-haspopup":!0,"aria-expanded":!1,"aria-label":e.children("a:first").text()}),i.addClass("submenu "+s).attr({"data-submenu":"","aria-hidden":!0,role:"menu"})),e.parent("[data-submenu]").length&&e.addClass("is-submenu-item "+o)})},Burn:function(t,e){var i=(t.find("li").removeAttr("tabindex"),"is-"+e+"-submenu"),n=i+"-item",s="is-"+e+"-submenu-parent";t.find("*").removeClass(i+" "+n+" "+s+" is-submenu-item submenu is-active").removeAttr("data-submenu").css("display","")}};Foundation.Nest=e}(jQuery),!function(t){function e(t,e,n,s){var o,a,r,l,u=i(t);if(e){var d=i(e);a=u.offset.top+u.height<=d.height+d.offset.top,o=u.offset.top>=d.offset.top,r=u.offset.left>=d.offset.left,l=u.offset.left+u.width<=d.width+d.offset.left}else a=u.offset.top+u.height<=u.windowDims.height+u.windowDims.offset.top,o=u.offset.top>=u.windowDims.offset.top,r=u.offset.left>=u.windowDims.offset.left,l=u.offset.left+u.width<=u.windowDims.width;var h=[a,o,r,l];return n?r===l==!0:s?o===a==!0:-1===h.indexOf(!1)}function i(t,e){if(t=t.length?t[0]:t,t===window||t===document)throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");var i=t.getBoundingClientRect(),n=t.parentNode.getBoundingClientRect(),s=document.body.getBoundingClientRect(),o=window.pageYOffset,a=window.pageXOffset;return{width:i.width,height:i.height,offset:{top:i.top+o,left:i.left+a},parentDims:{width:n.width,height:n.height,offset:{top:n.top+o,left:n.left+a}},windowDims:{width:s.width,height:s.height,offset:{top:o,left:a}}}}function n(t,e,n,s,o,a){var r=i(t),l=e?i(e):null;switch(n){case"top":return{left:Foundation.rtl()?l.offset.left-r.width+l.width:l.offset.left,top:l.offset.top-(r.height+s)};case"left":return{left:l.offset.left-(r.width+o),top:l.offset.top};case"right":return{left:l.offset.left+l.width+o,top:l.offset.top};case"center top":return{left:l.offset.left+l.width/2-r.width/2,top:l.offset.top-(r.height+s)};case"center bottom":return{left:a?o:l.offset.left+l.width/2-r.width/2,top:l.offset.top+l.height+s};case"center left":return{left:l.offset.left-(r.width+o),top:l.offset.top+l.height/2-r.height/2};case"center right":return{left:l.offset.left+l.width+o+1,top:l.offset.top+l.height/2-r.height/2};case"center":return{left:r.windowDims.offset.left+r.windowDims.width/2-r.width/2,top:r.windowDims.offset.top+r.windowDims.height/2-r.height/2};case"reveal":return{left:(r.windowDims.width-r.width)/2,top:r.windowDims.offset.top+s};case"reveal full":return{left:r.windowDims.offset.left,top:r.windowDims.offset.top};case"left bottom":return{left:l.offset.left-(r.width+o),top:l.offset.top+l.height};case"right bottom":return{left:l.offset.left+l.width+o-r.width,top:l.offset.top+l.height};default:return{left:Foundation.rtl()?l.offset.left-r.width+l.width:l.offset.left,top:l.offset.top+l.height+s}}}Foundation.Box={ImNotTouchingYou:e,GetDimensions:i,GetOffsets:n}}(jQuery),!function(t){function e(){o(),n(),s(),i()}function i(e){var i=t("[data-yeti-box]"),n=["dropdown","tooltip","reveal"];if(e&&("string"==typeof e?n.push(e):"object"==typeof e&&"string"==typeof e[0]?n.concat(e):console.error("Plugin names must be strings")),i.length){var s=n.map(function(t){return"closeme.zf."+t}).join(" ");t(window).off(s).on(s,function(e,i){var n=e.namespace.split(".")[0],s=t("[data-"+n+"]").not('[data-yeti-box="'+i+'"]');s.each(function(){var e=t(this);e.triggerHandler("close.zf.trigger",[e])})})}}function n(e){var i=void 0,n=t("[data-resize]");n.length&&t(window).off("resize.zf.trigger").on("resize.zf.trigger",function(s){i&&clearTimeout(i),i=setTimeout(function(){a||n.each(function(){t(this).triggerHandler("resizeme.zf.trigger")}),n.attr("data-events","resize")},e||10)})}function s(e){var i=void 0,n=t("[data-scroll]");n.length&&t(window).off("scroll.zf.trigger").on("scroll.zf.trigger",function(s){i&&clearTimeout(i),i=setTimeout(function(){a||n.each(function(){t(this).triggerHandler("scrollme.zf.trigger")}),n.attr("data-events","scroll")},e||10)})}function o(){if(!a)return!1;var e=document.querySelectorAll("[data-resize], [data-scroll], [data-mutate]"),i=function(e){var i=t(e[0].target);switch(i.attr("data-events")){case"resize":i.triggerHandler("resizeme.zf.trigger",[i]);break;case"scroll":i.triggerHandler("scrollme.zf.trigger",[i,window.pageYOffset]);break;default:return!1}};if(e.length)for(var n=0;n<=e.length-1;n++){var s=new a(i);s.observe(e[n],{attributes:!0,childList:!1,characterData:!1,subtree:!1,attributeFilter:["data-events"]})}}var a=function(){for(var t=["WebKit","Moz","O","Ms",""],e=0;e<t.length;e++)if(t[e]+"MutationObserver"in window)return window[t[e]+"MutationObserver"];return!1}(),r=function(e,i){e.data(i).split(" ").forEach(function(n){t("#"+n)["close"===i?"trigger":"triggerHandler"](i+".zf.trigger",[e])})};t(document).on("click.zf.trigger","[data-open]",function(){r(t(this),"open")}),t(document).on("click.zf.trigger","[data-close]",function(){var e=t(this).data("close");e?r(t(this),"close"):t(this).trigger("close.zf.trigger")}),t(document).on("click.zf.trigger","[data-toggle]",function(){r(t(this),"toggle")}),t(document).on("close.zf.trigger","[data-closable]",function(e){e.stopPropagation();var i=t(this).data("closable");""!==i?Foundation.Motion.animateOut(t(this),i,function(){t(this).trigger("closed.zf")}):t(this).fadeOut().trigger("closed.zf")}),t(document).on("focus.zf.trigger blur.zf.trigger","[data-toggle-focus]",function(){var e=t(this).data("toggle-focus");t("#"+e).triggerHandler("toggle.zf.trigger",[t(this)])}),t(window).load(function(){e()}),Foundation.IHearYou=e}(jQuery),!function(t){function e(t,e,i){var n,s,o=this,a=e.duration,r=Object.keys(t.data())[0]||"timer",l=-1;this.isPaused=!1,this.restart=function(){l=-1,clearTimeout(s),this.start()},this.start=function(){this.isPaused=!1,clearTimeout(s),l=0>=l?a:l,t.data("paused",!1),n=Date.now(),s=setTimeout(function(){e.infinite&&o.restart(),i()},l),t.trigger("timerstart.zf."+r)},this.pause=function(){this.isPaused=!0,clearTimeout(s),t.data("paused",!0);var e=Date.now();l-=e-n,t.trigger("timerpaused.zf."+r)}}function i(e,i){function n(){s--,0===s&&i()}var s=e.length;0===s&&i(),e.each(function(){this.complete?n():"undefined"!=typeof this.naturalWidth&&this.naturalWidth>0?n():t(this).one("load",function(){n()})})}Foundation.Timer=e,Foundation.onImagesLoaded=i}(jQuery),function(t){function e(){this.removeEventListener("touchmove",i),this.removeEventListener("touchend",e),u=!1}function i(i){if(t.spotSwipe.preventDefault&&i.preventDefault(),u){var n,s=i.touches[0].pageX,a=(i.touches[0].pageY,o-s);l=(new Date).getTime()-r,Math.abs(a)>=t.spotSwipe.moveThreshold&&l<=t.spotSwipe.timeThreshold&&(n=a>0?"left":"right"),n&&(i.preventDefault(),e.call(this),t(this).trigger("swipe",n).trigger("swipe"+n))}}function n(t){1==t.touches.length&&(o=t.touches[0].pageX,a=t.touches[0].pageY,u=!0,r=(new Date).getTime(),this.addEventListener("touchmove",i,!1),this.addEventListener("touchend",e,!1))}function s(){this.addEventListener&&this.addEventListener("touchstart",n,!1)}t.spotSwipe={version:"1.0.0",enabled:"ontouchstart"in document.documentElement,preventDefault:!1,moveThreshold:75,timeThreshold:200};var o,a,r,l,u=!1;t.event.special.swipe={setup:s},t.each(["left","up","down","right"],function(){t.event.special["swipe"+this]={setup:function(){t(this).on("swipe",t.noop)}}})}(jQuery),!function(t){t.fn.addTouch=function(){this.each(function(i,n){t(n).bind("touchstart touchmove touchend touchcancel",function(){e(event)})});var e=function(t){var e,i=t.changedTouches,n=i[0],s={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup"},o=s[t.type];"MouseEvent"in window&&"function"==typeof window.MouseEvent?e=new window.MouseEvent(o,{bubbles:!0,cancelable:!0,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY}):(e=document.createEvent("MouseEvent"),e.initMouseEvent(o,!0,!0,window,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null)),n.target.dispatchEvent(e)}}}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Abide")}return _createClass(e,[{key:"_init",value:function(){this.$inputs=this.$element.find("input, textarea, select"),this._events()}},{key:"_events",value:function(){var e=this;this.$element.off(".abide").on("reset.zf.abide",function(){e.resetForm()}).on("submit.zf.abide",function(){return e.validateForm()}),"fieldChange"===this.options.validateOn&&this.$inputs.off("change.zf.abide").on("change.zf.abide",function(i){e.validateInput(t(i.target))}),this.options.liveValidate&&this.$inputs.off("input.zf.abide").on("input.zf.abide",function(i){e.validateInput(t(i.target))})}},{key:"_reflow",value:function(){this._init()}},{key:"requiredCheck",value:function(t){if(!t.attr("required"))return!0;var e=!0;switch(t[0].type){case"checkbox":e=t[0].checked;break;case"select":case"select-one":case"select-multiple":var i=t.find("option:selected");i.length&&i.val()||(e=!1);break;default:t.val()&&t.val().length||(e=!1)}return e}},{key:"findFormError",value:function(t){var e=t.siblings(this.options.formErrorSelector);return e.length||(e=t.parent().find(this.options.formErrorSelector)),e}},{key:"findLabel",value:function(t){var e=t[0].id,i=this.$element.find('label[for="'+e+'"]');return i.length?i:t.closest("label")}},{key:"findRadioLabels",value:function(e){var i=this,n=e.map(function(e,n){var s=n.id,o=i.$element.find('label[for="'+s+'"]');return o.length||(o=t(n).closest("label")),o[0]});return t(n)}},{key:"addErrorClasses",value:function(t){var e=this.findLabel(t),i=this.findFormError(t);e.length&&e.addClass(this.options.labelErrorClass),i.length&&i.addClass(this.options.formErrorClass),t.addClass(this.options.inputErrorClass).attr("data-invalid","")}},{key:"removeRadioErrorClasses",value:function(t){var e=this.$element.find(':radio[name="'+t+'"]'),i=this.findRadioLabels(e),n=this.findFormError(e);i.length&&i.removeClass(this.options.labelErrorClass),n.length&&n.removeClass(this.options.formErrorClass),e.removeClass(this.options.inputErrorClass).removeAttr("data-invalid")}},{key:"removeErrorClasses",value:function(t){if("radio"==t[0].type)return this.removeRadioErrorClasses(t.attr("name"));var e=this.findLabel(t),i=this.findFormError(t);e.length&&e.removeClass(this.options.labelErrorClass),i.length&&i.removeClass(this.options.formErrorClass),t.removeClass(this.options.inputErrorClass).removeAttr("data-invalid")}},{key:"validateInput",value:function(t){var e=this.requiredCheck(t),i=!1,n=!0,s=t.attr("data-validator"),o=!0;if(t.is("[data-abide-ignore]")||t.is('[type="hidden"]'))return!0;switch(t[0].type){case"radio":i=this.validateRadio(t.attr("name"));break;case"checkbox":i=e;break;case"select":case"select-one":case"select-multiple":i=e;break;default:i=this.validateText(t)}s&&(n=this.matchValidation(t,s,t.attr("required"))),t.attr("data-equalto")&&(o=this.options.validators.equalTo(t));var a=-1===[e,i,n,o].indexOf(!1),r=(a?"valid":"invalid")+".zf.abide";return this[a?"removeErrorClasses":"addErrorClasses"](t),t.trigger(r,[t]),a}},{key:"validateForm",value:function(){var e=[],i=this;this.$inputs.each(function(){e.push(i.validateInput(t(this)))});var n=-1===e.indexOf(!1);return this.$element.find("[data-abide-error]").css("display",n?"none":"block"),this.$element.trigger((n?"formvalid":"forminvalid")+".zf.abide",[this.$element]),n}},{key:"validateText",value:function(t,e){e=e||t.attr("pattern")||t.attr("type");var i=t.val(),n=!1;return i.length?n=this.options.patterns.hasOwnProperty(e)?this.options.patterns[e].test(i):e!==t.attr("type")?new RegExp(e).test(i):!0:t.prop("required")||(n=!0),n}},{key:"validateRadio",value:function(e){var i=this.$element.find(':radio[name="'+e+'"]'),n=!1,s=!1;return i.each(function(e,i){t(i).attr("required")&&(s=!0)}),s||(n=!0),n||i.each(function(e,i){t(i).prop("checked")&&(n=!0)}),n}},{key:"matchValidation",value:function(t,e,i){var n=this;i=!!i;var s=e.split(" ").map(function(e){return n.options.validators[e](t,i,t.parent())});return-1===s.indexOf(!1)}},{key:"resetForm",value:function(){var e=this.$element,i=this.options;t("."+i.labelErrorClass,e).not("small").removeClass(i.labelErrorClass),t("."+i.inputErrorClass,e).not("small").removeClass(i.inputErrorClass),t(i.formErrorSelector+"."+i.formErrorClass).removeClass(i.formErrorClass),e.find("[data-abide-error]").css("display","none"),t(":input",e).not(":button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]").val("").removeAttr("data-invalid"),t(":input:radio",e).not("[data-abide-ignore]").prop("checked",!1).removeAttr("data-invalid"),t(":input:checkbox",e).not("[data-abide-ignore]").prop("checked",!1).removeAttr("data-invalid"),e.trigger("formreset.zf.abide",[e])}},{key:"destroy",value:function(){var e=this;this.$element.off(".abide").find("[data-abide-error]").css("display","none"),this.$inputs.off(".abide").each(function(){e.removeErrorClasses(t(this))}),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={validateOn:"fieldChange",labelErrorClass:"is-invalid-label",inputErrorClass:"is-invalid-input",formErrorSelector:".form-error",formErrorClass:"is-visible",liveValidate:!1,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/},validators:{equalTo:function(e,i,n){return t("#"+e.attr("data-equalto")).val()===e.val()}}},Foundation.plugin(e,"Abide")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Accordion"),Foundation.Keyboard.register("Accordion",{ENTER:"toggle",SPACE:"toggle",ARROW_DOWN:"next",ARROW_UP:"previous"})}return _createClass(e,[{key:"_init",value:function(){this.$element.attr("role","tablist"),this.$tabs=this.$element.children("li, [data-accordion-item]"),this.$tabs.each(function(e,i){var n=t(i),s=n.children("[data-tab-content]"),o=s[0].id||Foundation.GetYoDigits(6,"accordion"),a=i.id||o+"-label";n.find("a:first").attr({"aria-controls":o,role:"tab",id:a,"aria-expanded":!1,"aria-selected":!1}),s.attr({role:"tabpanel","aria-labelledby":a,"aria-hidden":!0,id:o})});var e=this.$element.find(".is-active").children("[data-tab-content]");e.length&&this.down(e,!0),this._events()}},{key:"_events",value:function(){var e=this;this.$tabs.each(function(){var i=t(this),n=i.children("[data-tab-content]");n.length&&i.children("a").off("click.zf.accordion keydown.zf.accordion").on("click.zf.accordion",function(t){t.preventDefault(),i.hasClass("is-active")?(e.options.allowAllClosed||i.siblings().hasClass("is-active"))&&e.up(n):e.down(n)}).on("keydown.zf.accordion",function(t){Foundation.Keyboard.handleKey(t,"Accordion",{toggle:function(){e.toggle(n)},next:function(){var t=i.next().find("a").focus();e.options.multiExpand||t.trigger("click.zf.accordion")},previous:function(){var t=i.prev().find("a").focus();e.options.multiExpand||t.trigger("click.zf.accordion")},handled:function(){t.preventDefault(),t.stopPropagation()}})})})}},{key:"toggle",value:function(t){if(t.parent().hasClass("is-active")){if(!this.options.allowAllClosed&&!t.parent().siblings().hasClass("is-active"))return;this.up(t)}else this.down(t)}},{key:"down",value:function(e,i){var n=this;if(!this.options.multiExpand&&!i){var s=this.$element.children(".is-active").children("[data-tab-content]");s.length&&this.up(s)}e.attr("aria-hidden",!1).parent("[data-tab-content]").addBack().parent().addClass("is-active"),e.slideDown(this.options.slideSpeed,function(){n.$element.trigger("down.zf.accordion",[e])}),t("#"+e.attr("aria-labelledby")).attr({"aria-expanded":!0,"aria-selected":!0})}},{key:"up",value:function(e){var i=e.parent().siblings(),n=this,s=this.options.multiExpand?i.hasClass("is-active"):e.parent().hasClass("is-active");(this.options.allowAllClosed||s)&&(e.slideUp(n.options.slideSpeed,function(){n.$element.trigger("up.zf.accordion",[e])}),e.attr("aria-hidden",!0).parent().removeClass("is-active"),t("#"+e.attr("aria-labelledby")).attr({"aria-expanded":!1,"aria-selected":!1}))}},{key:"destroy",value:function(){this.$element.find("[data-tab-content]").stop(!0).slideUp(0).css("display",""),this.$element.find("a").off(".zf.accordion"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={slideSpeed:250,multiExpand:!1,allowAllClosed:!1},Foundation.plugin(e,"Accordion")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),Foundation.Nest.Feather(this.$element,"accordion"),this._init(),Foundation.registerPlugin(this,"AccordionMenu"),Foundation.Keyboard.register("AccordionMenu",{ENTER:"toggle",SPACE:"toggle",ARROW_RIGHT:"open",ARROW_UP:"up",ARROW_DOWN:"down",ARROW_LEFT:"close",ESCAPE:"closeAll",TAB:"down",SHIFT_TAB:"up"})}return _createClass(e,[{key:"_init",value:function(){this.$element.find("[data-submenu]").not(".is-active").slideUp(0),this.$element.attr({role:"tablist","aria-multiselectable":this.options.multiOpen}),this.$menuLinks=this.$element.find(".is-accordion-submenu-parent"),this.$menuLinks.each(function(){var e=this.id||Foundation.GetYoDigits(6,"acc-menu-link"),i=t(this),n=i.children("[data-submenu]"),s=n[0].id||Foundation.GetYoDigits(6,"acc-menu"),o=n.hasClass("is-active");i.attr({"aria-controls":s,"aria-expanded":o,role:"tab",id:e}),n.attr({"aria-labelledby":e,"aria-hidden":!o,role:"tabpanel",id:s})});var e=this.$element.find(".is-active");if(e.length){var i=this;e.each(function(){i.down(t(this))})}this._events()}},{key:"_events",value:function(){var e=this;this.$element.find("li").each(function(){var i=t(this).children("[data-submenu]");i.length&&t(this).children("a").off("click.zf.accordionMenu").on("click.zf.accordionMenu",function(t){t.preventDefault(),e.toggle(i)})}).on("keydown.zf.accordionmenu",function(i){var n,s,o=t(this),a=o.parent("ul").children("li"),r=o.children("[data-submenu]");a.each(function(e){return t(this).is(o)?(n=a.eq(Math.max(0,e-1)).find("a").first(), +function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}!function(t){"use strict";function e(t){if(void 0===Function.prototype.name){var e=/function\s([^(]{1,})\(/,i=e.exec(t.toString());return i&&i.length>1?i[1].trim():""}return void 0===t.prototype?t.constructor.name:t.prototype.constructor.name}function i(t){return/true/.test(t)?!0:/false/.test(t)?!1:isNaN(1*t)?t:parseFloat(t)}function n(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}var s="6.2.3",o={version:s,_plugins:{},_uuids:[],rtl:function(){return"rtl"===t("html").attr("dir")},plugin:function(t,i){var s=i||e(t),o=n(s);this._plugins[o]=this[s]=t},registerPlugin:function(t,i){var s=i?n(i):e(t.constructor).toLowerCase();t.uuid=this.GetYoDigits(6,s),t.$element.attr("data-"+s)||t.$element.attr("data-"+s,t.uuid),t.$element.data("zfPlugin")||t.$element.data("zfPlugin",t),t.$element.trigger("init.zf."+s),this._uuids.push(t.uuid)},unregisterPlugin:function(t){var i=n(e(t.$element.data("zfPlugin").constructor));this._uuids.splice(this._uuids.indexOf(t.uuid),1),t.$element.removeAttr("data-"+i).removeData("zfPlugin").trigger("destroyed.zf."+i);for(var s in t)t[s]=null},reInit:function(e){var i=e instanceof t;try{if(i)e.each(function(){t(this).data("zfPlugin")._init()});else{var s=typeof e,o=this,a={object:function(e){e.forEach(function(e){e=n(e),t("[data-"+e+"]").foundation("_init")})},string:function(){e=n(e),t("[data-"+e+"]").foundation("_init")},undefined:function(){this.object(Object.keys(o._plugins))}};a[s](e)}}catch(r){console.error(r)}finally{return e}},GetYoDigits:function(t,e){return t=t||6,Math.round(Math.pow(36,t+1)-Math.random()*Math.pow(36,t)).toString(36).slice(1)+(e?"-"+e:"")},reflow:function(e,n){"undefined"==typeof n?n=Object.keys(this._plugins):"string"==typeof n&&(n=[n]);var s=this;t.each(n,function(n,o){var a=s._plugins[o],r=t(e).find("[data-"+o+"]").addBack("[data-"+o+"]");r.each(function(){var e=t(this),n={};if(e.data("zfPlugin"))return void console.warn("Tried to initialize "+o+" on an element that already has a Foundation plugin.");if(e.attr("data-options")){e.attr("data-options").split(";").forEach(function(t,e){var s=t.split(":").map(function(t){return t.trim()});s[0]&&(n[s[0]]=i(s[1]))})}try{e.data("zfPlugin",new a(t(this),n))}catch(s){console.error(s)}finally{return}})})},getFnName:e,transitionend:function(t){var e,i={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend"},n=document.createElement("div");for(var s in i)"undefined"!=typeof n.style[s]&&(e=i[s]);return e?e:(e=setTimeout(function(){t.triggerHandler("transitionend",[t])},1),"transitionend")}};o.util={throttle:function(t,e){var i=null;return function(){var n=this,s=arguments;null===i&&(i=setTimeout(function(){t.apply(n,s),i=null},e))}}};var a=function(i){var n=typeof i,s=t("meta.foundation-mq"),a=t(".no-js");if(s.length||t('<meta class="foundation-mq">').appendTo(document.head),a.length&&a.removeClass("no-js"),"undefined"===n)o.MediaQuery._init(),o.reflow(this);else{if("string"!==n)throw new TypeError("We're sorry, "+n+" is not a valid parameter. You must use a string representing the method you wish to invoke.");var r=Array.prototype.slice.call(arguments,1),l=this.data("zfPlugin");if(void 0===l||void 0===l[i])throw new ReferenceError("We're sorry, '"+i+"' is not an available method for "+(l?e(l):"this element")+".");1===this.length?l[i].apply(l,r):this.each(function(e,n){l[i].apply(t(n).data("zfPlugin"),r)})}return this};window.Foundation=o,t.fn.foundation=a,function(){Date.now&&window.Date.now||(window.Date.now=Date.now=function(){return(new Date).getTime()});for(var t=["webkit","moz"],e=0;e<t.length&&!window.requestAnimationFrame;++e){var i=t[e];window.requestAnimationFrame=window[i+"RequestAnimationFrame"],window.cancelAnimationFrame=window[i+"CancelAnimationFrame"]||window[i+"CancelRequestAnimationFrame"]}if(/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)||!window.requestAnimationFrame||!window.cancelAnimationFrame){var n=0;window.requestAnimationFrame=function(t){var e=Date.now(),i=Math.max(n+16,e);return setTimeout(function(){t(n=i)},i-e)},window.cancelAnimationFrame=clearTimeout}window.performance&&window.performance.now||(window.performance={start:Date.now(),now:function(){return Date.now()-this.start}})}(),Function.prototype.bind||(Function.prototype.bind=function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var e=Array.prototype.slice.call(arguments,1),i=this,n=function(){},s=function(){return i.apply(this instanceof n?this:t,e.concat(Array.prototype.slice.call(arguments)))};return this.prototype&&(n.prototype=this.prototype),s.prototype=new n,s})}(jQuery),!function(t){function e(t,e,n,s){var o,a,r,l,u=i(t);if(e){var d=i(e);a=u.offset.top+u.height<=d.height+d.offset.top,o=u.offset.top>=d.offset.top,r=u.offset.left>=d.offset.left,l=u.offset.left+u.width<=d.width+d.offset.left}else a=u.offset.top+u.height<=u.windowDims.height+u.windowDims.offset.top,o=u.offset.top>=u.windowDims.offset.top,r=u.offset.left>=u.windowDims.offset.left,l=u.offset.left+u.width<=u.windowDims.width;var h=[a,o,r,l];return n?r===l==!0:s?o===a==!0:-1===h.indexOf(!1)}function i(t,e){if(t=t.length?t[0]:t,t===window||t===document)throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");var i=t.getBoundingClientRect(),n=t.parentNode.getBoundingClientRect(),s=document.body.getBoundingClientRect(),o=window.pageYOffset,a=window.pageXOffset;return{width:i.width,height:i.height,offset:{top:i.top+o,left:i.left+a},parentDims:{width:n.width,height:n.height,offset:{top:n.top+o,left:n.left+a}},windowDims:{width:s.width,height:s.height,offset:{top:o,left:a}}}}function n(t,e,n,s,o,a){var r=i(t),l=e?i(e):null;switch(n){case"top":return{left:Foundation.rtl()?l.offset.left-r.width+l.width:l.offset.left,top:l.offset.top-(r.height+s)};case"left":return{left:l.offset.left-(r.width+o),top:l.offset.top};case"right":return{left:l.offset.left+l.width+o,top:l.offset.top};case"center top":return{left:l.offset.left+l.width/2-r.width/2,top:l.offset.top-(r.height+s)};case"center bottom":return{left:a?o:l.offset.left+l.width/2-r.width/2,top:l.offset.top+l.height+s};case"center left":return{left:l.offset.left-(r.width+o),top:l.offset.top+l.height/2-r.height/2};case"center right":return{left:l.offset.left+l.width+o+1,top:l.offset.top+l.height/2-r.height/2};case"center":return{left:r.windowDims.offset.left+r.windowDims.width/2-r.width/2,top:r.windowDims.offset.top+r.windowDims.height/2-r.height/2};case"reveal":return{left:(r.windowDims.width-r.width)/2,top:r.windowDims.offset.top+s};case"reveal full":return{left:r.windowDims.offset.left,top:r.windowDims.offset.top};case"left bottom":return{left:l.offset.left-(r.width+o),top:l.offset.top+l.height};case"right bottom":return{left:l.offset.left+l.width+o-r.width,top:l.offset.top+l.height};default:return{left:Foundation.rtl()?l.offset.left-r.width+l.width:l.offset.left,top:l.offset.top+l.height+s}}}Foundation.Box={ImNotTouchingYou:e,GetDimensions:i,GetOffsets:n}}(jQuery),!function(t){function e(t){var e={};for(var i in t)e[t[i]]=t[i];return e}var i={9:"TAB",13:"ENTER",27:"ESCAPE",32:"SPACE",37:"ARROW_LEFT",38:"ARROW_UP",39:"ARROW_RIGHT",40:"ARROW_DOWN"},n={},s={keys:e(i),parseKey:function(t){var e=i[t.which||t.keyCode]||String.fromCharCode(t.which).toUpperCase();return t.shiftKey&&(e="SHIFT_"+e),t.ctrlKey&&(e="CTRL_"+e),t.altKey&&(e="ALT_"+e),e},handleKey:function(e,i,s){var o,a,r,l=n[i],u=this.parseKey(e);if(!l)return console.warn("Component not defined!");if(o="undefined"==typeof l.ltr?l:Foundation.rtl()?t.extend({},l.ltr,l.rtl):t.extend({},l.rtl,l.ltr),a=o[u],r=s[a],r&&"function"==typeof r){var d=r.apply();(s.handled||"function"==typeof s.handled)&&s.handled(d)}else(s.unhandled||"function"==typeof s.unhandled)&&s.unhandled()},findFocusable:function(e){return e.find("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]").filter(function(){return t(this).is(":visible")&&!(t(this).attr("tabindex")<0)})},register:function(t,e){n[t]=e}};Foundation.Keyboard=s}(jQuery),!function(t){function e(t){var e={};return"string"!=typeof t?e:(t=t.trim().slice(1,-1))?e=t.split("&").reduce(function(t,e){var i=e.replace(/\+/g," ").split("="),n=i[0],s=i[1];return n=decodeURIComponent(n),s=void 0===s?null:decodeURIComponent(s),t.hasOwnProperty(n)?Array.isArray(t[n])?t[n].push(s):t[n]=[t[n],s]:t[n]=s,t},{}):e}var i={queries:[],current:"",_init:function(){var i,n=this,s=t(".foundation-mq").css("font-family");i=e(s);for(var o in i)i.hasOwnProperty(o)&&n.queries.push({name:o,value:"only screen and (min-width: "+i[o]+")"});this.current=this._getCurrentSize(),this._watcher()},atLeast:function(t){var e=this.get(t);return e?window.matchMedia(e).matches:!1},get:function(t){for(var e in this.queries)if(this.queries.hasOwnProperty(e)){var i=this.queries[e];if(t===i.name)return i.value}return null},_getCurrentSize:function(){for(var t,e=0;e<this.queries.length;e++){var i=this.queries[e];window.matchMedia(i.value).matches&&(t=i)}return"object"==typeof t?t.name:t},_watcher:function(){var e=this;t(window).on("resize.zf.mediaquery",function(){var i=e._getCurrentSize(),n=e.current;i!==n&&(e.current=i,t(window).trigger("changed.zf.mediaquery",[i,n]))})}};Foundation.MediaQuery=i,window.matchMedia||(window.matchMedia=function(){"use strict";var t=window.styleMedia||window.media;if(!t){var e=document.createElement("style"),i=document.getElementsByTagName("script")[0],n=null;e.type="text/css",e.id="matchmediajs-test",i.parentNode.insertBefore(e,i),n="getComputedStyle"in window&&window.getComputedStyle(e,null)||e.currentStyle,t={matchMedium:function(t){var i="@media "+t+"{ #matchmediajs-test { width: 1px; } }";return e.styleSheet?e.styleSheet.cssText=i:e.textContent=i,"1px"===n.width}}}return function(e){return{matches:t.matchMedium(e||"all"),media:e||"all"}}}()),Foundation.MediaQuery=i}(jQuery),!function(t){function e(t,e,i){function n(r){a||(a=window.performance.now()),o=r-a,i.apply(e),t>o?s=window.requestAnimationFrame(n,e):(window.cancelAnimationFrame(s),e.trigger("finished.zf.animate",[e]).triggerHandler("finished.zf.animate",[e]))}var s,o,a=null;s=window.requestAnimationFrame(n)}function i(e,i,o,a){function r(){e||i.hide(),l(),a&&a.apply(i)}function l(){i[0].style.transitionDuration=0,i.removeClass(u+" "+d+" "+o)}if(i=t(i).eq(0),i.length){var u=e?n[0]:n[1],d=e?s[0]:s[1];l(),i.addClass(o).css("transition","none"),requestAnimationFrame(function(){i.addClass(u),e&&i.show()}),requestAnimationFrame(function(){i[0].offsetWidth,i.css("transition","").addClass(d)}),i.one(Foundation.transitionend(i),r)}}var n=["mui-enter","mui-leave"],s=["mui-enter-active","mui-leave-active"],o={animateIn:function(t,e,n){i(!0,t,e,n)},animateOut:function(t,e,n){i(!1,t,e,n)}};Foundation.Move=e,Foundation.Motion=o}(jQuery),!function(t){var e={Feather:function(e){var i=arguments.length<=1||void 0===arguments[1]?"zf":arguments[1];e.attr("role","menubar");var n=e.find("li").attr({role:"menuitem"}),s="is-"+i+"-submenu",o=s+"-item",a="is-"+i+"-submenu-parent";e.find("a:first").attr("tabindex",0),n.each(function(){var e=t(this),i=e.children("ul");i.length&&(e.addClass(a).attr({"aria-haspopup":!0,"aria-expanded":!1,"aria-label":e.children("a:first").text()}),i.addClass("submenu "+s).attr({"data-submenu":"","aria-hidden":!0,role:"menu"})),e.parent("[data-submenu]").length&&e.addClass("is-submenu-item "+o)})},Burn:function(t,e){var i=(t.find("li").removeAttr("tabindex"),"is-"+e+"-submenu"),n=i+"-item",s="is-"+e+"-submenu-parent";t.find("*").removeClass(i+" "+n+" "+s+" is-submenu-item submenu is-active").removeAttr("data-submenu").css("display","")}};Foundation.Nest=e}(jQuery),!function(t){function e(t,e,i){var n,s,o=this,a=e.duration,r=Object.keys(t.data())[0]||"timer",l=-1;this.isPaused=!1,this.restart=function(){l=-1,clearTimeout(s),this.start()},this.start=function(){this.isPaused=!1,clearTimeout(s),l=0>=l?a:l,t.data("paused",!1),n=Date.now(),s=setTimeout(function(){e.infinite&&o.restart(),i()},l),t.trigger("timerstart.zf."+r)},this.pause=function(){this.isPaused=!0,clearTimeout(s),t.data("paused",!0);var e=Date.now();l-=e-n,t.trigger("timerpaused.zf."+r)}}function i(e,i){function n(){s--,0===s&&i()}var s=e.length;0===s&&i(),e.each(function(){this.complete?n():"undefined"!=typeof this.naturalWidth&&this.naturalWidth>0?n():t(this).one("load",function(){n()})})}Foundation.Timer=e,Foundation.onImagesLoaded=i}(jQuery),function(t){function e(){this.removeEventListener("touchmove",i),this.removeEventListener("touchend",e),u=!1}function i(i){if(t.spotSwipe.preventDefault&&i.preventDefault(),u){var n,s=i.touches[0].pageX,a=(i.touches[0].pageY,o-s);l=(new Date).getTime()-r,Math.abs(a)>=t.spotSwipe.moveThreshold&&l<=t.spotSwipe.timeThreshold&&(n=a>0?"left":"right"),n&&(i.preventDefault(),e.call(this),t(this).trigger("swipe",n).trigger("swipe"+n))}}function n(t){1==t.touches.length&&(o=t.touches[0].pageX,a=t.touches[0].pageY,u=!0,r=(new Date).getTime(),this.addEventListener("touchmove",i,!1),this.addEventListener("touchend",e,!1))}function s(){this.addEventListener&&this.addEventListener("touchstart",n,!1)}t.spotSwipe={version:"1.0.0",enabled:"ontouchstart"in document.documentElement,preventDefault:!1,moveThreshold:75,timeThreshold:200};var o,a,r,l,u=!1;t.event.special.swipe={setup:s},t.each(["left","up","down","right"],function(){t.event.special["swipe"+this]={setup:function(){t(this).on("swipe",t.noop)}}})}(jQuery),!function(t){t.fn.addTouch=function(){this.each(function(i,n){t(n).bind("touchstart touchmove touchend touchcancel",function(){e(event)})});var e=function(t){var e,i=t.changedTouches,n=i[0],s={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup"},o=s[t.type];"MouseEvent"in window&&"function"==typeof window.MouseEvent?e=new window.MouseEvent(o,{bubbles:!0,cancelable:!0,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY}):(e=document.createEvent("MouseEvent"),e.initMouseEvent(o,!0,!0,window,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null)),n.target.dispatchEvent(e)}}}(jQuery),!function(t){function e(){o(),n(),s(),i()}function i(e){var i=t("[data-yeti-box]"),n=["dropdown","tooltip","reveal"];if(e&&("string"==typeof e?n.push(e):"object"==typeof e&&"string"==typeof e[0]?n.concat(e):console.error("Plugin names must be strings")),i.length){var s=n.map(function(t){return"closeme.zf."+t}).join(" ");t(window).off(s).on(s,function(e,i){var n=e.namespace.split(".")[0],s=t("[data-"+n+"]").not('[data-yeti-box="'+i+'"]');s.each(function(){var e=t(this);e.triggerHandler("close.zf.trigger",[e])})})}}function n(e){var i=void 0,n=t("[data-resize]");n.length&&t(window).off("resize.zf.trigger").on("resize.zf.trigger",function(s){i&&clearTimeout(i),i=setTimeout(function(){a||n.each(function(){t(this).triggerHandler("resizeme.zf.trigger")}),n.attr("data-events","resize")},e||10)})}function s(e){var i=void 0,n=t("[data-scroll]");n.length&&t(window).off("scroll.zf.trigger").on("scroll.zf.trigger",function(s){i&&clearTimeout(i),i=setTimeout(function(){a||n.each(function(){t(this).triggerHandler("scrollme.zf.trigger")}),n.attr("data-events","scroll")},e||10)})}function o(){if(!a)return!1;var e=document.querySelectorAll("[data-resize], [data-scroll], [data-mutate]"),i=function(e){var i=t(e[0].target);switch(i.attr("data-events")){case"resize":i.triggerHandler("resizeme.zf.trigger",[i]);break;case"scroll":i.triggerHandler("scrollme.zf.trigger",[i,window.pageYOffset]);break;default:return!1}};if(e.length)for(var n=0;n<=e.length-1;n++){var s=new a(i);s.observe(e[n],{attributes:!0,childList:!1,characterData:!1,subtree:!1,attributeFilter:["data-events"]})}}var a=function(){for(var t=["WebKit","Moz","O","Ms",""],e=0;e<t.length;e++)if(t[e]+"MutationObserver"in window)return window[t[e]+"MutationObserver"];return!1}(),r=function(e,i){e.data(i).split(" ").forEach(function(n){t("#"+n)["close"===i?"trigger":"triggerHandler"](i+".zf.trigger",[e])})};t(document).on("click.zf.trigger","[data-open]",function(){r(t(this),"open")}),t(document).on("click.zf.trigger","[data-close]",function(){var e=t(this).data("close");e?r(t(this),"close"):t(this).trigger("close.zf.trigger")}),t(document).on("click.zf.trigger","[data-toggle]",function(){r(t(this),"toggle")}),t(document).on("close.zf.trigger","[data-closable]",function(e){e.stopPropagation();var i=t(this).data("closable");""!==i?Foundation.Motion.animateOut(t(this),i,function(){t(this).trigger("closed.zf")}):t(this).fadeOut().trigger("closed.zf")}),t(document).on("focus.zf.trigger blur.zf.trigger","[data-toggle-focus]",function(){var e=t(this).data("toggle-focus");t("#"+e).triggerHandler("toggle.zf.trigger",[t(this)])}),t(window).load(function(){e()}),Foundation.IHearYou=e}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Abide")}return _createClass(e,[{key:"_init",value:function(){this.$inputs=this.$element.find("input, textarea, select"),this._events()}},{key:"_events",value:function(){var e=this;this.$element.off(".abide").on("reset.zf.abide",function(){e.resetForm()}).on("submit.zf.abide",function(){return e.validateForm()}),"fieldChange"===this.options.validateOn&&this.$inputs.off("change.zf.abide").on("change.zf.abide",function(i){e.validateInput(t(i.target))}),this.options.liveValidate&&this.$inputs.off("input.zf.abide").on("input.zf.abide",function(i){e.validateInput(t(i.target))})}},{key:"_reflow",value:function(){this._init()}},{key:"requiredCheck",value:function(t){if(!t.attr("required"))return!0;var e=!0;switch(t[0].type){case"checkbox":e=t[0].checked;break;case"select":case"select-one":case"select-multiple":var i=t.find("option:selected");i.length&&i.val()||(e=!1);break;default:t.val()&&t.val().length||(e=!1)}return e}},{key:"findFormError",value:function(t){var e=t.siblings(this.options.formErrorSelector);return e.length||(e=t.parent().find(this.options.formErrorSelector)),e}},{key:"findLabel",value:function(t){var e=t[0].id,i=this.$element.find('label[for="'+e+'"]');return i.length?i:t.closest("label")}},{key:"findRadioLabels",value:function(e){var i=this,n=e.map(function(e,n){var s=n.id,o=i.$element.find('label[for="'+s+'"]');return o.length||(o=t(n).closest("label")),o[0]});return t(n)}},{key:"addErrorClasses",value:function(t){var e=this.findLabel(t),i=this.findFormError(t);e.length&&e.addClass(this.options.labelErrorClass),i.length&&i.addClass(this.options.formErrorClass),t.addClass(this.options.inputErrorClass).attr("data-invalid","")}},{key:"removeRadioErrorClasses",value:function(t){var e=this.$element.find(':radio[name="'+t+'"]'),i=this.findRadioLabels(e),n=this.findFormError(e);i.length&&i.removeClass(this.options.labelErrorClass),n.length&&n.removeClass(this.options.formErrorClass),e.removeClass(this.options.inputErrorClass).removeAttr("data-invalid")}},{key:"removeErrorClasses",value:function(t){if("radio"==t[0].type)return this.removeRadioErrorClasses(t.attr("name"));var e=this.findLabel(t),i=this.findFormError(t);e.length&&e.removeClass(this.options.labelErrorClass),i.length&&i.removeClass(this.options.formErrorClass),t.removeClass(this.options.inputErrorClass).removeAttr("data-invalid")}},{key:"validateInput",value:function(t){var e=this.requiredCheck(t),i=!1,n=!0,s=t.attr("data-validator"),o=!0;if(t.is("[data-abide-ignore]")||t.is('[type="hidden"]'))return!0;switch(t[0].type){case"radio":i=this.validateRadio(t.attr("name"));break;case"checkbox":i=e;break;case"select":case"select-one":case"select-multiple":i=e;break;default:i=this.validateText(t)}s&&(n=this.matchValidation(t,s,t.attr("required"))),t.attr("data-equalto")&&(o=this.options.validators.equalTo(t));var a=-1===[e,i,n,o].indexOf(!1),r=(a?"valid":"invalid")+".zf.abide";return this[a?"removeErrorClasses":"addErrorClasses"](t),t.trigger(r,[t]),a}},{key:"validateForm",value:function(){var e=[],i=this;this.$inputs.each(function(){e.push(i.validateInput(t(this)))});var n=-1===e.indexOf(!1);return this.$element.find("[data-abide-error]").css("display",n?"none":"block"),this.$element.trigger((n?"formvalid":"forminvalid")+".zf.abide",[this.$element]),n}},{key:"validateText",value:function(t,e){e=e||t.attr("pattern")||t.attr("type");var i=t.val(),n=!1;return i.length?n=this.options.patterns.hasOwnProperty(e)?this.options.patterns[e].test(i):e!==t.attr("type")?new RegExp(e).test(i):!0:t.prop("required")||(n=!0),n}},{key:"validateRadio",value:function(e){var i=this.$element.find(':radio[name="'+e+'"]'),n=!1,s=!1;return i.each(function(e,i){t(i).attr("required")&&(s=!0)}),s||(n=!0),n||i.each(function(e,i){t(i).prop("checked")&&(n=!0)}),n}},{key:"matchValidation",value:function(t,e,i){var n=this;i=!!i;var s=e.split(" ").map(function(e){return n.options.validators[e](t,i,t.parent())});return-1===s.indexOf(!1)}},{key:"resetForm",value:function(){var e=this.$element,i=this.options;t("."+i.labelErrorClass,e).not("small").removeClass(i.labelErrorClass),t("."+i.inputErrorClass,e).not("small").removeClass(i.inputErrorClass),t(i.formErrorSelector+"."+i.formErrorClass).removeClass(i.formErrorClass),e.find("[data-abide-error]").css("display","none"),t(":input",e).not(":button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]").val("").removeAttr("data-invalid"),t(":input:radio",e).not("[data-abide-ignore]").prop("checked",!1).removeAttr("data-invalid"),t(":input:checkbox",e).not("[data-abide-ignore]").prop("checked",!1).removeAttr("data-invalid"),e.trigger("formreset.zf.abide",[e])}},{key:"destroy",value:function(){var e=this;this.$element.off(".abide").find("[data-abide-error]").css("display","none"),this.$inputs.off(".abide").each(function(){e.removeErrorClasses(t(this))}),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={validateOn:"fieldChange",labelErrorClass:"is-invalid-label",inputErrorClass:"is-invalid-input",formErrorSelector:".form-error",formErrorClass:"is-visible",liveValidate:!1,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/},validators:{equalTo:function(e,i,n){return t("#"+e.attr("data-equalto")).val()===e.val()}}},Foundation.plugin(e,"Abide")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Accordion"),Foundation.Keyboard.register("Accordion",{ENTER:"toggle",SPACE:"toggle",ARROW_DOWN:"next",ARROW_UP:"previous"})}return _createClass(e,[{key:"_init",value:function(){this.$element.attr("role","tablist"),this.$tabs=this.$element.children("li, [data-accordion-item]"),this.$tabs.each(function(e,i){var n=t(i),s=n.children("[data-tab-content]"),o=s[0].id||Foundation.GetYoDigits(6,"accordion"),a=i.id||o+"-label";n.find("a:first").attr({"aria-controls":o,role:"tab",id:a,"aria-expanded":!1,"aria-selected":!1}),s.attr({role:"tabpanel","aria-labelledby":a,"aria-hidden":!0,id:o})});var e=this.$element.find(".is-active").children("[data-tab-content]");e.length&&this.down(e,!0),this._events()}},{key:"_events",value:function(){var e=this;this.$tabs.each(function(){var i=t(this),n=i.children("[data-tab-content]");n.length&&i.children("a").off("click.zf.accordion keydown.zf.accordion").on("click.zf.accordion",function(t){t.preventDefault(),i.hasClass("is-active")?(e.options.allowAllClosed||i.siblings().hasClass("is-active"))&&e.up(n):e.down(n)}).on("keydown.zf.accordion",function(t){Foundation.Keyboard.handleKey(t,"Accordion",{toggle:function(){e.toggle(n)},next:function(){var t=i.next().find("a").focus();e.options.multiExpand||t.trigger("click.zf.accordion")},previous:function(){var t=i.prev().find("a").focus();e.options.multiExpand||t.trigger("click.zf.accordion")},handled:function(){t.preventDefault(),t.stopPropagation()}})})})}},{key:"toggle",value:function(t){if(t.parent().hasClass("is-active")){if(!this.options.allowAllClosed&&!t.parent().siblings().hasClass("is-active"))return;this.up(t)}else this.down(t)}},{key:"down",value:function(e,i){var n=this;if(!this.options.multiExpand&&!i){var s=this.$element.children(".is-active").children("[data-tab-content]");s.length&&this.up(s)}e.attr("aria-hidden",!1).parent("[data-tab-content]").addBack().parent().addClass("is-active"),e.slideDown(this.options.slideSpeed,function(){n.$element.trigger("down.zf.accordion",[e])}),t("#"+e.attr("aria-labelledby")).attr({"aria-expanded":!0,"aria-selected":!0})}},{key:"up",value:function(e){var i=e.parent().siblings(),n=this,s=this.options.multiExpand?i.hasClass("is-active"):e.parent().hasClass("is-active");(this.options.allowAllClosed||s)&&(e.slideUp(n.options.slideSpeed,function(){n.$element.trigger("up.zf.accordion",[e])}),e.attr("aria-hidden",!0).parent().removeClass("is-active"),t("#"+e.attr("aria-labelledby")).attr({"aria-expanded":!1,"aria-selected":!1}))}},{key:"destroy",value:function(){this.$element.find("[data-tab-content]").stop(!0).slideUp(0).css("display",""),this.$element.find("a").off(".zf.accordion"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={slideSpeed:250,multiExpand:!1,allowAllClosed:!1},Foundation.plugin(e,"Accordion")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),Foundation.Nest.Feather(this.$element,"accordion"),this._init(),Foundation.registerPlugin(this,"AccordionMenu"),Foundation.Keyboard.register("AccordionMenu",{ENTER:"toggle",SPACE:"toggle",ARROW_RIGHT:"open",ARROW_UP:"up",ARROW_DOWN:"down",ARROW_LEFT:"close",ESCAPE:"closeAll",TAB:"down",SHIFT_TAB:"up"})}return _createClass(e,[{key:"_init",value:function(){this.$element.find("[data-submenu]").not(".is-active").slideUp(0),this.$element.attr({role:"tablist","aria-multiselectable":this.options.multiOpen}),this.$menuLinks=this.$element.find(".is-accordion-submenu-parent"),this.$menuLinks.each(function(){var e=this.id||Foundation.GetYoDigits(6,"acc-menu-link"),i=t(this),n=i.children("[data-submenu]"),s=n[0].id||Foundation.GetYoDigits(6,"acc-menu"),o=n.hasClass("is-active");i.attr({"aria-controls":s,"aria-expanded":o,role:"tab",id:e}),n.attr({"aria-labelledby":e,"aria-hidden":!o,role:"tabpanel",id:s})});var e=this.$element.find(".is-active");if(e.length){var i=this;e.each(function(){i.down(t(this))})}this._events()}},{key:"_events",value:function(){var e=this;this.$element.find("li").each(function(){var i=t(this).children("[data-submenu]");i.length&&t(this).children("a").off("click.zf.accordionMenu").on("click.zf.accordionMenu",function(t){t.preventDefault(),e.toggle(i)})}).on("keydown.zf.accordionmenu",function(i){var n,s,o=t(this),a=o.parent("ul").children("li"),r=o.children("[data-submenu]");a.each(function(e){return t(this).is(o)?(n=a.eq(Math.max(0,e-1)).find("a").first(), s=a.eq(Math.min(e+1,a.length-1)).find("a").first(),t(this).children("[data-submenu]:visible").length&&(s=o.find("li:first-child").find("a").first()),t(this).is(":first-child")?n=o.parents("li").first().find("a").first():n.children("[data-submenu]:visible").length&&(n=n.find("li:last-child").find("a").first()),void(t(this).is(":last-child")&&(s=o.parents("li").first().next("li").find("a").first()))):void 0}),Foundation.Keyboard.handleKey(i,"AccordionMenu",{open:function(){r.is(":hidden")&&(e.down(r),r.find("li").first().find("a").first().focus())},close:function(){r.length&&!r.is(":hidden")?e.up(r):o.parent("[data-submenu]").length&&(e.up(o.parent("[data-submenu]")),o.parents("li").first().find("a").first().focus())},up:function(){return n.attr("tabindex",-1).focus(),!0},down:function(){return s.attr("tabindex",-1).focus(),!0},toggle:function(){o.children("[data-submenu]").length&&e.toggle(o.children("[data-submenu]"))},closeAll:function(){e.hideAll()},handled:function(t){t&&i.preventDefault(),i.stopImmediatePropagation()}})})}},{key:"hideAll",value:function(){this.$element.find("[data-submenu]").slideUp(this.options.slideSpeed)}},{key:"toggle",value:function(t){t.is(":animated")||(t.is(":hidden")?this.down(t):this.up(t))}},{key:"down",value:function(t){var e=this;this.options.multiOpen||this.up(this.$element.find(".is-active").not(t.parentsUntil(this.$element).add(t))),t.addClass("is-active").attr({"aria-hidden":!1}).parent(".is-accordion-submenu-parent").attr({"aria-expanded":!0}),t.slideDown(e.options.slideSpeed,function(){e.$element.trigger("down.zf.accordionMenu",[t])})}},{key:"up",value:function(t){var e=this;t.slideUp(e.options.slideSpeed,function(){e.$element.trigger("up.zf.accordionMenu",[t])});var i=t.find("[data-submenu]").slideUp(0).addBack().attr("aria-hidden",!0);i.parent(".is-accordion-submenu-parent").attr("aria-expanded",!1)}},{key:"destroy",value:function(){this.$element.find("[data-submenu]").slideDown(0).css("display",""),this.$element.find("a").off("click.zf.accordionMenu"),Foundation.Nest.Burn(this.$element,"accordion"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={slideSpeed:250,multiOpen:!0},Foundation.plugin(e,"AccordionMenu")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),Foundation.Nest.Feather(this.$element,"drilldown"),this._init(),Foundation.registerPlugin(this,"Drilldown"),Foundation.Keyboard.register("Drilldown",{ENTER:"open",SPACE:"open",ARROW_RIGHT:"next",ARROW_UP:"up",ARROW_DOWN:"down",ARROW_LEFT:"previous",ESCAPE:"close",TAB:"down",SHIFT_TAB:"up"})}return _createClass(e,[{key:"_init",value:function(){this.$submenuAnchors=this.$element.find("li.is-drilldown-submenu-parent").children("a"),this.$submenus=this.$submenuAnchors.parent("li").children("[data-submenu]"),this.$menuItems=this.$element.find("li").not(".js-drilldown-back").attr("role","menuitem").find("a"),this._prepareMenu(),this._keyboardEvents()}},{key:"_prepareMenu",value:function(){var e=this;this.$submenuAnchors.each(function(){var i=t(this),n=i.parent();e.options.parentLink&&i.clone().prependTo(n.children("[data-submenu]")).wrap('<li class="is-submenu-parent-item is-submenu-item is-drilldown-submenu-item" role="menu-item"></li>'),i.data("savedHref",i.attr("href")).removeAttr("href"),i.children("[data-submenu]").attr({"aria-hidden":!0,tabindex:0,role:"menu"}),e._events(i)}),this.$submenus.each(function(){var i=t(this),n=i.find(".js-drilldown-back");n.length||i.prepend(e.options.backButton),e._back(i)}),this.$element.parent().hasClass("is-drilldown")||(this.$wrapper=t(this.options.wrapper).addClass("is-drilldown"),this.$wrapper=this.$element.wrap(this.$wrapper).parent().css(this._getMaxDims()))}},{key:"_events",value:function(e){var i=this;e.off("click.zf.drilldown").on("click.zf.drilldown",function(n){if(t(n.target).parentsUntil("ul","li").hasClass("is-drilldown-submenu-parent")&&(n.stopImmediatePropagation(),n.preventDefault()),i._show(e.parent("li")),i.options.closeOnClick){var s=t("body");s.off(".zf.drilldown").on("click.zf.drilldown",function(e){e.target===i.$element[0]||t.contains(i.$element[0],e.target)||(e.preventDefault(),i._hideAll(),s.off(".zf.drilldown"))})}})}},{key:"_keyboardEvents",value:function(){var e=this;this.$menuItems.add(this.$element.find(".js-drilldown-back > a")).on("keydown.zf.drilldown",function(i){var n,s,o=t(this),a=o.parent("li").parent("ul").children("li").children("a");a.each(function(e){return t(this).is(o)?(n=a.eq(Math.max(0,e-1)),void(s=a.eq(Math.min(e+1,a.length-1)))):void 0}),Foundation.Keyboard.handleKey(i,"Drilldown",{next:function(){return o.is(e.$submenuAnchors)?(e._show(o.parent("li")),o.parent("li").one(Foundation.transitionend(o),function(){o.parent("li").find("ul li a").filter(e.$menuItems).first().focus()}),!0):void 0},previous:function(){return e._hide(o.parent("li").parent("ul")),o.parent("li").parent("ul").one(Foundation.transitionend(o),function(){setTimeout(function(){o.parent("li").parent("ul").parent("li").children("a").first().focus()},1)}),!0},up:function(){return n.focus(),!0},down:function(){return s.focus(),!0},close:function(){e._back()},open:function(){return o.is(e.$menuItems)?o.is(e.$submenuAnchors)&&(e._show(o.parent("li")),o.parent("li").one(Foundation.transitionend(o),function(){o.parent("li").find("ul li a").filter(e.$menuItems).first().focus()})):(e._hide(o.parent("li").parent("ul")),o.parent("li").parent("ul").one(Foundation.transitionend(o),function(){setTimeout(function(){o.parent("li").parent("ul").parent("li").children("a").first().focus()},1)})),!0},handled:function(t){t&&i.preventDefault(),i.stopImmediatePropagation()}})})}},{key:"_hideAll",value:function(){var t=this.$element.find(".is-drilldown-submenu.is-active").addClass("is-closing");t.one(Foundation.transitionend(t),function(e){t.removeClass("is-active is-closing")}),this.$element.trigger("closed.zf.drilldown")}},{key:"_back",value:function(t){var e=this;t.off("click.zf.drilldown"),t.children(".js-drilldown-back").on("click.zf.drilldown",function(i){i.stopImmediatePropagation(),e._hide(t)})}},{key:"_menuLinkEvents",value:function(){var t=this;this.$menuItems.not(".is-drilldown-submenu-parent").off("click.zf.drilldown").on("click.zf.drilldown",function(e){setTimeout(function(){t._hideAll()},0)})}},{key:"_show",value:function(t){t.children("[data-submenu]").addClass("is-active"),this.$element.trigger("open.zf.drilldown",[t])}},{key:"_hide",value:function(t){t.addClass("is-closing").one(Foundation.transitionend(t),function(){t.removeClass("is-active is-closing"),t.blur()}),t.trigger("hide.zf.drilldown",[t])}},{key:"_getMaxDims",value:function(){var e=0,i={};return this.$submenus.add(this.$element).each(function(){var i=t(this).children("li").length;e=i>e?i:e}),i["min-height"]=e*this.$menuItems[0].getBoundingClientRect().height+"px",i["max-width"]=this.$element[0].getBoundingClientRect().width+"px",i}},{key:"destroy",value:function(){this._hideAll(),Foundation.Nest.Burn(this.$element,"drilldown"),this.$element.unwrap().find(".js-drilldown-back, .is-submenu-parent-item").remove().end().find(".is-active, .is-closing, .is-drilldown-submenu").removeClass("is-active is-closing is-drilldown-submenu").end().find("[data-submenu]").removeAttr("aria-hidden tabindex role"),this.$submenuAnchors.each(function(){t(this).off(".zf.drilldown")}),this.$element.find("a").each(function(){var e=t(this);e.data("savedHref")&&e.attr("href",e.data("savedHref")).removeData("savedHref")}),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={backButton:'<li class="js-drilldown-back"><a tabindex="0">Back</a></li>',wrapper:"<div></div>",parentLink:!1,closeOnClick:!1},Foundation.plugin(e,"Drilldown")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Dropdown"),Foundation.Keyboard.register("Dropdown",{ENTER:"open",SPACE:"open",ESCAPE:"close",TAB:"tab_forward",SHIFT_TAB:"tab_backward"})}return _createClass(e,[{key:"_init",value:function(){var e=this.$element.attr("id");this.$anchor=t('[data-toggle="'+e+'"]')||t('[data-open="'+e+'"]'),this.$anchor.attr({"aria-controls":e,"data-is-focus":!1,"data-yeti-box":e,"aria-haspopup":!0,"aria-expanded":!1}),this.options.positionClass=this.getPositionClass(),this.counter=4,this.usedPositions=[],this.$element.attr({"aria-hidden":"true","data-yeti-box":e,"data-resize":e,"aria-labelledby":this.$anchor[0].id||Foundation.GetYoDigits(6,"dd-anchor")}),this._events()}},{key:"getPositionClass",value:function(){var t=this.$element[0].className.match(/(top|left|right|bottom)/g);t=t?t[0]:"";var e=/float-(\S+)\s/.exec(this.$anchor[0].className);e=e?e[1]:"";var i=e?e+" "+t:t;return i}},{key:"_reposition",value:function(t){this.usedPositions.push(t?t:"bottom"),!t&&this.usedPositions.indexOf("top")<0?this.$element.addClass("top"):"top"===t&&this.usedPositions.indexOf("bottom")<0?this.$element.removeClass(t):"left"===t&&this.usedPositions.indexOf("right")<0?this.$element.removeClass(t).addClass("right"):"right"===t&&this.usedPositions.indexOf("left")<0?this.$element.removeClass(t).addClass("left"):!t&&this.usedPositions.indexOf("top")>-1&&this.usedPositions.indexOf("left")<0?this.$element.addClass("left"):"top"===t&&this.usedPositions.indexOf("bottom")>-1&&this.usedPositions.indexOf("left")<0?this.$element.removeClass(t).addClass("left"):"left"===t&&this.usedPositions.indexOf("right")>-1&&this.usedPositions.indexOf("bottom")<0?this.$element.removeClass(t):"right"===t&&this.usedPositions.indexOf("left")>-1&&this.usedPositions.indexOf("bottom")<0?this.$element.removeClass(t):this.$element.removeClass(t),this.classChanged=!0,this.counter--}},{key:"_setPosition",value:function(){if("false"===this.$anchor.attr("aria-expanded"))return!1;var t=this.getPositionClass(),e=Foundation.Box.GetDimensions(this.$element),i=(Foundation.Box.GetDimensions(this.$anchor),"left"===t?"left":"right"===t?"left":"top"),n="top"===i?"height":"width";"height"===n?this.options.vOffset:this.options.hOffset;if(e.width>=e.windowDims.width||!this.counter&&!Foundation.Box.ImNotTouchingYou(this.$element))return this.$element.offset(Foundation.Box.GetOffsets(this.$element,this.$anchor,"center bottom",this.options.vOffset,this.options.hOffset,!0)).css({width:e.windowDims.width-2*this.options.hOffset,height:"auto"}),this.classChanged=!0,!1;for(this.$element.offset(Foundation.Box.GetOffsets(this.$element,this.$anchor,t,this.options.vOffset,this.options.hOffset));!Foundation.Box.ImNotTouchingYou(this.$element,!1,!0)&&this.counter;)this._reposition(t),this._setPosition()}},{key:"_events",value:function(){var e=this;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":this._setPosition.bind(this)}),this.options.hover&&(this.$anchor.off("mouseenter.zf.dropdown mouseleave.zf.dropdown").on("mouseenter.zf.dropdown",function(){clearTimeout(e.timeout),e.timeout=setTimeout(function(){e.open(),e.$anchor.data("hover",!0)},e.options.hoverDelay)}).on("mouseleave.zf.dropdown",function(){clearTimeout(e.timeout),e.timeout=setTimeout(function(){e.close(),e.$anchor.data("hover",!1)},e.options.hoverDelay)}),this.options.hoverPane&&this.$element.off("mouseenter.zf.dropdown mouseleave.zf.dropdown").on("mouseenter.zf.dropdown",function(){clearTimeout(e.timeout)}).on("mouseleave.zf.dropdown",function(){clearTimeout(e.timeout),e.timeout=setTimeout(function(){e.close(),e.$anchor.data("hover",!1)},e.options.hoverDelay)})),this.$anchor.add(this.$element).on("keydown.zf.dropdown",function(i){var n=t(this),s=Foundation.Keyboard.findFocusable(e.$element);Foundation.Keyboard.handleKey(i,"Dropdown",{tab_forward:function(){e.$element.find(":focus").is(s.eq(-1))&&(e.options.trapFocus?(s.eq(0).focus(),i.preventDefault()):e.close())},tab_backward:function(){(e.$element.find(":focus").is(s.eq(0))||e.$element.is(":focus"))&&(e.options.trapFocus?(s.eq(-1).focus(),i.preventDefault()):e.close())},open:function(){n.is(e.$anchor)&&(e.open(),e.$element.attr("tabindex",-1).focus(),i.preventDefault())},close:function(){e.close(),e.$anchor.focus()}})})}},{key:"_addBodyHandler",value:function(){var e=t(document.body).not(this.$element),i=this;e.off("click.zf.dropdown").on("click.zf.dropdown",function(t){i.$anchor.is(t.target)||i.$anchor.find(t.target).length||i.$element.find(t.target).length||(i.close(),e.off("click.zf.dropdown"))})}},{key:"open",value:function(){if(this.$element.trigger("closeme.zf.dropdown",this.$element.attr("id")),this.$anchor.addClass("hover").attr({"aria-expanded":!0}),this._setPosition(),this.$element.addClass("is-open").attr({"aria-hidden":!1}),this.options.autoFocus){var t=Foundation.Keyboard.findFocusable(this.$element);t.length&&t.eq(0).focus()}this.options.closeOnClick&&this._addBodyHandler(),this.$element.trigger("show.zf.dropdown",[this.$element])}},{key:"close",value:function(){if(!this.$element.hasClass("is-open"))return!1;if(this.$element.removeClass("is-open").attr({"aria-hidden":!0}),this.$anchor.removeClass("hover").attr("aria-expanded",!1),this.classChanged){var t=this.getPositionClass();t&&this.$element.removeClass(t),this.$element.addClass(this.options.positionClass).css({height:"",width:""}),this.classChanged=!1,this.counter=4,this.usedPositions.length=0}this.$element.trigger("hide.zf.dropdown",[this.$element])}},{key:"toggle",value:function(){if(this.$element.hasClass("is-open")){if(this.$anchor.data("hover"))return;this.close()}else this.open()}},{key:"destroy",value:function(){this.$element.off(".zf.trigger").hide(),this.$anchor.off(".zf.dropdown"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={hoverDelay:250,hover:!1,hoverPane:!1,vOffset:1,hOffset:1,positionClass:"",trapFocus:!1,autoFocus:!1,closeOnClick:!1},Foundation.plugin(e,"Dropdown")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),Foundation.Nest.Feather(this.$element,"dropdown"),this._init(),Foundation.registerPlugin(this,"DropdownMenu"),Foundation.Keyboard.register("DropdownMenu",{ENTER:"open",SPACE:"open",ARROW_RIGHT:"next",ARROW_UP:"up",ARROW_DOWN:"down",ARROW_LEFT:"previous",ESCAPE:"close"})}return _createClass(e,[{key:"_init",value:function(){var t=this.$element.find("li.is-dropdown-submenu-parent");this.$element.children(".is-dropdown-submenu-parent").children(".is-dropdown-submenu").addClass("first-sub"),this.$menuItems=this.$element.find('[role="menuitem"]'),this.$tabs=this.$element.children('[role="menuitem"]'),this.$tabs.find("ul.is-dropdown-submenu").addClass(this.options.verticalClass),this.$element.hasClass(this.options.rightClass)||"right"===this.options.alignment||Foundation.rtl()||this.$element.parents(".top-bar-right").is("*")?(this.options.alignment="right",t.addClass("opens-left")):t.addClass("opens-right"),this.changed=!1,this._events()}},{key:"_events",value:function(){var e=this,i="ontouchstart"in window||"undefined"!=typeof window.ontouchstart,n="is-dropdown-submenu-parent",s=function(s){var o=t(s.target).parentsUntil("ul","."+n),a=o.hasClass(n),r="true"===o.attr("data-is-click");o.children(".is-dropdown-submenu");if(a)if(r){if(!e.options.closeOnClick||!e.options.clickOpen&&!i||e.options.forceFollow&&i)return;s.stopImmediatePropagation(),s.preventDefault(),e._hide(o)}else s.preventDefault(),s.stopImmediatePropagation(),e._show(o.children(".is-dropdown-submenu")),o.add(o.parentsUntil(e.$element,"."+n)).attr("data-is-click",!0)};(this.options.clickOpen||i)&&this.$menuItems.on("click.zf.dropdownmenu touchstart.zf.dropdownmenu",s),this.options.disableHover||this.$menuItems.on("mouseenter.zf.dropdownmenu",function(i){var s=t(this),o=s.hasClass(n);o&&(clearTimeout(e.delay),e.delay=setTimeout(function(){e._show(s.children(".is-dropdown-submenu"))},e.options.hoverDelay))}).on("mouseleave.zf.dropdownmenu",function(i){var s=t(this),o=s.hasClass(n);if(o&&e.options.autoclose){if("true"===s.attr("data-is-click")&&e.options.clickOpen)return!1;clearTimeout(e.delay),e.delay=setTimeout(function(){e._hide(s)},e.options.closingTime)}}),this.$menuItems.on("keydown.zf.dropdownmenu",function(i){var n,s,o=t(i.target).parentsUntil("ul",'[role="menuitem"]'),a=e.$tabs.index(o)>-1,r=a?e.$tabs:o.siblings("li").add(o);r.each(function(e){return t(this).is(o)?(n=r.eq(e-1),void(s=r.eq(e+1))):void 0});var l=function(){o.is(":last-child")||(s.children("a:first").focus(),i.preventDefault())},u=function(){n.children("a:first").focus(),i.preventDefault()},d=function(){var t=o.children("ul.is-dropdown-submenu");t.length&&(e._show(t),o.find("li > a:first").focus(),i.preventDefault())},h=function(){var t=o.parent("ul").parent("li");t.children("a:first").focus(),e._hide(t),i.preventDefault()},c={open:d,close:function(){e._hide(e.$element),e.$menuItems.find("a:first").focus(),i.preventDefault()},handled:function(){i.stopImmediatePropagation()}};a?e.$element.hasClass(e.options.verticalClass)?"left"===e.options.alignment?t.extend(c,{down:l,up:u,next:d,previous:h}):t.extend(c,{down:l,up:u,next:h,previous:d}):t.extend(c,{next:l,previous:u,down:d,up:h}):"left"===e.options.alignment?t.extend(c,{next:d,previous:h,down:l,up:u}):t.extend(c,{next:h,previous:d,down:l,up:u}),Foundation.Keyboard.handleKey(i,"DropdownMenu",c)})}},{key:"_addBodyHandler",value:function(){var e=t(document.body),i=this;e.off("mouseup.zf.dropdownmenu touchend.zf.dropdownmenu").on("mouseup.zf.dropdownmenu touchend.zf.dropdownmenu",function(t){var n=i.$element.find(t.target);n.length||(i._hide(),e.off("mouseup.zf.dropdownmenu touchend.zf.dropdownmenu"))})}},{key:"_show",value:function(e){var i=this.$tabs.index(this.$tabs.filter(function(i,n){return t(n).find(e).length>0})),n=e.parent("li.is-dropdown-submenu-parent").siblings("li.is-dropdown-submenu-parent");this._hide(n,i),e.css("visibility","hidden").addClass("js-dropdown-active").attr({"aria-hidden":!1}).parent("li.is-dropdown-submenu-parent").addClass("is-active").attr({"aria-expanded":!0});var s=Foundation.Box.ImNotTouchingYou(e,null,!0);if(!s){var o="left"===this.options.alignment?"-right":"-left",a=e.parent(".is-dropdown-submenu-parent");a.removeClass("opens"+o).addClass("opens-"+this.options.alignment),s=Foundation.Box.ImNotTouchingYou(e,null,!0),s||a.removeClass("opens-"+this.options.alignment).addClass("opens-inner"),this.changed=!0}e.css("visibility",""),this.options.closeOnClick&&this._addBodyHandler(),this.$element.trigger("show.zf.dropdownmenu",[e])}},{key:"_hide",value:function(t,e){var i;i=t&&t.length?t:void 0!==e?this.$tabs.not(function(t,i){return t===e}):this.$element;var n=i.hasClass("is-active")||i.find(".is-active").length>0;if(n){if(i.find("li.is-active").add(i).attr({"aria-expanded":!1,"data-is-click":!1}).removeClass("is-active"),i.find("ul.js-dropdown-active").attr({"aria-hidden":!0}).removeClass("js-dropdown-active"),this.changed||i.find("opens-inner").length){var s="left"===this.options.alignment?"right":"left";i.find("li.is-dropdown-submenu-parent").add(i).removeClass("opens-inner opens-"+this.options.alignment).addClass("opens-"+s),this.changed=!1}this.$element.trigger("hide.zf.dropdownmenu",[i])}}},{key:"destroy",value:function(){this.$menuItems.off(".zf.dropdownmenu").removeAttr("data-is-click").removeClass("is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner"),t(document.body).off(".zf.dropdownmenu"),Foundation.Nest.Burn(this.$element,"dropdown"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={disableHover:!1,autoclose:!0,hoverDelay:50,clickOpen:!1,closingTime:500,alignment:"left",closeOnClick:!0,verticalClass:"vertical",rightClass:"align-right",forceFollow:!0},Foundation.plugin(e,"DropdownMenu")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Equalizer")}return _createClass(e,[{key:"_init",value:function(){var e=this.$element.attr("data-equalizer")||"",i=this.$element.find('[data-equalizer-watch="'+e+'"]');this.$watched=i.length?i:this.$element.find("[data-equalizer-watch]"),this.$element.attr("data-resize",e||Foundation.GetYoDigits(6,"eq")),this.hasNested=this.$element.find("[data-equalizer]").length>0,this.isNested=this.$element.parentsUntil(document.body,"[data-equalizer]").length>0,this.isOn=!1,this._bindHandler={onResizeMeBound:this._onResizeMe.bind(this),onPostEqualizedBound:this._onPostEqualized.bind(this)};var n,s=this.$element.find("img");this.options.equalizeOn?(n=this._checkMQ(),t(window).on("changed.zf.mediaquery",this._checkMQ.bind(this))):this._events(),(void 0!==n&&n===!1||void 0===n)&&(s.length?Foundation.onImagesLoaded(s,this._reflow.bind(this)):this._reflow())}},{key:"_pauseEvents",value:function(){this.isOn=!1,this.$element.off({".zf.equalizer":this._bindHandler.onPostEqualizedBound,"resizeme.zf.trigger":this._bindHandler.onResizeMeBound})}},{key:"_onResizeMe",value:function(t){this._reflow()}},{key:"_onPostEqualized",value:function(t){t.target!==this.$element[0]&&this._reflow()}},{key:"_events",value:function(){this._pauseEvents(),this.hasNested?this.$element.on("postequalized.zf.equalizer",this._bindHandler.onPostEqualizedBound):this.$element.on("resizeme.zf.trigger",this._bindHandler.onResizeMeBound),this.isOn=!0}},{key:"_checkMQ",value:function(){var t=!Foundation.MediaQuery.atLeast(this.options.equalizeOn);return t?this.isOn&&(this._pauseEvents(),this.$watched.css("height","auto")):this.isOn||this._events(),t}},{key:"_killswitch",value:function(){}},{key:"_reflow",value:function(){return!this.options.equalizeOnStack&&this._isStacked()?(this.$watched.css("height","auto"),!1):void(this.options.equalizeByRow?this.getHeightsByRow(this.applyHeightByRow.bind(this)):this.getHeights(this.applyHeight.bind(this)))}},{key:"_isStacked",value:function(){return this.$watched[0].getBoundingClientRect().top!==this.$watched[1].getBoundingClientRect().top}},{key:"getHeights",value:function(t){for(var e=[],i=0,n=this.$watched.length;n>i;i++)this.$watched[i].style.height="auto",e.push(this.$watched[i].offsetHeight);t(e)}},{key:"getHeightsByRow",value:function(e){var i=this.$watched.length?this.$watched.first().offset().top:0,n=[],s=0;n[s]=[];for(var o=0,a=this.$watched.length;a>o;o++){this.$watched[o].style.height="auto";var r=t(this.$watched[o]).offset().top;r!=i&&(s++,n[s]=[],i=r),n[s].push([this.$watched[o],this.$watched[o].offsetHeight])}for(var l=0,u=n.length;u>l;l++){var d=t(n[l]).map(function(){return this[1]}).get(),h=Math.max.apply(null,d);n[l].push(h)}e(n)}},{key:"applyHeight",value:function(t){var e=Math.max.apply(null,t);this.$element.trigger("preequalized.zf.equalizer"),this.$watched.css("height",e),this.$element.trigger("postequalized.zf.equalizer")}},{key:"applyHeightByRow",value:function(e){this.$element.trigger("preequalized.zf.equalizer");for(var i=0,n=e.length;n>i;i++){var s=e[i].length,o=e[i][s-1];if(2>=s)t(e[i][0][0]).css({height:"auto"});else{this.$element.trigger("preequalizedrow.zf.equalizer");for(var a=0,r=s-1;r>a;a++)t(e[i][a][0]).css({height:o});this.$element.trigger("postequalizedrow.zf.equalizer")}}this.$element.trigger("postequalized.zf.equalizer")}},{key:"destroy",value:function(){this._pauseEvents(),this.$watched.css("height","auto"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={equalizeOnStack:!0,equalizeByRow:!1,equalizeOn:""},Foundation.plugin(e,"Equalizer")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,n),this.rules=[],this.currentPath="",this._init(),this._events(),Foundation.registerPlugin(this,"Interchange")}return _createClass(e,[{key:"_init",value:function(){this._addBreakpoints(),this._generateRules(),this._reflow()}},{key:"_events",value:function(){t(window).on("resize.zf.interchange",Foundation.util.throttle(this._reflow.bind(this),50))}},{key:"_reflow",value:function(){var t;for(var e in this.rules)if(this.rules.hasOwnProperty(e)){var i=this.rules[e];window.matchMedia(i.query).matches&&(t=i)}t&&this.replace(t.path)}},{key:"_addBreakpoints",value:function(){for(var t in Foundation.MediaQuery.queries)if(Foundation.MediaQuery.queries.hasOwnProperty(t)){var i=Foundation.MediaQuery.queries[t];e.SPECIAL_QUERIES[i.name]=i.value}}},{key:"_generateRules",value:function(t){var i,n=[];i=this.options.rules?this.options.rules:this.$element.data("interchange").match(/\[.*?\]/g);for(var s in i)if(i.hasOwnProperty(s)){var o=i[s].slice(1,-1).split(", "),a=o.slice(0,-1).join(""),r=o[o.length-1];e.SPECIAL_QUERIES[r]&&(r=e.SPECIAL_QUERIES[r]),n.push({path:a,query:r})}this.rules=n}},{key:"replace",value:function(e){if(this.currentPath!==e){var i=this,n="replaced.zf.interchange";"IMG"===this.$element[0].nodeName?this.$element.attr("src",e).load(function(){i.currentPath=e}).trigger(n):e.match(/\.(gif|jpg|jpeg|png|svg|tiff)([?#].*)?/i)?this.$element.css({"background-image":"url("+e+")"}).trigger(n):t.get(e,function(s){i.$element.html(s).trigger(n),t(s).foundation(),i.currentPath=e})}}},{key:"destroy",value:function(){}}]),e}();e.defaults={rules:null},e.SPECIAL_QUERIES={landscape:"screen and (orientation: landscape)",portrait:"screen and (orientation: portrait)",retina:"only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)"},Foundation.plugin(e,"Interchange")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Magellan")}return _createClass(e,[{key:"_init",value:function(){var e=this.$element[0].id||Foundation.GetYoDigits(6,"magellan");this.$targets=t("[data-magellan-target]"),this.$links=this.$element.find("a"),this.$element.attr({"data-resize":e,"data-scroll":e,id:e}),this.$active=t(),this.scrollPos=parseInt(window.pageYOffset,10),this._events()}},{key:"calcPoints",value:function(){var e=this,i=document.body,n=document.documentElement;this.points=[],this.winHeight=Math.round(Math.max(window.innerHeight,n.clientHeight)),this.docHeight=Math.round(Math.max(i.scrollHeight,i.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight)),this.$targets.each(function(){var i=t(this),n=Math.round(i.offset().top-e.options.threshold);i.targetPoint=n,e.points.push(n)})}},{key:"_events",value:function(){var e=this;t("html, body"),{duration:e.options.animationDuration,easing:e.options.animationEasing};t(window).one("load",function(){e.options.deepLinking&&location.hash&&e.scrollToLoc(location.hash),e.calcPoints(),e._updateActive()}),this.$element.on({"resizeme.zf.trigger":this.reflow.bind(this),"scrollme.zf.trigger":this._updateActive.bind(this)}).on("click.zf.magellan",'a[href^="#"]',function(t){t.preventDefault();var i=this.getAttribute("href");e.scrollToLoc(i)})}},{key:"scrollToLoc",value:function(e){var i=Math.round(t(e).offset().top-this.options.threshold/2-this.options.barOffset);t("html, body").stop(!0).animate({scrollTop:i},this.options.animationDuration,this.options.animationEasing)}},{key:"reflow",value:function(){this.calcPoints(),this._updateActive()}},{key:"_updateActive",value:function(){var t,e=parseInt(window.pageYOffset,10);if(e+this.winHeight===this.docHeight)t=this.points.length-1;else if(e<this.points[0])t=0;else{var i=this.scrollPos<e,n=this,s=this.points.filter(function(t,s){return i?t-n.options.barOffset<=e:t-n.options.barOffset-n.options.threshold<=e});t=s.length?s.length-1:0}if(this.$active.removeClass(this.options.activeClass),this.$active=this.$links.eq(t).addClass(this.options.activeClass),this.options.deepLinking){var o=this.$active[0].getAttribute("href");window.history.pushState?window.history.pushState(null,null,o):window.location.hash=o}this.scrollPos=e,this.$element.trigger("update.zf.magellan",[this.$active])}},{key:"destroy",value:function(){if(this.$element.off(".zf.trigger .zf.magellan").find("."+this.options.activeClass).removeClass(this.options.activeClass),this.options.deepLinking){var t=this.$active[0].getAttribute("href");window.location.hash.replace(t,"")}Foundation.unregisterPlugin(this)}}]),e}();e.defaults={animationDuration:500,animationEasing:"linear",threshold:50,activeClass:"active",deepLinking:!1,barOffset:0},Foundation.plugin(e,"Magellan")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this.$lastTrigger=t(),this.$triggers=t(),this._init(),this._events(),Foundation.registerPlugin(this,"OffCanvas")}return _createClass(e,[{key:"_init",value:function(){var e=this.$element.attr("id");if(this.$element.attr("aria-hidden","true"),this.$triggers=t(document).find('[data-open="'+e+'"], [data-close="'+e+'"], [data-toggle="'+e+'"]').attr("aria-expanded","false").attr("aria-controls",e),this.options.closeOnClick)if(t(".js-off-canvas-exit").length)this.$exiter=t(".js-off-canvas-exit");else{var i=document.createElement("div");i.setAttribute("class","js-off-canvas-exit"),t("[data-off-canvas-content]").append(i),this.$exiter=t(i)}this.options.isRevealed=this.options.isRevealed||new RegExp(this.options.revealClass,"g").test(this.$element[0].className),this.options.isRevealed&&(this.options.revealOn=this.options.revealOn||this.$element[0].className.match(/(reveal-for-medium|reveal-for-large)/g)[0].split("-")[2],this._setMQChecker()),this.options.transitionTime||(this.options.transitionTime=1e3*parseFloat(window.getComputedStyle(t("[data-off-canvas-wrapper]")[0]).transitionDuration))}},{key:"_events",value:function(){this.$element.off(".zf.trigger .zf.offcanvas").on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"keydown.zf.offcanvas":this._handleKeyboard.bind(this)}),this.options.closeOnClick&&this.$exiter.length&&this.$exiter.on({ "click.zf.offcanvas":this.close.bind(this)})}},{key:"_setMQChecker",value:function(){var e=this;t(window).on("changed.zf.mediaquery",function(){Foundation.MediaQuery.atLeast(e.options.revealOn)?e.reveal(!0):e.reveal(!1)}).one("load.zf.offcanvas",function(){Foundation.MediaQuery.atLeast(e.options.revealOn)&&e.reveal(!0)})}},{key:"reveal",value:function(t){var e=this.$element.find("[data-close]");t?(this.close(),this.isRevealed=!0,this.$element.off("open.zf.trigger toggle.zf.trigger"),e.length&&e.hide()):(this.isRevealed=!1,this.$element.on({"open.zf.trigger":this.open.bind(this),"toggle.zf.trigger":this.toggle.bind(this)}),e.length&&e.show())}},{key:"open",value:function(e,i){if(!this.$element.hasClass("is-open")&&!this.isRevealed){var n=this;t(document.body);this.options.forceTop&&t("body").scrollTop(0),Foundation.Move(this.options.transitionTime,this.$element,function(){t("[data-off-canvas-wrapper]").addClass("is-off-canvas-open is-open-"+n.options.position),n.$element.addClass("is-open")}),this.$triggers.attr("aria-expanded","true"),this.$element.attr("aria-hidden","false").trigger("opened.zf.offcanvas"),this.options.closeOnClick&&this.$exiter.addClass("is-visible"),i&&(this.$lastTrigger=i),this.options.autoFocus&&this.$element.one(Foundation.transitionend(this.$element),function(){n.$element.find("a, button").eq(0).focus()}),this.options.trapFocus&&(t("[data-off-canvas-content]").attr("tabindex","-1"),this._trapFocus())}}},{key:"_trapFocus",value:function(){var t=Foundation.Keyboard.findFocusable(this.$element),e=t.eq(0),i=t.eq(-1);t.off(".zf.offcanvas").on("keydown.zf.offcanvas",function(t){9!==t.which&&9!==t.keycode||(t.target!==i[0]||t.shiftKey||(t.preventDefault(),e.focus()),t.target===e[0]&&t.shiftKey&&(t.preventDefault(),i.focus()))})}},{key:"close",value:function(e){if(this.$element.hasClass("is-open")&&!this.isRevealed){var i=this;t("[data-off-canvas-wrapper]").removeClass("is-off-canvas-open is-open-"+i.options.position),i.$element.removeClass("is-open"),this.$element.attr("aria-hidden","true").trigger("closed.zf.offcanvas"),this.options.closeOnClick&&this.$exiter.removeClass("is-visible"),this.$triggers.attr("aria-expanded","false"),this.options.trapFocus&&t("[data-off-canvas-content]").removeAttr("tabindex")}}},{key:"toggle",value:function(t,e){this.$element.hasClass("is-open")?this.close(t,e):this.open(t,e)}},{key:"_handleKeyboard",value:function(t){27===t.which&&(t.stopPropagation(),t.preventDefault(),this.close(),this.$lastTrigger.focus())}},{key:"destroy",value:function(){this.close(),this.$element.off(".zf.trigger .zf.offcanvas"),this.$exiter.off(".zf.offcanvas"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={closeOnClick:!0,transitionTime:0,position:"left",forceTop:!0,isRevealed:!1,revealOn:null,autoFocus:!0,revealClass:"reveal-for-",trapFocus:!1},Foundation.plugin(e,"OffCanvas")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Orbit"),Foundation.Keyboard.register("Orbit",{ltr:{ARROW_RIGHT:"next",ARROW_LEFT:"previous"},rtl:{ARROW_LEFT:"next",ARROW_RIGHT:"previous"}})}return _createClass(e,[{key:"_init",value:function(){this.$wrapper=this.$element.find("."+this.options.containerClass),this.$slides=this.$element.find("."+this.options.slideClass);var t=this.$element.find("img"),e=this.$slides.filter(".is-active");e.length||this.$slides.eq(0).addClass("is-active"),this.options.useMUI||this.$slides.addClass("no-motionui"),t.length?Foundation.onImagesLoaded(t,this._prepareForOrbit.bind(this)):this._prepareForOrbit(),this.options.bullets&&this._loadBullets(),this._events(),this.options.autoPlay&&this.$slides.length>1&&this.geoSync(),this.options.accessible&&this.$wrapper.attr("tabindex",0)}},{key:"_loadBullets",value:function(){this.$bullets=this.$element.find("."+this.options.boxOfBullets).find("button")}},{key:"geoSync",value:function(){var t=this;this.timer=new Foundation.Timer(this.$element,{duration:this.options.timerDelay,infinite:!1},function(){t.changeSlide(!0)}),this.timer.start()}},{key:"_prepareForOrbit",value:function(){var t=this;this._setWrapperHeight(function(e){t._setSlideHeight(e)})}},{key:"_setWrapperHeight",value:function(e){var i,n=0,s=0;this.$slides.each(function(){i=this.getBoundingClientRect().height,t(this).attr("data-slide",s),s&&t(this).css({position:"relative",display:"none"}),n=i>n?i:n,s++}),s===this.$slides.length&&(this.$wrapper.css({height:n}),e(n))}},{key:"_setSlideHeight",value:function(e){this.$slides.each(function(){t(this).css("max-height",e)})}},{key:"_events",value:function(){var e=this;if(this.$slides.length>1){if(this.options.swipe&&this.$slides.off("swipeleft.zf.orbit swiperight.zf.orbit").on("swipeleft.zf.orbit",function(t){t.preventDefault(),e.changeSlide(!0)}).on("swiperight.zf.orbit",function(t){t.preventDefault(),e.changeSlide(!1)}),this.options.autoPlay&&(this.$slides.on("click.zf.orbit",function(){e.$element.data("clickedOn",!e.$element.data("clickedOn")),e.timer[e.$element.data("clickedOn")?"pause":"start"]()}),this.options.pauseOnHover&&this.$element.on("mouseenter.zf.orbit",function(){e.timer.pause()}).on("mouseleave.zf.orbit",function(){e.$element.data("clickedOn")||e.timer.start()})),this.options.navButtons){var i=this.$element.find("."+this.options.nextClass+", ."+this.options.prevClass);i.attr("tabindex",0).on("click.zf.orbit touchend.zf.orbit",function(i){i.preventDefault(),e.changeSlide(t(this).hasClass(e.options.nextClass))})}this.options.bullets&&this.$bullets.on("click.zf.orbit touchend.zf.orbit",function(){if(/is-active/g.test(this.className))return!1;var i=t(this).data("slide"),n=i>e.$slides.filter(".is-active").data("slide"),s=e.$slides.eq(i);e.changeSlide(n,s,i)}),this.$wrapper.add(this.$bullets).on("keydown.zf.orbit",function(i){Foundation.Keyboard.handleKey(i,"Orbit",{next:function(){e.changeSlide(!0)},previous:function(){e.changeSlide(!1)},handled:function(){t(i.target).is(e.$bullets)&&e.$bullets.filter(".is-active").focus()}})})}}},{key:"changeSlide",value:function(t,e,i){var n=this.$slides.filter(".is-active").eq(0);if(/mui/g.test(n[0].className))return!1;var s,o=this.$slides.first(),a=this.$slides.last(),r=t?"Right":"Left",l=t?"Left":"Right",u=this;s=e?e:t?this.options.infiniteWrap?n.next("."+this.options.slideClass).length?n.next("."+this.options.slideClass):o:n.next("."+this.options.slideClass):this.options.infiniteWrap?n.prev("."+this.options.slideClass).length?n.prev("."+this.options.slideClass):a:n.prev("."+this.options.slideClass),s.length&&(this.options.bullets&&(i=i||this.$slides.index(s),this._updateBullets(i)),this.options.useMUI?(Foundation.Motion.animateIn(s.addClass("is-active").css({position:"absolute",top:0}),this.options["animInFrom"+r],function(){s.css({position:"relative",display:"block"}).attr("aria-live","polite")}),Foundation.Motion.animateOut(n.removeClass("is-active"),this.options["animOutTo"+l],function(){n.removeAttr("aria-live"),u.options.autoPlay&&!u.timer.isPaused&&u.timer.restart()})):(n.removeClass("is-active is-in").removeAttr("aria-live").hide(),s.addClass("is-active is-in").attr("aria-live","polite").show(),this.options.autoPlay&&!this.timer.isPaused&&this.timer.restart()),this.$element.trigger("slidechange.zf.orbit",[s]))}},{key:"_updateBullets",value:function(t){var e=this.$element.find("."+this.options.boxOfBullets).find(".is-active").removeClass("is-active").blur(),i=e.find("span:last").detach();this.$bullets.eq(t).addClass("is-active").append(i)}},{key:"destroy",value:function(){this.$element.off(".zf.orbit").find("*").off(".zf.orbit").end().hide(),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={bullets:!0,navButtons:!0,animInFromRight:"slide-in-right",animOutToRight:"slide-out-right",animInFromLeft:"slide-in-left",animOutToLeft:"slide-out-left",autoPlay:!0,timerDelay:5e3,infiniteWrap:!0,swipe:!0,pauseOnHover:!0,accessible:!0,containerClass:"orbit-container",slideClass:"orbit-slide",boxOfBullets:"orbit-bullets",nextClass:"orbit-next",prevClass:"orbit-previous",useMUI:!0},Foundation.plugin(e,"Orbit")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=t(i),this.rules=this.$element.data("responsive-menu"),this.currentMq=null,this.currentPlugin=null,this._init(),this._events(),Foundation.registerPlugin(this,"ResponsiveMenu")}return _createClass(e,[{key:"_init",value:function(){if("string"==typeof this.rules){for(var e={},n=this.rules.split(" "),s=0;s<n.length;s++){var o=n[s].split("-"),a=o.length>1?o[0]:"small",r=o.length>1?o[1]:o[0];null!==i[r]&&(e[a]=i[r])}this.rules=e}t.isEmptyObject(this.rules)||this._checkMediaQueries()}},{key:"_events",value:function(){var e=this;t(window).on("changed.zf.mediaquery",function(){e._checkMediaQueries()})}},{key:"_checkMediaQueries",value:function(){var e,n=this;t.each(this.rules,function(t){Foundation.MediaQuery.atLeast(t)&&(e=t)}),e&&(this.currentPlugin instanceof this.rules[e].plugin||(t.each(i,function(t,e){n.$element.removeClass(e.cssClass)}),this.$element.addClass(this.rules[e].cssClass),this.currentPlugin&&this.currentPlugin.destroy(),this.currentPlugin=new this.rules[e].plugin(this.$element,{})))}},{key:"destroy",value:function(){this.currentPlugin.destroy(),t(window).off(".zf.ResponsiveMenu"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={};var i={dropdown:{cssClass:"dropdown",plugin:Foundation._plugins["dropdown-menu"]||null},drilldown:{cssClass:"drilldown",plugin:Foundation._plugins.drilldown||null},accordion:{cssClass:"accordion-menu",plugin:Foundation._plugins["accordion-menu"]||null}};Foundation.plugin(e,"ResponsiveMenu")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=t(i),this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),this._events(),Foundation.registerPlugin(this,"ResponsiveToggle")}return _createClass(e,[{key:"_init",value:function(){var e=this.$element.data("responsive-toggle");e||console.error("Your tab bar needs an ID of a Menu as the value of data-tab-bar."),this.$targetMenu=t("#"+e),this.$toggler=this.$element.find("[data-toggle]"),this._update()}},{key:"_events",value:function(){this._updateMqHandler=this._update.bind(this),t(window).on("changed.zf.mediaquery",this._updateMqHandler),this.$toggler.on("click.zf.responsiveToggle",this.toggleMenu.bind(this))}},{key:"_update",value:function(){Foundation.MediaQuery.atLeast(this.options.hideFor)?(this.$element.hide(),this.$targetMenu.show()):(this.$element.show(),this.$targetMenu.hide())}},{key:"toggleMenu",value:function(){Foundation.MediaQuery.atLeast(this.options.hideFor)||(this.$targetMenu.toggle(0),this.$element.trigger("toggled.zf.responsiveToggle"))}},{key:"destroy",value:function(){this.$element.off(".zf.responsiveToggle"),this.$toggler.off(".zf.responsiveToggle"),t(window).off("changed.zf.mediaquery",this._updateMqHandler),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={hideFor:"medium"},Foundation.plugin(e,"ResponsiveToggle")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){function e(){return/iP(ad|hone|od).*OS/.test(window.navigator.userAgent)}function i(){return/Android/.test(window.navigator.userAgent)}function n(){return e()||i()}var s=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Reveal"),Foundation.Keyboard.register("Reveal",{ENTER:"open",SPACE:"open",ESCAPE:"close",TAB:"tab_forward",SHIFT_TAB:"tab_backward"})}return _createClass(e,[{key:"_init",value:function(){this.id=this.$element.attr("id"),this.isActive=!1,this.cached={mq:Foundation.MediaQuery.current},this.isMobile=n(),this.$anchor=t(t('[data-open="'+this.id+'"]').length?'[data-open="'+this.id+'"]':'[data-toggle="'+this.id+'"]'),this.$anchor.attr({"aria-controls":this.id,"aria-haspopup":!0,tabindex:0}),(this.options.fullScreen||this.$element.hasClass("full"))&&(this.options.fullScreen=!0,this.options.overlay=!1),this.options.overlay&&!this.$overlay&&(this.$overlay=this._makeOverlay(this.id)),this.$element.attr({role:"dialog","aria-hidden":!0,"data-yeti-box":this.id,"data-resize":this.id}),this.$overlay?this.$element.detach().appendTo(this.$overlay):(this.$element.detach().appendTo(t("body")),this.$element.addClass("without-overlay")),this._events(),this.options.deepLink&&window.location.hash==="#"+this.id&&t(window).one("load.zf.reveal",this.open.bind(this))}},{key:"_makeOverlay",value:function(e){var i=t("<div></div>").addClass("reveal-overlay").appendTo("body");return i}},{key:"_updatePosition",value:function(){var e,i,n=this.$element.outerWidth(),s=t(window).width(),o=this.$element.outerHeight(),a=t(window).height();e="auto"===this.options.hOffset?parseInt((s-n)/2,10):parseInt(this.options.hOffset,10),i="auto"===this.options.vOffset?o>a?parseInt(Math.min(100,a/10),10):parseInt((a-o)/4,10):parseInt(this.options.vOffset,10),this.$element.css({top:i+"px"}),this.$overlay&&"auto"===this.options.hOffset||(this.$element.css({left:e+"px"}),this.$element.css({margin:"0px"}))}},{key:"_events",value:function(){var e=this,i=this;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":function(n,s){return n.target===i.$element[0]||t(n.target).parents("[data-closable]")[0]===s?e.close.apply(e):void 0},"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":function(){i._updatePosition()}}),this.$anchor.length&&this.$anchor.on("keydown.zf.reveal",function(t){13!==t.which&&32!==t.which||(t.stopPropagation(),t.preventDefault(),i.open())}),this.options.closeOnClick&&this.options.overlay&&this.$overlay.off(".zf.reveal").on("click.zf.reveal",function(e){e.target===i.$element[0]||t.contains(i.$element[0],e.target)||i.close()}),this.options.deepLink&&t(window).on("popstate.zf.reveal:"+this.id,this._handleState.bind(this))}},{key:"_handleState",value:function(t){window.location.hash!=="#"+this.id||this.isActive?this.close():this.open()}},{key:"open",value:function(){var e=this;if(this.options.deepLink){var i="#"+this.id;window.history.pushState?window.history.pushState(null,null,i):window.location.hash=i}if(this.isActive=!0,this.$element.css({visibility:"hidden"}).show().scrollTop(0),this.options.overlay&&this.$overlay.css({visibility:"hidden"}).show(),this._updatePosition(),this.$element.hide().css({visibility:""}),this.$overlay&&(this.$overlay.css({visibility:""}).hide(),this.$element.hasClass("fast")?this.$overlay.addClass("fast"):this.$element.hasClass("slow")&&this.$overlay.addClass("slow")),this.options.multipleOpened||this.$element.trigger("closeme.zf.reveal",this.id),this.options.animationIn){var n;!function(){var t=function(){n.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),console.log("focus")};n=e,e.options.overlay&&Foundation.Motion.animateIn(e.$overlay,"fade-in"),Foundation.Motion.animateIn(e.$element,e.options.animationIn,function(){e.focusableElements=Foundation.Keyboard.findFocusable(e.$element),t()})}()}else this.options.overlay&&this.$overlay.show(0),this.$element.show(this.options.showDelay);this.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),this.$element.trigger("open.zf.reveal"),this.isMobile?(this.originalScrollPos=window.pageYOffset,t("html, body").addClass("is-reveal-open")):t("body").addClass("is-reveal-open"),setTimeout(function(){e._extraHandlers()},0)}},{key:"_extraHandlers",value:function(){var e=this;this.focusableElements=Foundation.Keyboard.findFocusable(this.$element),this.options.overlay||!this.options.closeOnClick||this.options.fullScreen||t("body").on("click.zf.reveal",function(i){i.target===e.$element[0]||t.contains(e.$element[0],i.target)||e.close()}),this.options.closeOnEsc&&t(window).on("keydown.zf.reveal",function(t){Foundation.Keyboard.handleKey(t,"Reveal",{close:function(){e.options.closeOnEsc&&(e.close(),e.$anchor.focus())}})}),this.$element.on("keydown.zf.reveal",function(i){var n=t(this);Foundation.Keyboard.handleKey(i,"Reveal",{tab_forward:function(){return e.$element.find(":focus").is(e.focusableElements.eq(-1))?(e.focusableElements.eq(0).focus(),!0):0===e.focusableElements.length?!0:void 0},tab_backward:function(){return e.$element.find(":focus").is(e.focusableElements.eq(0))||e.$element.is(":focus")?(e.focusableElements.eq(-1).focus(),!0):0===e.focusableElements.length?!0:void 0},open:function(){e.$element.find(":focus").is(e.$element.find("[data-close]"))?setTimeout(function(){e.$anchor.focus()},1):n.is(e.focusableElements)&&e.open()},close:function(){e.options.closeOnEsc&&(e.close(),e.$anchor.focus())},handled:function(t){t&&i.preventDefault()}})})}},{key:"close",value:function(){function e(){i.isMobile?(t("html, body").removeClass("is-reveal-open"),i.originalScrollPos&&(t("body").scrollTop(i.originalScrollPos),i.originalScrollPos=null)):t("body").removeClass("is-reveal-open"),i.$element.attr("aria-hidden",!0),i.$element.trigger("closed.zf.reveal")}if(!this.isActive||!this.$element.is(":visible"))return!1;var i=this;this.options.animationOut?(this.options.overlay?Foundation.Motion.animateOut(this.$overlay,"fade-out",e):e(),Foundation.Motion.animateOut(this.$element,this.options.animationOut)):(this.options.overlay?this.$overlay.hide(0,e):e(),this.$element.hide(this.options.hideDelay)),this.options.closeOnEsc&&t(window).off("keydown.zf.reveal"),!this.options.overlay&&this.options.closeOnClick&&t("body").off("click.zf.reveal"),this.$element.off("keydown.zf.reveal"),this.options.resetOnClose&&this.$element.html(this.$element.html()),this.isActive=!1,i.options.deepLink&&(window.history.replaceState?window.history.replaceState("",document.title,window.location.pathname):window.location.hash="")}},{key:"toggle",value:function(){this.isActive?this.close():this.open()}},{key:"destroy",value:function(){this.options.overlay&&(this.$element.appendTo(t("body")),this.$overlay.hide().off().remove()),this.$element.hide().off(),this.$anchor.off(".zf"),t(window).off(".zf.reveal:"+this.id),Foundation.unregisterPlugin(this)}}]),e}();s.defaults={animationIn:"",animationOut:"",showDelay:0,hideDelay:0,closeOnClick:!0,closeOnEsc:!0,multipleOpened:!1,vOffset:"auto",hOffset:"auto",fullScreen:!1,btmOffsetPct:10,overlay:!0,resetOnClose:!1,deepLink:!1},Foundation.plugin(s,"Reveal")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){function e(t,e){return t/e}function i(t,e,i,n){return Math.abs(t.position()[e]+t[n]()/2-i)}var n=function(){function n(e,i){_classCallCheck(this,n),this.$element=e,this.options=t.extend({},n.defaults,this.$element.data(),i),this._init(),Foundation.registerPlugin(this,"Slider"),Foundation.Keyboard.register("Slider",{ltr:{ARROW_RIGHT:"increase",ARROW_UP:"increase",ARROW_DOWN:"decrease",ARROW_LEFT:"decrease",SHIFT_ARROW_RIGHT:"increase_fast",SHIFT_ARROW_UP:"increase_fast",SHIFT_ARROW_DOWN:"decrease_fast",SHIFT_ARROW_LEFT:"decrease_fast"},rtl:{ARROW_LEFT:"increase",ARROW_RIGHT:"decrease",SHIFT_ARROW_LEFT:"increase_fast",SHIFT_ARROW_RIGHT:"decrease_fast"}})}return _createClass(n,[{key:"_init",value:function(){this.inputs=this.$element.find("input"),this.handles=this.$element.find("[data-slider-handle]"),this.$handle=this.handles.eq(0),this.$input=this.inputs.length?this.inputs.eq(0):t("#"+this.$handle.attr("aria-controls")),this.$fill=this.$element.find("[data-slider-fill]").css(this.options.vertical?"height":"width",0);var e=!1,i=this;(this.options.disabled||this.$element.hasClass(this.options.disabledClass))&&(this.options.disabled=!0,this.$element.addClass(this.options.disabledClass)),this.inputs.length||(this.inputs=t().add(this.$input),this.options.binding=!0),this._setInitAttr(0),this._events(this.$handle),this.handles[1]&&(this.options.doubleSided=!0,this.$handle2=this.handles.eq(1),this.$input2=this.inputs.length>1?this.inputs.eq(1):t("#"+this.$handle2.attr("aria-controls")),this.inputs[1]||(this.inputs=this.inputs.add(this.$input2)),e=!0,this._setHandlePos(this.$handle,this.options.initialStart,!0,function(){i._setHandlePos(i.$handle2,i.options.initialEnd,!0)}),this._setInitAttr(1),this._events(this.$handle2)),e||this._setHandlePos(this.$handle,this.options.initialStart,!0)}},{key:"_setHandlePos",value:function(t,i,n,s){if(!this.$element.hasClass(this.options.disabledClass)){i=parseFloat(i),i<this.options.start?i=this.options.start:i>this.options.end&&(i=this.options.end);var o=this.options.doubleSided;if(o)if(0===this.handles.index(t)){var a=parseFloat(this.$handle2.attr("aria-valuenow"));i=i>=a?a-this.options.step:i}else{var r=parseFloat(this.$handle.attr("aria-valuenow"));i=r>=i?r+this.options.step:i}this.options.vertical&&!n&&(i=this.options.end-i);var l=this,u=this.options.vertical,d=u?"height":"width",h=u?"top":"left",c=t[0].getBoundingClientRect()[d],f=this.$element[0].getBoundingClientRect()[d],p=e(i-this.options.start,this.options.end-this.options.start).toFixed(2),m=(f-c)*p,v=(100*e(m,f)).toFixed(this.options.decimal);i=parseFloat(i.toFixed(this.options.decimal));var g={};if(this._setValues(t,i),o){var w,y=0===this.handles.index(t),b=~~(100*e(c,f));if(y)g[h]=v+"%",w=parseFloat(this.$handle2[0].style[h])-v+b,s&&"function"==typeof s&&s();else{var $=parseFloat(this.$handle[0].style[h]);w=v-(isNaN($)?this.options.initialStart/((this.options.end-this.options.start)/100):$)+b}g["min-"+d]=w+"%"}this.$element.one("finished.zf.animate",function(){l.$element.trigger("moved.zf.slider",[t])});var C=this.$element.data("dragging")?1e3/60:this.options.moveTime;Foundation.Move(C,t,function(){t.css(h,v+"%"),l.options.doubleSided?l.$fill.css(g):l.$fill.css(d,100*p+"%")}),clearTimeout(l.timeout),l.timeout=setTimeout(function(){l.$element.trigger("changed.zf.slider",[t])},l.options.changedDelay)}}},{key:"_setInitAttr",value:function(t){var e=this.inputs.eq(t).attr("id")||Foundation.GetYoDigits(6,"slider");this.inputs.eq(t).attr({id:e,max:this.options.end,min:this.options.start,step:this.options.step}),this.handles.eq(t).attr({role:"slider","aria-controls":e,"aria-valuemax":this.options.end,"aria-valuemin":this.options.start,"aria-valuenow":0===t?this.options.initialStart:this.options.initialEnd,"aria-orientation":this.options.vertical?"vertical":"horizontal",tabindex:0})}},{key:"_setValues",value:function(t,e){var i=this.options.doubleSided?this.handles.index(t):0;this.inputs.eq(i).val(e),t.attr("aria-valuenow",e)}},{key:"_handleEvent",value:function(n,s,o){var a,r;if(o)a=this._adjustValue(null,o),r=!0;else{n.preventDefault();var l=this,u=this.options.vertical,d=u?"height":"width",h=u?"top":"left",c=u?n.pageY:n.pageX,f=(this.$handle[0].getBoundingClientRect()[d]/2,this.$element[0].getBoundingClientRect()[d]),p=u?t(window).scrollTop():t(window).scrollLeft(),m=this.$element.offset()[h];n.clientY===n.pageY&&(c+=p);var v,g=c-m;if(v=0>g?0:g>f?f:g,offsetPct=e(v,f),a=(this.options.end-this.options.start)*offsetPct+this.options.start,Foundation.rtl()&&!this.options.vertical&&(a=this.options.end-a),a=l._adjustValue(null,a),r=!1,!s){var w=i(this.$handle,h,v,d),y=i(this.$handle2,h,v,d);s=y>=w?this.$handle:this.$handle2}}this._setHandlePos(s,a,r)}},{key:"_adjustValue",value:function(t,e){var i,n,s,o,a=this.options.step,r=parseFloat(a/2);return i=t?parseFloat(t.attr("aria-valuenow")):e,n=i%a,s=i-n,o=s+a,0===n?i:i=i>=s+r?o:s}},{key:"_events",value:function(e){var i,n=this;if(this.inputs.off("change.zf.slider").on("change.zf.slider",function(e){var i=n.inputs.index(t(this));n._handleEvent(e,n.handles.eq(i),t(this).val())}),this.options.clickSelect&&this.$element.off("click.zf.slider").on("click.zf.slider",function(e){return n.$element.data("dragging")?!1:void(t(e.target).is("[data-slider-handle]")||(n.options.doubleSided?n._handleEvent(e):n._handleEvent(e,n.$handle)))}),this.options.draggable){this.handles.addTouch();var s=t("body");e.off("mousedown.zf.slider").on("mousedown.zf.slider",function(o){e.addClass("is-dragging"),n.$fill.addClass("is-dragging"),n.$element.data("dragging",!0),i=t(o.currentTarget),s.on("mousemove.zf.slider",function(t){t.preventDefault(),n._handleEvent(t,i)}).on("mouseup.zf.slider",function(t){n._handleEvent(t,i),e.removeClass("is-dragging"),n.$fill.removeClass("is-dragging"),n.$element.data("dragging",!1),s.off("mousemove.zf.slider mouseup.zf.slider")})}).on("selectstart.zf.slider touchmove.zf.slider",function(t){t.preventDefault()})}e.off("keydown.zf.slider").on("keydown.zf.slider",function(e){var i,s=t(this),o=n.options.doubleSided?n.handles.index(s):0,a=parseFloat(n.inputs.eq(o).val());Foundation.Keyboard.handleKey(e,"Slider",{decrease:function(){i=a-n.options.step},increase:function(){i=a+n.options.step},decrease_fast:function(){i=a-10*n.options.step},increase_fast:function(){i=a+10*n.options.step},handled:function(){e.preventDefault(),n._setHandlePos(s,i,!0)}})})}},{key:"destroy",value:function(){this.handles.off(".zf.slider"),this.inputs.off(".zf.slider"),this.$element.off(".zf.slider"),Foundation.unregisterPlugin(this)}}]),n}();n.defaults={start:0,end:100,step:1,initialStart:0,initialEnd:100,binding:!1,clickSelect:!0,vertical:!1,draggable:!0,disabled:!1,doubleSided:!1,decimal:2,moveTime:200,disabledClass:"disabled",invertVertical:!1,changedDelay:500},Foundation.plugin(n,"Slider")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){function e(t){return parseInt(window.getComputedStyle(document.body,null).fontSize,10)*t}var i=function(){function i(e,n){_classCallCheck(this,i),this.$element=e,this.options=t.extend({},i.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Sticky")}return _createClass(i,[{key:"_init",value:function(){var e=this.$element.parent("[data-sticky-container]"),i=this.$element[0].id||Foundation.GetYoDigits(6,"sticky"),n=this;e.length||(this.wasWrapped=!0),this.$container=e.length?e:t(this.options.container).wrapInner(this.$element),this.$container.addClass(this.options.containerClass),this.$element.addClass(this.options.stickyClass).attr({"data-resize":i}),this.scrollCount=this.options.checkEvery,this.isStuck=!1,t(window).one("load.zf.sticky",function(){""!==n.options.anchor?n.$anchor=t("#"+n.options.anchor):n._parsePoints(),n._setSizes(function(){n._calc(!1)}),n._events(i.split("-").reverse().join("-"))})}},{key:"_parsePoints",value:function(){for(var e=""==this.options.topAnchor?1:this.options.topAnchor,i=""==this.options.btmAnchor?document.documentElement.scrollHeight:this.options.btmAnchor,n=[e,i],s={},o=0,a=n.length;a>o&&n[o];o++){var r;if("number"==typeof n[o])r=n[o];else{var l=n[o].split(":"),u=t("#"+l[0]);r=u.offset().top,l[1]&&"bottom"===l[1].toLowerCase()&&(r+=u[0].getBoundingClientRect().height)}s[o]=r}this.points=s}},{key:"_events",value:function(e){var i=this,n=this.scrollListener="scroll.zf."+e;this.isOn||(this.canStick&&(this.isOn=!0,t(window).off(n).on(n,function(t){0===i.scrollCount?(i.scrollCount=i.options.checkEvery,i._setSizes(function(){i._calc(!1,window.pageYOffset)})):(i.scrollCount--,i._calc(!1,window.pageYOffset))})),this.$element.off("resizeme.zf.trigger").on("resizeme.zf.trigger",function(t,s){i._setSizes(function(){i._calc(!1),i.canStick?i.isOn||i._events(e):i.isOn&&i._pauseListeners(n)})}))}},{key:"_pauseListeners",value:function(e){this.isOn=!1,t(window).off(e),this.$element.trigger("pause.zf.sticky")}},{key:"_calc",value:function(t,e){return t&&this._setSizes(),this.canStick?(e||(e=window.pageYOffset),void(e>=this.topPoint?e<=this.bottomPoint?this.isStuck||this._setSticky():this.isStuck&&this._removeSticky(!1):this.isStuck&&this._removeSticky(!0))):(this.isStuck&&this._removeSticky(!0),!1)}},{key:"_setSticky",value:function(){var t=this,e=this.options.stickTo,i="top"===e?"marginTop":"marginBottom",n="top"===e?"bottom":"top",s={};s[i]=this.options[i]+"em",s[e]=0,s[n]="auto",s.left=this.$container.offset().left+parseInt(window.getComputedStyle(this.$container[0])["padding-left"],10),this.isStuck=!0,this.$element.removeClass("is-anchored is-at-"+n).addClass("is-stuck is-at-"+e).css(s).trigger("sticky.zf.stuckto:"+e),this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",function(){t._setSizes()})}},{key:"_removeSticky",value:function(t){var e=this.options.stickTo,i="top"===e,n={},s=(this.points?this.points[1]-this.points[0]:this.anchorHeight)-this.elemHeight,o=i?"marginTop":"marginBottom",a=t?"top":"bottom";n[o]=0,n.bottom="auto",t?n.top=0:n.top=s,n.left="",this.isStuck=!1,this.$element.removeClass("is-stuck is-at-"+e).addClass("is-anchored is-at-"+a).css(n).trigger("sticky.zf.unstuckfrom:"+a)}},{key:"_setSizes",value:function(t){this.canStick=Foundation.MediaQuery.atLeast(this.options.stickyOn),this.canStick||t();var e=this.$container[0].getBoundingClientRect().width,i=window.getComputedStyle(this.$container[0]),n=parseInt(i["padding-right"],10);this.$anchor&&this.$anchor.length?this.anchorHeight=this.$anchor[0].getBoundingClientRect().height:this._parsePoints(),this.$element.css({"max-width":e-n+"px"});var s=this.$element[0].getBoundingClientRect().height||this.containerHeight;"none"==this.$element.css("display")&&(s=0),this.containerHeight=s,this.$container.css({height:s}),this.elemHeight=s,this.isStuck&&this.$element.css({left:this.$container.offset().left+parseInt(i["padding-left"],10)}),this._setBreakPoints(s,function(){t&&t()})}},{key:"_setBreakPoints",value:function(t,i){if(!this.canStick){if(!i)return!1;i()}var n=e(this.options.marginTop),s=e(this.options.marginBottom),o=this.points?this.points[0]:this.$anchor.offset().top,a=this.points?this.points[1]:o+this.anchorHeight,r=window.innerHeight;"top"===this.options.stickTo?(o-=n,a-=t+n):"bottom"===this.options.stickTo&&(o-=r-(t+s),a-=r-s),this.topPoint=o,this.bottomPoint=a,i&&i()}},{key:"destroy",value:function(){this._removeSticky(!0),this.$element.removeClass(this.options.stickyClass+" is-anchored is-at-top").css({height:"",top:"",bottom:"","max-width":""}).off("resizeme.zf.trigger"),this.$anchor&&this.$anchor.length&&this.$anchor.off("change.zf.sticky"),t(window).off(this.scrollListener),this.wasWrapped?this.$element.unwrap():this.$container.removeClass(this.options.containerClass).css({height:""}),Foundation.unregisterPlugin(this)}}]),i}();i.defaults={container:"<div data-sticky-container></div>",stickTo:"top",anchor:"",topAnchor:"",btmAnchor:"",marginTop:1,marginBottom:1,stickyOn:"medium",stickyClass:"sticky",containerClass:"sticky-container",checkEvery:-1},Foundation.plugin(i,"Sticky")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n); -}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Tabs"),Foundation.Keyboard.register("Tabs",{ENTER:"open",SPACE:"open",ARROW_RIGHT:"next",ARROW_UP:"previous",ARROW_DOWN:"next",ARROW_LEFT:"previous"})}return _createClass(e,[{key:"_init",value:function(){var e=this;if(this.$tabTitles=this.$element.find("."+this.options.linkClass),this.$tabContent=t('[data-tabs-content="'+this.$element[0].id+'"]'),this.$tabTitles.each(function(){var i=t(this),n=i.find("a"),s=i.hasClass("is-active"),o=n[0].hash.slice(1),a=n[0].id?n[0].id:o+"-label",r=t("#"+o);i.attr({role:"presentation"}),n.attr({role:"tab","aria-controls":o,"aria-selected":s,id:a}),r.attr({role:"tabpanel","aria-hidden":!s,"aria-labelledby":a}),s&&e.options.autoFocus&&n.focus()}),this.options.matchHeight){var i=this.$tabContent.find("img");i.length?Foundation.onImagesLoaded(i,this._setHeight.bind(this)):this._setHeight()}this._events()}},{key:"_events",value:function(){this._addKeyHandler(),this._addClickHandler(),this._setHeightMqHandler=null,this.options.matchHeight&&(this._setHeightMqHandler=this._setHeight.bind(this),t(window).on("changed.zf.mediaquery",this._setHeightMqHandler))}},{key:"_addClickHandler",value:function(){var e=this;this.$element.off("click.zf.tabs").on("click.zf.tabs","."+this.options.linkClass,function(i){i.preventDefault(),i.stopPropagation(),t(this).hasClass("is-active")||e._handleTabChange(t(this))})}},{key:"_addKeyHandler",value:function(){var e=this;e.$element.find("li:first-of-type"),e.$element.find("li:last-of-type");this.$tabTitles.off("keydown.zf.tabs").on("keydown.zf.tabs",function(i){if(9!==i.which){var n,s,o=t(this),a=o.parent("ul").children("li");a.each(function(i){return t(this).is(o)?void(e.options.wrapOnKeys?(n=0===i?a.last():a.eq(i-1),s=i===a.length-1?a.first():a.eq(i+1)):(n=a.eq(Math.max(0,i-1)),s=a.eq(Math.min(i+1,a.length-1)))):void 0}),Foundation.Keyboard.handleKey(i,"Tabs",{open:function(){o.find('[role="tab"]').focus(),e._handleTabChange(o)},previous:function(){n.find('[role="tab"]').focus(),e._handleTabChange(n)},next:function(){s.find('[role="tab"]').focus(),e._handleTabChange(s)},handled:function(){i.stopPropagation(),i.preventDefault()}})}})}},{key:"_handleTabChange",value:function(e){var i=e.find('[role="tab"]'),n=i[0].hash,s=this.$tabContent.find(n),o=this.$element.find("."+this.options.linkClass+".is-active").removeClass("is-active").find('[role="tab"]').attr({"aria-selected":"false"});t("#"+o.attr("aria-controls")).removeClass("is-active").attr({"aria-hidden":"true"}),e.addClass("is-active"),i.attr({"aria-selected":"true"}),s.addClass("is-active").attr({"aria-hidden":"false"}),this.$element.trigger("change.zf.tabs",[e])}},{key:"selectTab",value:function(t){var e;e="object"==typeof t?t[0].id:t,e.indexOf("#")<0&&(e="#"+e);var i=this.$tabTitles.find('[href="'+e+'"]').parent("."+this.options.linkClass);this._handleTabChange(i)}},{key:"_setHeight",value:function(){var e=0;this.$tabContent.find("."+this.options.panelClass).css("height","").each(function(){var i=t(this),n=i.hasClass("is-active");n||i.css({visibility:"hidden",display:"block"});var s=this.getBoundingClientRect().height;n||i.css({visibility:"",display:""}),e=s>e?s:e}).css("height",e+"px")}},{key:"destroy",value:function(){this.$element.find("."+this.options.linkClass).off(".zf.tabs").hide().end().find("."+this.options.panelClass).hide(),this.options.matchHeight&&null!=this._setHeightMqHandler&&t(window).off("changed.zf.mediaquery",this._setHeightMqHandler),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={autoFocus:!1,wrapOnKeys:!0,matchHeight:!1,linkClass:"tabs-title",panelClass:"tabs-panel"},Foundation.plugin(e,"Tabs")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,i.data(),n),this.className="",this._init(),this._events(),Foundation.registerPlugin(this,"Toggler")}return _createClass(e,[{key:"_init",value:function(){var e;this.options.animate?(e=this.options.animate.split(" "),this.animationIn=e[0],this.animationOut=e[1]||null):(e=this.$element.data("toggler"),this.className="."===e[0]?e.slice(1):e);var i=this.$element[0].id;t('[data-open="'+i+'"], [data-close="'+i+'"], [data-toggle="'+i+'"]').attr("aria-controls",i),this.$element.attr("aria-expanded",!this.$element.is(":hidden"))}},{key:"_events",value:function(){this.$element.off("toggle.zf.trigger").on("toggle.zf.trigger",this.toggle.bind(this))}},{key:"toggle",value:function(){this[this.options.animate?"_toggleAnimate":"_toggleClass"]()}},{key:"_toggleClass",value:function(){this.$element.toggleClass(this.className);var t=this.$element.hasClass(this.className);t?this.$element.trigger("on.zf.toggler"):this.$element.trigger("off.zf.toggler"),this._updateARIA(t)}},{key:"_toggleAnimate",value:function(){var t=this;this.$element.is(":hidden")?Foundation.Motion.animateIn(this.$element,this.animationIn,function(){t._updateARIA(!0),this.trigger("on.zf.toggler")}):Foundation.Motion.animateOut(this.$element,this.animationOut,function(){t._updateARIA(!1),this.trigger("off.zf.toggler")})}},{key:"_updateARIA",value:function(t){this.$element.attr("aria-expanded",!!t)}},{key:"destroy",value:function(){this.$element.off(".zf.toggler"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={animate:!1},Foundation.plugin(e,"Toggler")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this.isActive=!1,this.isClick=!1,this._init(),Foundation.registerPlugin(this,"Tooltip")}return _createClass(e,[{key:"_init",value:function(){var e=this.$element.attr("aria-describedby")||Foundation.GetYoDigits(6,"tooltip");this.options.positionClass=this.options.positionClass||this._getPositionClass(this.$element),this.options.tipText=this.options.tipText||this.$element.attr("title"),this.template=this.options.template?t(this.options.template):this._buildTemplate(e),this.template.appendTo(document.body).text(this.options.tipText).hide(),this.$element.attr({title:"","aria-describedby":e,"data-yeti-box":e,"data-toggle":e,"data-resize":e}).addClass(this.triggerClass),this.usedPositions=[],this.counter=4,this.classChanged=!1,this._events()}},{key:"_getPositionClass",value:function(t){if(!t)return"";var e=t[0].className.match(/\b(top|left|right)\b/g);return e=e?e[0]:""}},{key:"_buildTemplate",value:function(e){var i=(this.options.tooltipClass+" "+this.options.positionClass+" "+this.options.templateClasses).trim(),n=t("<div></div>").addClass(i).attr({role:"tooltip","aria-hidden":!0,"data-is-active":!1,"data-is-focus":!1,id:e});return n}},{key:"_reposition",value:function(t){this.usedPositions.push(t?t:"bottom"),!t&&this.usedPositions.indexOf("top")<0?this.template.addClass("top"):"top"===t&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):"left"===t&&this.usedPositions.indexOf("right")<0?this.template.removeClass(t).addClass("right"):"right"===t&&this.usedPositions.indexOf("left")<0?this.template.removeClass(t).addClass("left"):!t&&this.usedPositions.indexOf("top")>-1&&this.usedPositions.indexOf("left")<0?this.template.addClass("left"):"top"===t&&this.usedPositions.indexOf("bottom")>-1&&this.usedPositions.indexOf("left")<0?this.template.removeClass(t).addClass("left"):"left"===t&&this.usedPositions.indexOf("right")>-1&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):"right"===t&&this.usedPositions.indexOf("left")>-1&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):this.template.removeClass(t),this.classChanged=!0,this.counter--}},{key:"_setPosition",value:function(){var t=this._getPositionClass(this.template),e=Foundation.Box.GetDimensions(this.template),i=Foundation.Box.GetDimensions(this.$element),n="left"===t?"left":"right"===t?"left":"top",s="top"===n?"height":"width";"height"===s?this.options.vOffset:this.options.hOffset;if(e.width>=e.windowDims.width||!this.counter&&!Foundation.Box.ImNotTouchingYou(this.template))return this.template.offset(Foundation.Box.GetOffsets(this.template,this.$element,"center bottom",this.options.vOffset,this.options.hOffset,!0)).css({width:i.windowDims.width-2*this.options.hOffset,height:"auto"}),!1;for(this.template.offset(Foundation.Box.GetOffsets(this.template,this.$element,"center "+(t||"bottom"),this.options.vOffset,this.options.hOffset));!Foundation.Box.ImNotTouchingYou(this.template)&&this.counter;)this._reposition(t),this._setPosition()}},{key:"show",value:function(){if("all"!==this.options.showOn&&!Foundation.MediaQuery.atLeast(this.options.showOn))return!1;var t=this;this.template.css("visibility","hidden").show(),this._setPosition(),this.$element.trigger("closeme.zf.tooltip",this.template.attr("id")),this.template.attr({"data-is-active":!0,"aria-hidden":!1}),t.isActive=!0,this.template.stop().hide().css("visibility","").fadeIn(this.options.fadeInDuration,function(){}),this.$element.trigger("show.zf.tooltip")}},{key:"hide",value:function(){var t=this;this.template.stop().attr({"aria-hidden":!0,"data-is-active":!1}).fadeOut(this.options.fadeOutDuration,function(){t.isActive=!1,t.isClick=!1,t.classChanged&&(t.template.removeClass(t._getPositionClass(t.template)).addClass(t.options.positionClass),t.usedPositions=[],t.counter=4,t.classChanged=!1)}),this.$element.trigger("hide.zf.tooltip")}},{key:"_events",value:function(){var t=this,e=(this.template,!1);this.options.disableHover||this.$element.on("mouseenter.zf.tooltip",function(e){t.isActive||(t.timeout=setTimeout(function(){t.show()},t.options.hoverDelay))}).on("mouseleave.zf.tooltip",function(i){clearTimeout(t.timeout),(!e||t.isClick&&!t.options.clickOpen)&&t.hide()}),this.options.clickOpen?this.$element.on("mousedown.zf.tooltip",function(e){e.stopImmediatePropagation(),t.isClick||(t.isClick=!0,!t.options.disableHover&&t.$element.attr("tabindex")||t.isActive||t.show())}):this.$element.on("mousedown.zf.tooltip",function(e){e.stopImmediatePropagation(),t.isClick=!0}),this.options.disableForTouch||this.$element.on("tap.zf.tooltip touchend.zf.tooltip",function(e){t.isActive?t.hide():t.show()}),this.$element.on({"close.zf.trigger":this.hide.bind(this)}),this.$element.on("focus.zf.tooltip",function(i){return e=!0,t.isClick?(t.options.clickOpen||(e=!1),!1):void t.show()}).on("focusout.zf.tooltip",function(i){e=!1,t.isClick=!1,t.hide()}).on("resizeme.zf.trigger",function(){t.isActive&&t._setPosition()})}},{key:"toggle",value:function(){this.isActive?this.hide():this.show()}},{key:"destroy",value:function(){this.$element.attr("title",this.template.text()).off(".zf.trigger .zf.tootip").removeAttr("aria-describedby").removeAttr("data-yeti-box").removeAttr("data-toggle").removeAttr("data-resize"),this.template.remove(),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={disableForTouch:!1,hoverDelay:200,fadeInDuration:150,fadeOutDuration:150,disableHover:!1,templateClasses:"",tooltipClass:"tooltip",triggerClass:"has-tip",showOn:"small",template:"",tipText:"",touchCloseText:"Tap to close.",clickOpen:!0,positionClass:"",vOffset:10,hOffset:12},Foundation.plugin(e,"Tooltip")}(jQuery); \ No newline at end of file +}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Tabs"),Foundation.Keyboard.register("Tabs",{ENTER:"open",SPACE:"open",ARROW_RIGHT:"next",ARROW_UP:"previous",ARROW_DOWN:"next",ARROW_LEFT:"previous"})}return _createClass(e,[{key:"_init",value:function(){var e=this;if(this.$tabTitles=this.$element.find("."+this.options.linkClass),this.$tabContent=t('[data-tabs-content="'+this.$element[0].id+'"]'),this.$tabTitles.each(function(){var i=t(this),n=i.find("a"),s=i.hasClass("is-active"),o=n[0].hash.slice(1),a=n[0].id?n[0].id:o+"-label",r=t("#"+o);i.attr({role:"presentation"}),n.attr({role:"tab","aria-controls":o,"aria-selected":s,id:a}),r.attr({role:"tabpanel","aria-hidden":!s,"aria-labelledby":a}),s&&e.options.autoFocus&&n.focus()}),this.options.matchHeight){var i=this.$tabContent.find("img");i.length?Foundation.onImagesLoaded(i,this._setHeight.bind(this)):this._setHeight()}this._events()}},{key:"_events",value:function(){this._addKeyHandler(),this._addClickHandler(),this._setHeightMqHandler=null,this.options.matchHeight&&(this._setHeightMqHandler=this._setHeight.bind(this),t(window).on("changed.zf.mediaquery",this._setHeightMqHandler))}},{key:"_addClickHandler",value:function(){var e=this;this.$element.off("click.zf.tabs").on("click.zf.tabs","."+this.options.linkClass,function(i){i.preventDefault(),i.stopPropagation(),t(this).hasClass("is-active")||e._handleTabChange(t(this))})}},{key:"_addKeyHandler",value:function(){var e=this;e.$element.find("li:first-of-type"),e.$element.find("li:last-of-type");this.$tabTitles.off("keydown.zf.tabs").on("keydown.zf.tabs",function(i){if(9!==i.which){var n,s,o=t(this),a=o.parent("ul").children("li");a.each(function(i){return t(this).is(o)?void(e.options.wrapOnKeys?(n=0===i?a.last():a.eq(i-1),s=i===a.length-1?a.first():a.eq(i+1)):(n=a.eq(Math.max(0,i-1)),s=a.eq(Math.min(i+1,a.length-1)))):void 0}),Foundation.Keyboard.handleKey(i,"Tabs",{open:function(){o.find('[role="tab"]').focus(),e._handleTabChange(o)},previous:function(){n.find('[role="tab"]').focus(),e._handleTabChange(n)},next:function(){s.find('[role="tab"]').focus(),e._handleTabChange(s)},handled:function(){i.stopPropagation(),i.preventDefault()}})}})}},{key:"_handleTabChange",value:function(e){var i=e.find('[role="tab"]'),n=i[0].hash,s=this.$tabContent.find(n),o=this.$element.find("."+this.options.linkClass+".is-active").removeClass("is-active").find('[role="tab"]').attr({"aria-selected":"false"});t("#"+o.attr("aria-controls")).removeClass("is-active").attr({"aria-hidden":"true"}),e.addClass("is-active"),i.attr({"aria-selected":"true"}),s.addClass("is-active").attr({"aria-hidden":"false"}),this.$element.trigger("change.zf.tabs",[e])}},{key:"selectTab",value:function(t){var e;e="object"==typeof t?t[0].id:t,e.indexOf("#")<0&&(e="#"+e);var i=this.$tabTitles.find('[href="'+e+'"]').parent("."+this.options.linkClass);this._handleTabChange(i)}},{key:"_setHeight",value:function(){var e=0;this.$tabContent.find("."+this.options.panelClass).css("height","").each(function(){var i=t(this),n=i.hasClass("is-active");n||i.css({visibility:"hidden",display:"block"});var s=this.getBoundingClientRect().height;n||i.css({visibility:"",display:""}),e=s>e?s:e}).css("height",e+"px")}},{key:"destroy",value:function(){this.$element.find("."+this.options.linkClass).off(".zf.tabs").hide().end().find("."+this.options.panelClass).hide(),this.options.matchHeight&&null!=this._setHeightMqHandler&&t(window).off("changed.zf.mediaquery",this._setHeightMqHandler),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={autoFocus:!1,wrapOnKeys:!0,matchHeight:!1,linkClass:"tabs-title",panelClass:"tabs-panel"},Foundation.plugin(e,"Tabs")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,i.data(),n),this.className="",this._init(),this._events(),Foundation.registerPlugin(this,"Toggler")}return _createClass(e,[{key:"_init",value:function(){var e;this.options.animate?(e=this.options.animate.split(" "),this.animationIn=e[0],this.animationOut=e[1]||null):(e=this.$element.data("toggler"),this.className="."===e[0]?e.slice(1):e);var i=this.$element[0].id;t('[data-open="'+i+'"], [data-close="'+i+'"], [data-toggle="'+i+'"]').attr("aria-controls",i),this.$element.attr("aria-expanded",!this.$element.is(":hidden"))}},{key:"_events",value:function(){this.$element.off("toggle.zf.trigger").on("toggle.zf.trigger",this.toggle.bind(this))}},{key:"toggle",value:function(){this[this.options.animate?"_toggleAnimate":"_toggleClass"]()}},{key:"_toggleClass",value:function(){this.$element.toggleClass(this.className);var t=this.$element.hasClass(this.className);t?this.$element.trigger("on.zf.toggler"):this.$element.trigger("off.zf.toggler"),this._updateARIA(t)}},{key:"_toggleAnimate",value:function(){var t=this;this.$element.is(":hidden")?Foundation.Motion.animateIn(this.$element,this.animationIn,function(){t._updateARIA(!0),this.trigger("on.zf.toggler")}):Foundation.Motion.animateOut(this.$element,this.animationOut,function(){t._updateARIA(!1),this.trigger("off.zf.toggler")})}},{key:"_updateARIA",value:function(t){this.$element.attr("aria-expanded",!!t)}},{key:"destroy",value:function(){this.$element.off(".zf.toggler"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={animate:!1},Foundation.plugin(e,"Toggler")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this.isActive=!1,this.isClick=!1,this._init(),Foundation.registerPlugin(this,"Tooltip")}return _createClass(e,[{key:"_init",value:function(){var e=this.$element.attr("aria-describedby")||Foundation.GetYoDigits(6,"tooltip");this.options.positionClass=this.options.positionClass||this._getPositionClass(this.$element),this.options.tipText=this.options.tipText||this.$element.attr("title"),this.template=this.options.template?t(this.options.template):this._buildTemplate(e),this.template.appendTo(document.body).text(this.options.tipText).hide(),this.$element.attr({title:"","aria-describedby":e,"data-yeti-box":e,"data-toggle":e,"data-resize":e}).addClass(this.triggerClass),this.usedPositions=[],this.counter=4,this.classChanged=!1,this._events()}},{key:"_getPositionClass",value:function(t){if(!t)return"";var e=t[0].className.match(/\b(top|left|right)\b/g);return e=e?e[0]:""}},{key:"_buildTemplate",value:function(e){var i=(this.options.tooltipClass+" "+this.options.positionClass+" "+this.options.templateClasses).trim(),n=t("<div></div>").addClass(i).attr({role:"tooltip","aria-hidden":!0,"data-is-active":!1,"data-is-focus":!1,id:e});return n}},{key:"_reposition",value:function(t){this.usedPositions.push(t?t:"bottom"),!t&&this.usedPositions.indexOf("top")<0?this.template.addClass("top"):"top"===t&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):"left"===t&&this.usedPositions.indexOf("right")<0?this.template.removeClass(t).addClass("right"):"right"===t&&this.usedPositions.indexOf("left")<0?this.template.removeClass(t).addClass("left"):!t&&this.usedPositions.indexOf("top")>-1&&this.usedPositions.indexOf("left")<0?this.template.addClass("left"):"top"===t&&this.usedPositions.indexOf("bottom")>-1&&this.usedPositions.indexOf("left")<0?this.template.removeClass(t).addClass("left"):"left"===t&&this.usedPositions.indexOf("right")>-1&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):"right"===t&&this.usedPositions.indexOf("left")>-1&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):this.template.removeClass(t),this.classChanged=!0,this.counter--}},{key:"_setPosition",value:function(){var t=this._getPositionClass(this.template),e=Foundation.Box.GetDimensions(this.template),i=Foundation.Box.GetDimensions(this.$element),n="left"===t?"left":"right"===t?"left":"top",s="top"===n?"height":"width";"height"===s?this.options.vOffset:this.options.hOffset;if(e.width>=e.windowDims.width||!this.counter&&!Foundation.Box.ImNotTouchingYou(this.template))return this.template.offset(Foundation.Box.GetOffsets(this.template,this.$element,"center bottom",this.options.vOffset,this.options.hOffset,!0)).css({width:i.windowDims.width-2*this.options.hOffset,height:"auto"}),!1;for(this.template.offset(Foundation.Box.GetOffsets(this.template,this.$element,"center "+(t||"bottom"),this.options.vOffset,this.options.hOffset));!Foundation.Box.ImNotTouchingYou(this.template)&&this.counter;)this._reposition(t),this._setPosition()}},{key:"show",value:function(){if("all"!==this.options.showOn&&!Foundation.MediaQuery.atLeast(this.options.showOn))return!1;var t=this;this.template.css("visibility","hidden").show(),this._setPosition(),this.$element.trigger("closeme.zf.tooltip",this.template.attr("id")),this.template.attr({"data-is-active":!0,"aria-hidden":!1}),t.isActive=!0,this.template.stop().hide().css("visibility","").fadeIn(this.options.fadeInDuration,function(){}),this.$element.trigger("show.zf.tooltip")}},{key:"hide",value:function(){var t=this;this.template.stop().attr({"aria-hidden":!0,"data-is-active":!1}).fadeOut(this.options.fadeOutDuration,function(){t.isActive=!1,t.isClick=!1,t.classChanged&&(t.template.removeClass(t._getPositionClass(t.template)).addClass(t.options.positionClass),t.usedPositions=[],t.counter=4,t.classChanged=!1)}),this.$element.trigger("hide.zf.tooltip")}},{key:"_events",value:function(){var t=this,e=(this.template,!1);this.options.disableHover||this.$element.on("mouseenter.zf.tooltip",function(e){t.isActive||(t.timeout=setTimeout(function(){t.show()},t.options.hoverDelay))}).on("mouseleave.zf.tooltip",function(i){clearTimeout(t.timeout),(!e||t.isClick&&!t.options.clickOpen)&&t.hide()}),this.options.clickOpen?this.$element.on("mousedown.zf.tooltip",function(e){e.stopImmediatePropagation(),t.isClick||(t.isClick=!0,!t.options.disableHover&&t.$element.attr("tabindex")||t.isActive||t.show())}):this.$element.on("mousedown.zf.tooltip",function(e){e.stopImmediatePropagation(),t.isClick=!0}),this.options.disableForTouch||this.$element.on("tap.zf.tooltip touchend.zf.tooltip",function(e){t.isActive?t.hide():t.show()}),this.$element.on({"close.zf.trigger":this.hide.bind(this)}),this.$element.on("focus.zf.tooltip",function(i){return e=!0,t.isClick?(t.options.clickOpen||(e=!1),!1):void t.show()}).on("focusout.zf.tooltip",function(i){e=!1,t.isClick=!1,t.hide()}).on("resizeme.zf.trigger",function(){t.isActive&&t._setPosition()})}},{key:"toggle",value:function(){this.isActive?this.hide():this.show()}},{key:"destroy",value:function(){this.$element.attr("title",this.template.text()).off(".zf.trigger .zf.tootip").removeAttr("aria-describedby").removeAttr("data-yeti-box").removeAttr("data-toggle").removeAttr("data-resize"),this.template.remove(),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={disableForTouch:!1,hoverDelay:200,fadeInDuration:150,fadeOutDuration:150,disableHover:!1,templateClasses:"",tooltipClass:"tooltip",triggerClass:"has-tip",showOn:"small",template:"",tipText:"",touchCloseText:"Tap to close.",clickOpen:!0,positionClass:"",vOffset:10,hOffset:12},Foundation.plugin(e,"Tooltip")}(jQuery); diff --git a/libraries/foundation-6/dist/plugins/foundation.abide.js b/libraries/foundation-6/dist/plugins/foundation.abide.js new file mode 100755 index 00000000..5cfe562b --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.abide.js @@ -0,0 +1,600 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Abide module. + * @module foundation.abide + */ + + var Abide = function () { + /** + * Creates a new instance of Abide. + * @class + * @fires Abide#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Abide(element) { + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + + _classCallCheck(this, Abide); + + this.$element = element; + this.options = $.extend({}, Abide.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Abide'); + } + + /** + * Initializes the Abide plugin and calls functions to get Abide functioning on load. + * @private + */ + + + _createClass(Abide, [{ + key: '_init', + value: function _init() { + this.$inputs = this.$element.find('input, textarea, select'); + + this._events(); + } + + /** + * Initializes events for Abide. + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this2 = this; + + this.$element.off('.abide').on('reset.zf.abide', function () { + _this2.resetForm(); + }).on('submit.zf.abide', function () { + return _this2.validateForm(); + }); + + if (this.options.validateOn === 'fieldChange') { + this.$inputs.off('change.zf.abide').on('change.zf.abide', function (e) { + _this2.validateInput($(e.target)); + }); + } + + if (this.options.liveValidate) { + this.$inputs.off('input.zf.abide').on('input.zf.abide', function (e) { + _this2.validateInput($(e.target)); + }); + } + } + + /** + * Calls necessary functions to update Abide upon DOM change + * @private + */ + + }, { + key: '_reflow', + value: function _reflow() { + this._init(); + } + + /** + * Checks whether or not a form element has the required attribute and if it's checked or not + * @param {Object} element - jQuery object to check for required attribute + * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty + */ + + }, { + key: 'requiredCheck', + value: function requiredCheck($el) { + if (!$el.attr('required')) return true; + + var isGood = true; + + switch ($el[0].type) { + case 'checkbox': + isGood = $el[0].checked; + break; + + case 'select': + case 'select-one': + case 'select-multiple': + var opt = $el.find('option:selected'); + if (!opt.length || !opt.val()) isGood = false; + break; + + default: + if (!$el.val() || !$el.val().length) isGood = false; + } + + return isGood; + } + + /** + * Based on $el, get the first element with selector in this order: + * 1. The element's direct sibling('s). + * 3. The element's parent's children. + * + * This allows for multiple form errors per input, though if none are found, no form errors will be shown. + * + * @param {Object} $el - jQuery object to use as reference to find the form error selector. + * @returns {Object} jQuery object with the selector. + */ + + }, { + key: 'findFormError', + value: function findFormError($el) { + var $error = $el.siblings(this.options.formErrorSelector); + + if (!$error.length) { + $error = $el.parent().find(this.options.formErrorSelector); + } + + return $error; + } + + /** + * Get the first element in this order: + * 2. The <label> with the attribute `[for="someInputId"]` + * 3. The `.closest()` <label> + * + * @param {Object} $el - jQuery object to check for required attribute + * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty + */ + + }, { + key: 'findLabel', + value: function findLabel($el) { + var id = $el[0].id; + var $label = this.$element.find('label[for="' + id + '"]'); + + if (!$label.length) { + return $el.closest('label'); + } + + return $label; + } + + /** + * Get the set of labels associated with a set of radio els in this order + * 2. The <label> with the attribute `[for="someInputId"]` + * 3. The `.closest()` <label> + * + * @param {Object} $el - jQuery object to check for required attribute + * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty + */ + + }, { + key: 'findRadioLabels', + value: function findRadioLabels($els) { + var _this3 = this; + + var labels = $els.map(function (i, el) { + var id = el.id; + var $label = _this3.$element.find('label[for="' + id + '"]'); + + if (!$label.length) { + $label = $(el).closest('label'); + } + return $label[0]; + }); + + return $(labels); + } + + /** + * Adds the CSS error class as specified by the Abide settings to the label, input, and the form + * @param {Object} $el - jQuery object to add the class to + */ + + }, { + key: 'addErrorClasses', + value: function addErrorClasses($el) { + var $label = this.findLabel($el); + var $formError = this.findFormError($el); + + if ($label.length) { + $label.addClass(this.options.labelErrorClass); + } + + if ($formError.length) { + $formError.addClass(this.options.formErrorClass); + } + + $el.addClass(this.options.inputErrorClass).attr('data-invalid', ''); + } + + /** + * Remove CSS error classes etc from an entire radio button group + * @param {String} groupName - A string that specifies the name of a radio button group + * + */ + + }, { + key: 'removeRadioErrorClasses', + value: function removeRadioErrorClasses(groupName) { + var $els = this.$element.find(':radio[name="' + groupName + '"]'); + var $labels = this.findRadioLabels($els); + var $formErrors = this.findFormError($els); + + if ($labels.length) { + $labels.removeClass(this.options.labelErrorClass); + } + + if ($formErrors.length) { + $formErrors.removeClass(this.options.formErrorClass); + } + + $els.removeClass(this.options.inputErrorClass).removeAttr('data-invalid'); + } + + /** + * Removes CSS error class as specified by the Abide settings from the label, input, and the form + * @param {Object} $el - jQuery object to remove the class from + */ + + }, { + key: 'removeErrorClasses', + value: function removeErrorClasses($el) { + // radios need to clear all of the els + if ($el[0].type == 'radio') { + return this.removeRadioErrorClasses($el.attr('name')); + } + + var $label = this.findLabel($el); + var $formError = this.findFormError($el); + + if ($label.length) { + $label.removeClass(this.options.labelErrorClass); + } + + if ($formError.length) { + $formError.removeClass(this.options.formErrorClass); + } + + $el.removeClass(this.options.inputErrorClass).removeAttr('data-invalid'); + } + + /** + * Goes through a form to find inputs and proceeds to validate them in ways specific to their type + * @fires Abide#invalid + * @fires Abide#valid + * @param {Object} element - jQuery object to validate, should be an HTML input + * @returns {Boolean} goodToGo - If the input is valid or not. + */ + + }, { + key: 'validateInput', + value: function validateInput($el) { + var clearRequire = this.requiredCheck($el), + validated = false, + customValidator = true, + validator = $el.attr('data-validator'), + equalTo = true; + + // don't validate ignored inputs or hidden inputs + if ($el.is('[data-abide-ignore]') || $el.is('[type="hidden"]')) { + return true; + } + + switch ($el[0].type) { + case 'radio': + validated = this.validateRadio($el.attr('name')); + break; + + case 'checkbox': + validated = clearRequire; + break; + + case 'select': + case 'select-one': + case 'select-multiple': + validated = clearRequire; + break; + + default: + validated = this.validateText($el); + } + + if (validator) { + customValidator = this.matchValidation($el, validator, $el.attr('required')); + } + + if ($el.attr('data-equalto')) { + equalTo = this.options.validators.equalTo($el); + } + + var goodToGo = [clearRequire, validated, customValidator, equalTo].indexOf(false) === -1; + var message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide'; + + this[goodToGo ? 'removeErrorClasses' : 'addErrorClasses']($el); + + /** + * Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide` + * Trigger includes the DOM element of the input. + * @event Abide#valid + * @event Abide#invalid + */ + $el.trigger(message, [$el]); + + return goodToGo; + } + + /** + * Goes through a form and if there are any invalid inputs, it will display the form error element + * @returns {Boolean} noError - true if no errors were detected... + * @fires Abide#formvalid + * @fires Abide#forminvalid + */ + + }, { + key: 'validateForm', + value: function validateForm() { + var acc = []; + var _this = this; + + this.$inputs.each(function () { + acc.push(_this.validateInput($(this))); + }); + + var noError = acc.indexOf(false) === -1; + + this.$element.find('[data-abide-error]').css('display', noError ? 'none' : 'block'); + + /** + * Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`. + * Trigger includes the element of the form. + * @event Abide#formvalid + * @event Abide#forminvalid + */ + this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]); + + return noError; + } + + /** + * Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true. + * @param {Object} $el - jQuery object to validate, should be a text input HTML element + * @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns + * @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified + */ + + }, { + key: 'validateText', + value: function validateText($el, pattern) { + // A pattern can be passed to this function, or it will be infered from the input's "pattern" attribute, or it's "type" attribute + pattern = pattern || $el.attr('pattern') || $el.attr('type'); + var inputText = $el.val(); + var valid = false; + + if (inputText.length) { + // If the pattern attribute on the element is in Abide's list of patterns, then test that regexp + if (this.options.patterns.hasOwnProperty(pattern)) { + valid = this.options.patterns[pattern].test(inputText); + } + // If the pattern name isn't also the type attribute of the field, then test it as a regexp + else if (pattern !== $el.attr('type')) { + valid = new RegExp(pattern).test(inputText); + } else { + valid = true; + } + } + // An empty field is valid if it's not required + else if (!$el.prop('required')) { + valid = true; + } + + return valid; + } + + /** + * Determines whether or a not a radio input is valid based on whether or not it is required and selected. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all radio buttons in its group. + * @param {String} groupName - A string that specifies the name of a radio button group + * @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required) + */ + + }, { + key: 'validateRadio', + value: function validateRadio(groupName) { + // If at least one radio in the group has the `required` attribute, the group is considered required + // Per W3C spec, all radio buttons in a group should have `required`, but we're being nice + var $group = this.$element.find(':radio[name="' + groupName + '"]'); + var valid = false, + required = false; + + // For the group to be required, at least one radio needs to be required + $group.each(function (i, e) { + if ($(e).attr('required')) { + required = true; + } + }); + if (!required) valid = true; + + if (!valid) { + // For the group to be valid, at least one radio needs to be checked + $group.each(function (i, e) { + if ($(e).prop('checked')) { + valid = true; + } + }); + }; + + return valid; + } + + /** + * Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator="foo bar baz"` in a space separated listed. + * @param {Object} $el - jQuery input element. + * @param {String} validators - a string of function names matching functions in the Abide.options.validators object. + * @param {Boolean} required - self explanatory? + * @returns {Boolean} - true if validations passed. + */ + + }, { + key: 'matchValidation', + value: function matchValidation($el, validators, required) { + var _this4 = this; + + required = required ? true : false; + + var clear = validators.split(' ').map(function (v) { + return _this4.options.validators[v]($el, required, $el.parent()); + }); + return clear.indexOf(false) === -1; + } + + /** + * Resets form inputs and styles + * @fires Abide#formreset + */ + + }, { + key: 'resetForm', + value: function resetForm() { + var $form = this.$element, + opts = this.options; + + $('.' + opts.labelErrorClass, $form).not('small').removeClass(opts.labelErrorClass); + $('.' + opts.inputErrorClass, $form).not('small').removeClass(opts.inputErrorClass); + $(opts.formErrorSelector + '.' + opts.formErrorClass).removeClass(opts.formErrorClass); + $form.find('[data-abide-error]').css('display', 'none'); + $(':input', $form).not(':button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]').val('').removeAttr('data-invalid'); + $(':input:radio', $form).not('[data-abide-ignore]').prop('checked', false).removeAttr('data-invalid'); + $(':input:checkbox', $form).not('[data-abide-ignore]').prop('checked', false).removeAttr('data-invalid'); + /** + * Fires when the form has been reset. + * @event Abide#formreset + */ + $form.trigger('formreset.zf.abide', [$form]); + } + + /** + * Destroys an instance of Abide. + * Removes error styles and classes from elements, without resetting their values. + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this = this; + this.$element.off('.abide').find('[data-abide-error]').css('display', 'none'); + + this.$inputs.off('.abide').each(function () { + _this.removeErrorClasses($(this)); + }); + + Foundation.unregisterPlugin(this); + } + }]); + + return Abide; + }(); + + /** + * Default settings for plugin + */ + + + Abide.defaults = { + /** + * The default event to validate inputs. Checkboxes and radios validate immediately. + * Remove or change this value for manual validation. + * @option + * @example 'fieldChange' + */ + validateOn: 'fieldChange', + + /** + * Class to be applied to input labels on failed validation. + * @option + * @example 'is-invalid-label' + */ + labelErrorClass: 'is-invalid-label', + + /** + * Class to be applied to inputs on failed validation. + * @option + * @example 'is-invalid-input' + */ + inputErrorClass: 'is-invalid-input', + + /** + * Class selector to use to target Form Errors for show/hide. + * @option + * @example '.form-error' + */ + formErrorSelector: '.form-error', + + /** + * Class added to Form Errors on failed validation. + * @option + * @example 'is-visible' + */ + formErrorClass: 'is-visible', + + /** + * Set to true to validate text inputs on any value change. + * @option + * @example false + */ + liveValidate: false, + + patterns: { + alpha: /^[a-zA-Z]+$/, + alpha_numeric: /^[a-zA-Z0-9]+$/, + integer: /^[-+]?\d+$/, + number: /^[-+]?\d*(?:[\.\,]\d+)?$/, + + // amex, visa, diners + card: /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/, + cvv: /^([0-9]){3,4}$/, + + // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address + email: /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/, + + url: /^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, + // abc.de + domain: /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/, + + datetime: /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/, + // YYYY-MM-DD + date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/, + // HH:MM:SS + time: /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/, + dateISO: /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/, + // MM/DD/YYYY + month_day_year: /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/, + // DD/MM/YYYY + day_month_year: /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/, + + // #FFF or #FFFFFF + color: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/ + }, + + /** + * Optional validation functions to be used. `equalTo` being the only default included function. + * Functions should return only a boolean if the input is valid or not. Functions are given the following arguments: + * el : The jQuery element to validate. + * required : Boolean value of the required attribute be present or not. + * parent : The direct parent of the input. + * @option + */ + validators: { + equalTo: function (el, required, parent) { + return $('#' + el.attr('data-equalto')).val() === el.val(); + } + } + }; + + // Window exports + Foundation.plugin(Abide, 'Abide'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.accordion.js b/libraries/foundation-6/dist/plugins/foundation.accordion.js new file mode 100755 index 00000000..ce0f9b3a --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.accordion.js @@ -0,0 +1,262 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Accordion module. + * @module foundation.accordion + * @requires foundation.util.keyboard + * @requires foundation.util.motion + */ + + var Accordion = function () { + /** + * Creates a new instance of an accordion. + * @class + * @fires Accordion#init + * @param {jQuery} element - jQuery object to make into an accordion. + * @param {Object} options - a plain object with settings to override the default options. + */ + + function Accordion(element, options) { + _classCallCheck(this, Accordion); + + this.$element = element; + this.options = $.extend({}, Accordion.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Accordion'); + Foundation.Keyboard.register('Accordion', { + 'ENTER': 'toggle', + 'SPACE': 'toggle', + 'ARROW_DOWN': 'next', + 'ARROW_UP': 'previous' + }); + } + + /** + * Initializes the accordion by animating the preset active pane(s). + * @private + */ + + + _createClass(Accordion, [{ + key: '_init', + value: function _init() { + this.$element.attr('role', 'tablist'); + this.$tabs = this.$element.children('li, [data-accordion-item]'); + + this.$tabs.each(function (idx, el) { + var $el = $(el), + $content = $el.children('[data-tab-content]'), + id = $content[0].id || Foundation.GetYoDigits(6, 'accordion'), + linkId = el.id || id + '-label'; + + $el.find('a:first').attr({ + 'aria-controls': id, + 'role': 'tab', + 'id': linkId, + 'aria-expanded': false, + 'aria-selected': false + }); + + $content.attr({ 'role': 'tabpanel', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id }); + }); + var $initActive = this.$element.find('.is-active').children('[data-tab-content]'); + if ($initActive.length) { + this.down($initActive, true); + } + this._events(); + } + + /** + * Adds event handlers for items within the accordion. + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + + this.$tabs.each(function () { + var $elem = $(this); + var $tabContent = $elem.children('[data-tab-content]'); + if ($tabContent.length) { + $elem.children('a').off('click.zf.accordion keydown.zf.accordion').on('click.zf.accordion', function (e) { + // $(this).children('a').on('click.zf.accordion', function(e) { + e.preventDefault(); + if ($elem.hasClass('is-active')) { + if (_this.options.allowAllClosed || $elem.siblings().hasClass('is-active')) { + _this.up($tabContent); + } + } else { + _this.down($tabContent); + } + }).on('keydown.zf.accordion', function (e) { + Foundation.Keyboard.handleKey(e, 'Accordion', { + toggle: function () { + _this.toggle($tabContent); + }, + next: function () { + var $a = $elem.next().find('a').focus(); + if (!_this.options.multiExpand) { + $a.trigger('click.zf.accordion'); + } + }, + previous: function () { + var $a = $elem.prev().find('a').focus(); + if (!_this.options.multiExpand) { + $a.trigger('click.zf.accordion'); + } + }, + handled: function () { + e.preventDefault(); + e.stopPropagation(); + } + }); + }); + } + }); + } + + /** + * Toggles the selected content pane's open/close state. + * @param {jQuery} $target - jQuery object of the pane to toggle. + * @function + */ + + }, { + key: 'toggle', + value: function toggle($target) { + if ($target.parent().hasClass('is-active')) { + if (this.options.allowAllClosed || $target.parent().siblings().hasClass('is-active')) { + this.up($target); + } else { + return; + } + } else { + this.down($target); + } + } + + /** + * Opens the accordion tab defined by `$target`. + * @param {jQuery} $target - Accordion pane to open. + * @param {Boolean} firstTime - flag to determine if reflow should happen. + * @fires Accordion#down + * @function + */ + + }, { + key: 'down', + value: function down($target, firstTime) { + var _this2 = this; + + if (!this.options.multiExpand && !firstTime) { + var $currentActive = this.$element.children('.is-active').children('[data-tab-content]'); + if ($currentActive.length) { + this.up($currentActive); + } + } + + $target.attr('aria-hidden', false).parent('[data-tab-content]').addBack().parent().addClass('is-active'); + + $target.slideDown(this.options.slideSpeed, function () { + /** + * Fires when the tab is done opening. + * @event Accordion#down + */ + _this2.$element.trigger('down.zf.accordion', [$target]); + }); + + $('#' + $target.attr('aria-labelledby')).attr({ + 'aria-expanded': true, + 'aria-selected': true + }); + } + + /** + * Closes the tab defined by `$target`. + * @param {jQuery} $target - Accordion tab to close. + * @fires Accordion#up + * @function + */ + + }, { + key: 'up', + value: function up($target) { + var $aunts = $target.parent().siblings(), + _this = this; + var canClose = this.options.multiExpand ? $aunts.hasClass('is-active') : $target.parent().hasClass('is-active'); + + if (!this.options.allowAllClosed && !canClose) { + return; + } + + // Foundation.Move(this.options.slideSpeed, $target, function(){ + $target.slideUp(_this.options.slideSpeed, function () { + /** + * Fires when the tab is done collapsing up. + * @event Accordion#up + */ + _this.$element.trigger('up.zf.accordion', [$target]); + }); + // }); + + $target.attr('aria-hidden', true).parent().removeClass('is-active'); + + $('#' + $target.attr('aria-labelledby')).attr({ + 'aria-expanded': false, + 'aria-selected': false + }); + } + + /** + * Destroys an instance of an accordion. + * @fires Accordion#destroyed + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', ''); + this.$element.find('a').off('.zf.accordion'); + + Foundation.unregisterPlugin(this); + } + }]); + + return Accordion; + }(); + + Accordion.defaults = { + /** + * Amount of time to animate the opening of an accordion pane. + * @option + * @example 250 + */ + slideSpeed: 250, + /** + * Allow the accordion to have multiple open panes. + * @option + * @example false + */ + multiExpand: false, + /** + * Allow the accordion to close all panes. + * @option + * @example false + */ + allowAllClosed: false + }; + + // Window exports + Foundation.plugin(Accordion, 'Accordion'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.accordionMenu.js b/libraries/foundation-6/dist/plugins/foundation.accordionMenu.js new file mode 100755 index 00000000..cbd4127e --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.accordionMenu.js @@ -0,0 +1,307 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * AccordionMenu module. + * @module foundation.accordionMenu + * @requires foundation.util.keyboard + * @requires foundation.util.motion + * @requires foundation.util.nest + */ + + var AccordionMenu = function () { + /** + * Creates a new instance of an accordion menu. + * @class + * @fires AccordionMenu#init + * @param {jQuery} element - jQuery object to make into an accordion menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function AccordionMenu(element, options) { + _classCallCheck(this, AccordionMenu); + + this.$element = element; + this.options = $.extend({}, AccordionMenu.defaults, this.$element.data(), options); + + Foundation.Nest.Feather(this.$element, 'accordion'); + + this._init(); + + Foundation.registerPlugin(this, 'AccordionMenu'); + Foundation.Keyboard.register('AccordionMenu', { + 'ENTER': 'toggle', + 'SPACE': 'toggle', + 'ARROW_RIGHT': 'open', + 'ARROW_UP': 'up', + 'ARROW_DOWN': 'down', + 'ARROW_LEFT': 'close', + 'ESCAPE': 'closeAll', + 'TAB': 'down', + 'SHIFT_TAB': 'up' + }); + } + + /** + * Initializes the accordion menu by hiding all nested menus. + * @private + */ + + + _createClass(AccordionMenu, [{ + key: '_init', + value: function _init() { + this.$element.find('[data-submenu]').not('.is-active').slideUp(0); //.find('a').css('padding-left', '1rem'); + this.$element.attr({ + 'role': 'tablist', + 'aria-multiselectable': this.options.multiOpen + }); + + this.$menuLinks = this.$element.find('.is-accordion-submenu-parent'); + this.$menuLinks.each(function () { + var linkId = this.id || Foundation.GetYoDigits(6, 'acc-menu-link'), + $elem = $(this), + $sub = $elem.children('[data-submenu]'), + subId = $sub[0].id || Foundation.GetYoDigits(6, 'acc-menu'), + isActive = $sub.hasClass('is-active'); + $elem.attr({ + 'aria-controls': subId, + 'aria-expanded': isActive, + 'role': 'tab', + 'id': linkId + }); + $sub.attr({ + 'aria-labelledby': linkId, + 'aria-hidden': !isActive, + 'role': 'tabpanel', + 'id': subId + }); + }); + var initPanes = this.$element.find('.is-active'); + if (initPanes.length) { + var _this = this; + initPanes.each(function () { + _this.down($(this)); + }); + } + this._events(); + } + + /** + * Adds event handlers for items within the menu. + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + + this.$element.find('li').each(function () { + var $submenu = $(this).children('[data-submenu]'); + + if ($submenu.length) { + $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function (e) { + e.preventDefault(); + + _this.toggle($submenu); + }); + } + }).on('keydown.zf.accordionmenu', function (e) { + var $element = $(this), + $elements = $element.parent('ul').children('li'), + $prevElement, + $nextElement, + $target = $element.children('[data-submenu]'); + + $elements.each(function (i) { + if ($(this).is($element)) { + $prevElement = $elements.eq(Math.max(0, i - 1)).find('a').first(); + $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)).find('a').first(); + + if ($(this).children('[data-submenu]:visible').length) { + // has open sub menu + $nextElement = $element.find('li:first-child').find('a').first(); + } + if ($(this).is(':first-child')) { + // is first element of sub menu + $prevElement = $element.parents('li').first().find('a').first(); + } else if ($prevElement.children('[data-submenu]:visible').length) { + // if previous element has open sub menu + $prevElement = $prevElement.find('li:last-child').find('a').first(); + } + if ($(this).is(':last-child')) { + // is last element of sub menu + $nextElement = $element.parents('li').first().next('li').find('a').first(); + } + + return; + } + }); + Foundation.Keyboard.handleKey(e, 'AccordionMenu', { + open: function () { + if ($target.is(':hidden')) { + _this.down($target); + $target.find('li').first().find('a').first().focus(); + } + }, + close: function () { + if ($target.length && !$target.is(':hidden')) { + // close active sub of this item + _this.up($target); + } else if ($element.parent('[data-submenu]').length) { + // close currently open sub + _this.up($element.parent('[data-submenu]')); + $element.parents('li').first().find('a').first().focus(); + } + }, + up: function () { + $prevElement.attr('tabindex', -1).focus(); + return true; + }, + down: function () { + $nextElement.attr('tabindex', -1).focus(); + return true; + }, + toggle: function () { + if ($element.children('[data-submenu]').length) { + _this.toggle($element.children('[data-submenu]')); + } + }, + closeAll: function () { + _this.hideAll(); + }, + handled: function (preventDefault) { + if (preventDefault) { + e.preventDefault(); + } + e.stopImmediatePropagation(); + } + }); + }); //.attr('tabindex', 0); + } + + /** + * Closes all panes of the menu. + * @function + */ + + }, { + key: 'hideAll', + value: function hideAll() { + this.$element.find('[data-submenu]').slideUp(this.options.slideSpeed); + } + + /** + * Toggles the open/close state of a submenu. + * @function + * @param {jQuery} $target - the submenu to toggle + */ + + }, { + key: 'toggle', + value: function toggle($target) { + if (!$target.is(':animated')) { + if (!$target.is(':hidden')) { + this.up($target); + } else { + this.down($target); + } + } + } + + /** + * Opens the sub-menu defined by `$target`. + * @param {jQuery} $target - Sub-menu to open. + * @fires AccordionMenu#down + */ + + }, { + key: 'down', + value: function down($target) { + var _this = this; + + if (!this.options.multiOpen) { + this.up(this.$element.find('.is-active').not($target.parentsUntil(this.$element).add($target))); + } + + $target.addClass('is-active').attr({ 'aria-hidden': false }).parent('.is-accordion-submenu-parent').attr({ 'aria-expanded': true }); + + //Foundation.Move(this.options.slideSpeed, $target, function() { + $target.slideDown(_this.options.slideSpeed, function () { + /** + * Fires when the menu is done opening. + * @event AccordionMenu#down + */ + _this.$element.trigger('down.zf.accordionMenu', [$target]); + }); + //}); + } + + /** + * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well. + * @param {jQuery} $target - Sub-menu to close. + * @fires AccordionMenu#up + */ + + }, { + key: 'up', + value: function up($target) { + var _this = this; + //Foundation.Move(this.options.slideSpeed, $target, function(){ + $target.slideUp(_this.options.slideSpeed, function () { + /** + * Fires when the menu is done collapsing up. + * @event AccordionMenu#up + */ + _this.$element.trigger('up.zf.accordionMenu', [$target]); + }); + //}); + + var $menus = $target.find('[data-submenu]').slideUp(0).addBack().attr('aria-hidden', true); + + $menus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false); + } + + /** + * Destroys an instance of accordion menu. + * @fires AccordionMenu#destroyed + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.find('[data-submenu]').slideDown(0).css('display', ''); + this.$element.find('a').off('click.zf.accordionMenu'); + + Foundation.Nest.Burn(this.$element, 'accordion'); + Foundation.unregisterPlugin(this); + } + }]); + + return AccordionMenu; + }(); + + AccordionMenu.defaults = { + /** + * Amount of time to animate the opening of a submenu in ms. + * @option + * @example 250 + */ + slideSpeed: 250, + /** + * Allow the menu to have multiple open panes. + * @option + * @example true + */ + multiOpen: true + }; + + // Window exports + Foundation.plugin(AccordionMenu, 'AccordionMenu'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.core.js b/libraries/foundation-6/dist/plugins/foundation.core.js new file mode 100755 index 00000000..002c7a0e --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.core.js @@ -0,0 +1,386 @@ +!function ($) { + + "use strict"; + + var FOUNDATION_VERSION = '6.2.2'; + + // Global Foundation object + // This is attached to the window, or used as a module for AMD/Browserify + var Foundation = { + version: FOUNDATION_VERSION, + + /** + * Stores initialized plugins. + */ + _plugins: {}, + + /** + * Stores generated unique ids for plugin instances + */ + _uuids: [], + + /** + * Returns a boolean for RTL support + */ + rtl: function () { + return $('html').attr('dir') === 'rtl'; + }, + /** + * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing. + * @param {Object} plugin - The constructor of the plugin. + */ + plugin: function (plugin, name) { + // Object key to use when adding to global Foundation object + // Examples: Foundation.Reveal, Foundation.OffCanvas + var className = name || functionName(plugin); + // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin + // Examples: data-reveal, data-off-canvas + var attrName = hyphenate(className); + + // Add to the Foundation object and the plugins list (for reflowing) + this._plugins[attrName] = this[className] = plugin; + }, + /** + * @function + * Populates the _uuids array with pointers to each individual plugin instance. + * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls. + * Also fires the initialization event for each plugin, consolidating repetitive code. + * @param {Object} plugin - an instance of a plugin, usually `this` in context. + * @param {String} name - the name of the plugin, passed as a camelCased string. + * @fires Plugin#init + */ + registerPlugin: function (plugin, name) { + var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase(); + plugin.uuid = this.GetYoDigits(6, pluginName); + + if (!plugin.$element.attr('data-' + pluginName)) { + plugin.$element.attr('data-' + pluginName, plugin.uuid); + } + if (!plugin.$element.data('zfPlugin')) { + plugin.$element.data('zfPlugin', plugin); + } + /** + * Fires when the plugin has initialized. + * @event Plugin#init + */ + plugin.$element.trigger('init.zf.' + pluginName); + + this._uuids.push(plugin.uuid); + + return; + }, + /** + * @function + * Removes the plugins uuid from the _uuids array. + * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute. + * Also fires the destroyed event for the plugin, consolidating repetitive code. + * @param {Object} plugin - an instance of a plugin, usually `this` in context. + * @fires Plugin#destroyed + */ + unregisterPlugin: function (plugin) { + var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor)); + + this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1); + plugin.$element.removeAttr('data-' + pluginName).removeData('zfPlugin') + /** + * Fires when the plugin has been destroyed. + * @event Plugin#destroyed + */ + .trigger('destroyed.zf.' + pluginName); + for (var prop in plugin) { + plugin[prop] = null; //clean up script to prep for garbage collection. + } + return; + }, + + /** + * @function + * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc. + * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'` + * @default If no argument is passed, reflow all currently active plugins. + */ + reInit: function (plugins) { + var isJQ = plugins instanceof $; + try { + if (isJQ) { + plugins.each(function () { + $(this).data('zfPlugin')._init(); + }); + } else { + var type = typeof plugins, + _this = this, + fns = { + 'object': function (plgs) { + plgs.forEach(function (p) { + p = hyphenate(p); + $('[data-' + p + ']').foundation('_init'); + }); + }, + 'string': function () { + plugins = hyphenate(plugins); + $('[data-' + plugins + ']').foundation('_init'); + }, + 'undefined': function () { + this['object'](Object.keys(_this._plugins)); + } + }; + fns[type](plugins); + } + } catch (err) { + console.error(err); + } finally { + return plugins; + } + }, + + /** + * returns a random base-36 uid with namespacing + * @function + * @param {Number} length - number of random base-36 digits desired. Increase for more random strings. + * @param {String} namespace - name of plugin to be incorporated in uid, optional. + * @default {String} '' - if no plugin name is provided, nothing is appended to the uid. + * @returns {String} - unique id + */ + GetYoDigits: function (length, namespace) { + length = length || 6; + return Math.round(Math.pow(36, length + 1) - Math.random() * Math.pow(36, length)).toString(36).slice(1) + (namespace ? '-' + namespace : ''); + }, + /** + * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized. + * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object. + * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything. + */ + reflow: function (elem, plugins) { + + // If plugins is undefined, just grab everything + if (typeof plugins === 'undefined') { + plugins = Object.keys(this._plugins); + } + // If plugins is a string, convert it to an array with one item + else if (typeof plugins === 'string') { + plugins = [plugins]; + } + + var _this = this; + + // Iterate through each plugin + $.each(plugins, function (i, name) { + // Get the current plugin + var plugin = _this._plugins[name]; + + // Localize the search to all elements inside elem, as well as elem itself, unless elem === document + var $elem = $(elem).find('[data-' + name + ']').addBack('[data-' + name + ']'); + + // For each plugin found, initialize it + $elem.each(function () { + var $el = $(this), + opts = {}; + // Don't double-dip on plugins + if ($el.data('zfPlugin')) { + console.warn("Tried to initialize " + name + " on an element that already has a Foundation plugin."); + return; + } + + if ($el.attr('data-options')) { + var thing = $el.attr('data-options').split(';').forEach(function (e, i) { + var opt = e.split(':').map(function (el) { + return el.trim(); + }); + if (opt[0]) opts[opt[0]] = parseValue(opt[1]); + }); + } + try { + $el.data('zfPlugin', new plugin($(this), opts)); + } catch (er) { + console.error(er); + } finally { + return; + } + }); + }); + }, + getFnName: functionName, + transitionend: function ($elem) { + var transitions = { + 'transition': 'transitionend', + 'WebkitTransition': 'webkitTransitionEnd', + 'MozTransition': 'transitionend', + 'OTransition': 'otransitionend' + }; + var elem = document.createElement('div'), + end; + + for (var t in transitions) { + if (typeof elem.style[t] !== 'undefined') { + end = transitions[t]; + } + } + if (end) { + return end; + } else { + end = setTimeout(function () { + $elem.triggerHandler('transitionend', [$elem]); + }, 1); + return 'transitionend'; + } + } + }; + + Foundation.util = { + /** + * Function for applying a debounce effect to a function call. + * @function + * @param {Function} func - Function to be called at end of timeout. + * @param {Number} delay - Time in ms to delay the call of `func`. + * @returns function + */ + throttle: function (func, delay) { + var timer = null; + + return function () { + var context = this, + args = arguments; + + if (timer === null) { + timer = setTimeout(function () { + func.apply(context, args); + timer = null; + }, delay); + } + }; + } + }; + + // TODO: consider not making this a jQuery function + // TODO: need way to reflow vs. re-initialize + /** + * The Foundation jQuery method. + * @param {String|Array} method - An action to perform on the current jQuery object. + */ + var foundation = function (method) { + var type = typeof method, + $meta = $('meta.foundation-mq'), + $noJS = $('.no-js'); + + if (!$meta.length) { + $('<meta class="foundation-mq">').appendTo(document.head); + } + if ($noJS.length) { + $noJS.removeClass('no-js'); + } + + if (type === 'undefined') { + //needs to initialize the Foundation object, or an individual plugin. + Foundation.MediaQuery._init(); + Foundation.reflow(this); + } else if (type === 'string') { + //an individual method to invoke on a plugin or group of plugins + var args = Array.prototype.slice.call(arguments, 1); //collect all the arguments, if necessary + var plugClass = this.data('zfPlugin'); //determine the class of plugin + + if (plugClass !== undefined && plugClass[method] !== undefined) { + //make sure both the class and method exist + if (this.length === 1) { + //if there's only one, call it directly. + plugClass[method].apply(plugClass, args); + } else { + this.each(function (i, el) { + //otherwise loop through the jQuery collection and invoke the method on each + plugClass[method].apply($(el).data('zfPlugin'), args); + }); + } + } else { + //error for no class or no method + throw new ReferenceError("We're sorry, '" + method + "' is not an available method for " + (plugClass ? functionName(plugClass) : 'this element') + '.'); + } + } else { + //error for invalid argument type + throw new TypeError('We\'re sorry, ' + type + ' is not a valid parameter. You must use a string representing the method you wish to invoke.'); + } + return this; + }; + + window.Foundation = Foundation; + $.fn.foundation = foundation; + + // Polyfill for requestAnimationFrame + (function () { + if (!Date.now || !window.Date.now) window.Date.now = Date.now = function () { + return new Date().getTime(); + }; + + var vendors = ['webkit', 'moz']; + for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) { + var vp = vendors[i]; + window.requestAnimationFrame = window[vp + 'RequestAnimationFrame']; + window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame']; + } + if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) { + var lastTime = 0; + window.requestAnimationFrame = function (callback) { + var now = Date.now(); + var nextTime = Math.max(lastTime + 16, now); + return setTimeout(function () { + callback(lastTime = nextTime); + }, nextTime - now); + }; + window.cancelAnimationFrame = clearTimeout; + } + /** + * Polyfill for performance.now, required by rAF + */ + if (!window.performance || !window.performance.now) { + window.performance = { + start: Date.now(), + now: function () { + return Date.now() - this.start; + } + }; + } + })(); + if (!Function.prototype.bind) { + Function.prototype.bind = function (oThis) { + if (typeof this !== 'function') { + // closest thing possible to the ECMAScript 5 + // internal IsCallable function + throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); + } + + var aArgs = Array.prototype.slice.call(arguments, 1), + fToBind = this, + fNOP = function () {}, + fBound = function () { + return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))); + }; + + if (this.prototype) { + // native functions don't have a prototype + fNOP.prototype = this.prototype; + } + fBound.prototype = new fNOP(); + + return fBound; + }; + } + // Polyfill to get the name of a function in IE9 + function functionName(fn) { + if (Function.prototype.name === undefined) { + var funcNameRegex = /function\s([^(]{1,})\(/; + var results = funcNameRegex.exec(fn.toString()); + return results && results.length > 1 ? results[1].trim() : ""; + } else if (fn.prototype === undefined) { + return fn.constructor.name; + } else { + return fn.prototype.constructor.name; + } + } + function parseValue(str) { + if (/true/.test(str)) return true;else if (/false/.test(str)) return false;else if (!isNaN(str * 1)) return parseFloat(str); + return str; + } + // Convert PascalCase to kebab-case + // Thank you: http://stackoverflow.com/a/8955580 + function hyphenate(str) { + return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); + } +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.drilldown.js b/libraries/foundation-6/dist/plugins/foundation.drilldown.js new file mode 100755 index 00000000..f16f4c8b --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.drilldown.js @@ -0,0 +1,409 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Drilldown module. + * @module foundation.drilldown + * @requires foundation.util.keyboard + * @requires foundation.util.motion + * @requires foundation.util.nest + */ + + var Drilldown = function () { + /** + * Creates a new instance of a drilldown menu. + * @class + * @param {jQuery} element - jQuery object to make into an accordion menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Drilldown(element, options) { + _classCallCheck(this, Drilldown); + + this.$element = element; + this.options = $.extend({}, Drilldown.defaults, this.$element.data(), options); + + Foundation.Nest.Feather(this.$element, 'drilldown'); + + this._init(); + + Foundation.registerPlugin(this, 'Drilldown'); + Foundation.Keyboard.register('Drilldown', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ARROW_RIGHT': 'next', + 'ARROW_UP': 'up', + 'ARROW_DOWN': 'down', + 'ARROW_LEFT': 'previous', + 'ESCAPE': 'close', + 'TAB': 'down', + 'SHIFT_TAB': 'up' + }); + } + + /** + * Initializes the drilldown by creating jQuery collections of elements + * @private + */ + + + _createClass(Drilldown, [{ + key: '_init', + value: function _init() { + this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a'); + this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]'); + this.$menuItems = this.$element.find('li').not('.js-drilldown-back').attr('role', 'menuitem').find('a'); + + this._prepareMenu(); + + this._keyboardEvents(); + } + + /** + * prepares drilldown menu by setting attributes to links and elements + * sets a min height to prevent content jumping + * wraps the element if not already wrapped + * @private + * @function + */ + + }, { + key: '_prepareMenu', + value: function _prepareMenu() { + var _this = this; + // if(!this.options.holdOpen){ + // this._menuLinkEvents(); + // } + this.$submenuAnchors.each(function () { + var $link = $(this); + var $sub = $link.parent(); + if (_this.options.parentLink) { + $link.clone().prependTo($sub.children('[data-submenu]')).wrap('<li class="is-submenu-parent-item is-submenu-item is-drilldown-submenu-item" role="menu-item"></li>'); + } + $link.data('savedHref', $link.attr('href')).removeAttr('href'); + $link.children('[data-submenu]').attr({ + 'aria-hidden': true, + 'tabindex': 0, + 'role': 'menu' + }); + _this._events($link); + }); + this.$submenus.each(function () { + var $menu = $(this), + $back = $menu.find('.js-drilldown-back'); + if (!$back.length) { + $menu.prepend(_this.options.backButton); + } + _this._back($menu); + }); + if (!this.$element.parent().hasClass('is-drilldown')) { + this.$wrapper = $(this.options.wrapper).addClass('is-drilldown'); + this.$wrapper = this.$element.wrap(this.$wrapper).parent().css(this._getMaxDims()); + } + } + + /** + * Adds event handlers to elements in the menu. + * @function + * @private + * @param {jQuery} $elem - the current menu item to add handlers to. + */ + + }, { + key: '_events', + value: function _events($elem) { + var _this = this; + + $elem.off('click.zf.drilldown').on('click.zf.drilldown', function (e) { + if ($(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')) { + e.stopImmediatePropagation(); + e.preventDefault(); + } + + // if(e.target !== e.currentTarget.firstElementChild){ + // return false; + // } + _this._show($elem.parent('li')); + + if (_this.options.closeOnClick) { + var $body = $('body'); + $body.off('.zf.drilldown').on('click.zf.drilldown', function (e) { + if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)) { + return; + } + e.preventDefault(); + _this._hideAll(); + $body.off('.zf.drilldown'); + }); + } + }); + } + + /** + * Adds keydown event listener to `li`'s in the menu. + * @private + */ + + }, { + key: '_keyboardEvents', + value: function _keyboardEvents() { + var _this = this; + + this.$menuItems.add(this.$element.find('.js-drilldown-back > a')).on('keydown.zf.drilldown', function (e) { + + var $element = $(this), + $elements = $element.parent('li').parent('ul').children('li').children('a'), + $prevElement, + $nextElement; + + $elements.each(function (i) { + if ($(this).is($element)) { + $prevElement = $elements.eq(Math.max(0, i - 1)); + $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)); + return; + } + }); + + Foundation.Keyboard.handleKey(e, 'Drilldown', { + next: function () { + if ($element.is(_this.$submenuAnchors)) { + _this._show($element.parent('li')); + $element.parent('li').one(Foundation.transitionend($element), function () { + $element.parent('li').find('ul li a').filter(_this.$menuItems).first().focus(); + }); + return true; + } + }, + previous: function () { + _this._hide($element.parent('li').parent('ul')); + $element.parent('li').parent('ul').one(Foundation.transitionend($element), function () { + setTimeout(function () { + $element.parent('li').parent('ul').parent('li').children('a').first().focus(); + }, 1); + }); + return true; + }, + up: function () { + $prevElement.focus(); + return true; + }, + down: function () { + $nextElement.focus(); + return true; + }, + close: function () { + _this._back(); + //_this.$menuItems.first().focus(); // focus to first element + }, + open: function () { + if (!$element.is(_this.$menuItems)) { + // not menu item means back button + _this._hide($element.parent('li').parent('ul')); + $element.parent('li').parent('ul').one(Foundation.transitionend($element), function () { + setTimeout(function () { + $element.parent('li').parent('ul').parent('li').children('a').first().focus(); + }, 1); + }); + } else if ($element.is(_this.$submenuAnchors)) { + _this._show($element.parent('li')); + $element.parent('li').one(Foundation.transitionend($element), function () { + $element.parent('li').find('ul li a').filter(_this.$menuItems).first().focus(); + }); + } + return true; + }, + handled: function (preventDefault) { + if (preventDefault) { + e.preventDefault(); + } + e.stopImmediatePropagation(); + } + }); + }); // end keyboardAccess + } + + /** + * Closes all open elements, and returns to root menu. + * @function + * @fires Drilldown#closed + */ + + }, { + key: '_hideAll', + value: function _hideAll() { + var $elem = this.$element.find('.is-drilldown-submenu.is-active').addClass('is-closing'); + $elem.one(Foundation.transitionend($elem), function (e) { + $elem.removeClass('is-active is-closing'); + }); + /** + * Fires when the menu is fully closed. + * @event Drilldown#closed + */ + this.$element.trigger('closed.zf.drilldown'); + } + + /** + * Adds event listener for each `back` button, and closes open menus. + * @function + * @fires Drilldown#back + * @param {jQuery} $elem - the current sub-menu to add `back` event. + */ + + }, { + key: '_back', + value: function _back($elem) { + var _this = this; + $elem.off('click.zf.drilldown'); + $elem.children('.js-drilldown-back').on('click.zf.drilldown', function (e) { + e.stopImmediatePropagation(); + // console.log('mouseup on back'); + _this._hide($elem); + }); + } + + /** + * Adds event listener to menu items w/o submenus to close open menus on click. + * @function + * @private + */ + + }, { + key: '_menuLinkEvents', + value: function _menuLinkEvents() { + var _this = this; + this.$menuItems.not('.is-drilldown-submenu-parent').off('click.zf.drilldown').on('click.zf.drilldown', function (e) { + // e.stopImmediatePropagation(); + setTimeout(function () { + _this._hideAll(); + }, 0); + }); + } + + /** + * Opens a submenu. + * @function + * @fires Drilldown#open + * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag. + */ + + }, { + key: '_show', + value: function _show($elem) { + $elem.children('[data-submenu]').addClass('is-active'); + /** + * Fires when the submenu has opened. + * @event Drilldown#open + */ + this.$element.trigger('open.zf.drilldown', [$elem]); + } + }, { + key: '_hide', + + + /** + * Hides a submenu + * @function + * @fires Drilldown#hide + * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag. + */ + value: function _hide($elem) { + var _this = this; + $elem.addClass('is-closing').one(Foundation.transitionend($elem), function () { + $elem.removeClass('is-active is-closing'); + $elem.blur(); + }); + /** + * Fires when the submenu has closed. + * @event Drilldown#hide + */ + $elem.trigger('hide.zf.drilldown', [$elem]); + } + + /** + * Iterates through the nested menus to calculate the min-height, and max-width for the menu. + * Prevents content jumping. + * @function + * @private + */ + + }, { + key: '_getMaxDims', + value: function _getMaxDims() { + var max = 0, + result = {}; + this.$submenus.add(this.$element).each(function () { + var numOfElems = $(this).children('li').length; + max = numOfElems > max ? numOfElems : max; + }); + + result['min-height'] = max * this.$menuItems[0].getBoundingClientRect().height + 'px'; + result['max-width'] = this.$element[0].getBoundingClientRect().width + 'px'; + + return result; + } + + /** + * Destroys the Drilldown Menu + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this._hideAll(); + Foundation.Nest.Burn(this.$element, 'drilldown'); + this.$element.unwrap().find('.js-drilldown-back, .is-submenu-parent-item').remove().end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').end().find('[data-submenu]').removeAttr('aria-hidden tabindex role'); + this.$submenuAnchors.each(function () { + $(this).off('.zf.drilldown'); + }); + this.$element.find('a').each(function () { + var $link = $(this); + if ($link.data('savedHref')) { + $link.attr('href', $link.data('savedHref')).removeData('savedHref'); + } else { + return; + } + }); + Foundation.unregisterPlugin(this); + } + }]); + + return Drilldown; + }(); + + Drilldown.defaults = { + /** + * Markup used for JS generated back button. Prepended to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\`) if copy and pasting. + * @option + * @example '<\li><\a>Back<\/a><\/li>' + */ + backButton: '<li class="js-drilldown-back"><a tabindex="0">Back</a></li>', + /** + * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\`) if copy and pasting. + * @option + * @example '<\div class="is-drilldown"><\/div>' + */ + wrapper: '<div></div>', + /** + * Adds the parent link to the submenu. + * @option + * @example false + */ + parentLink: false, + /** + * Allow the menu to return to root list on body click. + * @option + * @example false + */ + closeOnClick: false + // holdOpen: false + }; + + // Window exports + Foundation.plugin(Drilldown, 'Drilldown'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.dropdown.js b/libraries/foundation-6/dist/plugins/foundation.dropdown.js new file mode 100755 index 00000000..c6cc98c8 --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.dropdown.js @@ -0,0 +1,447 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Dropdown module. + * @module foundation.dropdown + * @requires foundation.util.keyboard + * @requires foundation.util.box + * @requires foundation.util.triggers + */ + + var Dropdown = function () { + /** + * Creates a new instance of a dropdown. + * @class + * @param {jQuery} element - jQuery object to make into a dropdown. + * Object should be of the dropdown panel, rather than its anchor. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Dropdown(element, options) { + _classCallCheck(this, Dropdown); + + this.$element = element; + this.options = $.extend({}, Dropdown.defaults, this.$element.data(), options); + this._init(); + + Foundation.registerPlugin(this, 'Dropdown'); + Foundation.Keyboard.register('Dropdown', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ESCAPE': 'close', + 'TAB': 'tab_forward', + 'SHIFT_TAB': 'tab_backward' + }); + } + + /** + * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor. + * @function + * @private + */ + + + _createClass(Dropdown, [{ + key: '_init', + value: function _init() { + var $id = this.$element.attr('id'); + + this.$anchor = $('[data-toggle="' + $id + '"]') || $('[data-open="' + $id + '"]'); + this.$anchor.attr({ + 'aria-controls': $id, + 'data-is-focus': false, + 'data-yeti-box': $id, + 'aria-haspopup': true, + 'aria-expanded': false + + }); + + this.options.positionClass = this.getPositionClass(); + this.counter = 4; + this.usedPositions = []; + this.$element.attr({ + 'aria-hidden': 'true', + 'data-yeti-box': $id, + 'data-resize': $id, + 'aria-labelledby': this.$anchor[0].id || Foundation.GetYoDigits(6, 'dd-anchor') + }); + this._events(); + } + + /** + * Helper function to determine current orientation of dropdown pane. + * @function + * @returns {String} position - string value of a position class. + */ + + }, { + key: 'getPositionClass', + value: function getPositionClass() { + var verticalPosition = this.$element[0].className.match(/(top|left|right|bottom)/g); + verticalPosition = verticalPosition ? verticalPosition[0] : ''; + var horizontalPosition = /float-(\S+)\s/.exec(this.$anchor[0].className); + horizontalPosition = horizontalPosition ? horizontalPosition[1] : ''; + var position = horizontalPosition ? horizontalPosition + ' ' + verticalPosition : verticalPosition; + return position; + } + + /** + * Adjusts the dropdown panes orientation by adding/removing positioning classes. + * @function + * @private + * @param {String} position - position class to remove. + */ + + }, { + key: '_reposition', + value: function _reposition(position) { + this.usedPositions.push(position ? position : 'bottom'); + //default, try switching to opposite side + if (!position && this.usedPositions.indexOf('top') < 0) { + this.$element.addClass('top'); + } else if (position === 'top' && this.usedPositions.indexOf('bottom') < 0) { + this.$element.removeClass(position); + } else if (position === 'left' && this.usedPositions.indexOf('right') < 0) { + this.$element.removeClass(position).addClass('right'); + } else if (position === 'right' && this.usedPositions.indexOf('left') < 0) { + this.$element.removeClass(position).addClass('left'); + } + + //if default change didn't work, try bottom or left first + else if (!position && this.usedPositions.indexOf('top') > -1 && this.usedPositions.indexOf('left') < 0) { + this.$element.addClass('left'); + } else if (position === 'top' && this.usedPositions.indexOf('bottom') > -1 && this.usedPositions.indexOf('left') < 0) { + this.$element.removeClass(position).addClass('left'); + } else if (position === 'left' && this.usedPositions.indexOf('right') > -1 && this.usedPositions.indexOf('bottom') < 0) { + this.$element.removeClass(position); + } else if (position === 'right' && this.usedPositions.indexOf('left') > -1 && this.usedPositions.indexOf('bottom') < 0) { + this.$element.removeClass(position); + } + //if nothing cleared, set to bottom + else { + this.$element.removeClass(position); + } + this.classChanged = true; + this.counter--; + } + + /** + * Sets the position and orientation of the dropdown pane, checks for collisions. + * Recursively calls itself if a collision is detected, with a new position class. + * @function + * @private + */ + + }, { + key: '_setPosition', + value: function _setPosition() { + if (this.$anchor.attr('aria-expanded') === 'false') { + return false; + } + var position = this.getPositionClass(), + $eleDims = Foundation.Box.GetDimensions(this.$element), + $anchorDims = Foundation.Box.GetDimensions(this.$anchor), + _this = this, + direction = position === 'left' ? 'left' : position === 'right' ? 'left' : 'top', + param = direction === 'top' ? 'height' : 'width', + offset = param === 'height' ? this.options.vOffset : this.options.hOffset; + + if ($eleDims.width >= $eleDims.windowDims.width || !this.counter && !Foundation.Box.ImNotTouchingYou(this.$element)) { + this.$element.offset(Foundation.Box.GetOffsets(this.$element, this.$anchor, 'center bottom', this.options.vOffset, this.options.hOffset, true)).css({ + 'width': $eleDims.windowDims.width - this.options.hOffset * 2, + 'height': 'auto' + }); + this.classChanged = true; + return false; + } + + this.$element.offset(Foundation.Box.GetOffsets(this.$element, this.$anchor, position, this.options.vOffset, this.options.hOffset)); + + while (!Foundation.Box.ImNotTouchingYou(this.$element, false, true) && this.counter) { + this._reposition(position); + this._setPosition(); + } + } + + /** + * Adds event listeners to the element utilizing the triggers utility library. + * @function + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + this.$element.on({ + 'open.zf.trigger': this.open.bind(this), + 'close.zf.trigger': this.close.bind(this), + 'toggle.zf.trigger': this.toggle.bind(this), + 'resizeme.zf.trigger': this._setPosition.bind(this) + }); + + if (this.options.hover) { + this.$anchor.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function () { + clearTimeout(_this.timeout); + _this.timeout = setTimeout(function () { + _this.open(); + _this.$anchor.data('hover', true); + }, _this.options.hoverDelay); + }).on('mouseleave.zf.dropdown', function () { + clearTimeout(_this.timeout); + _this.timeout = setTimeout(function () { + _this.close(); + _this.$anchor.data('hover', false); + }, _this.options.hoverDelay); + }); + if (this.options.hoverPane) { + this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function () { + clearTimeout(_this.timeout); + }).on('mouseleave.zf.dropdown', function () { + clearTimeout(_this.timeout); + _this.timeout = setTimeout(function () { + _this.close(); + _this.$anchor.data('hover', false); + }, _this.options.hoverDelay); + }); + } + } + this.$anchor.add(this.$element).on('keydown.zf.dropdown', function (e) { + + var $target = $(this), + visibleFocusableElements = Foundation.Keyboard.findFocusable(_this.$element); + + Foundation.Keyboard.handleKey(e, 'Dropdown', { + tab_forward: function () { + if (_this.$element.find(':focus').is(visibleFocusableElements.eq(-1))) { + // left modal downwards, setting focus to first element + if (_this.options.trapFocus) { + // if focus shall be trapped + visibleFocusableElements.eq(0).focus(); + e.preventDefault(); + } else { + // if focus is not trapped, close dropdown on focus out + _this.close(); + } + } + }, + tab_backward: function () { + if (_this.$element.find(':focus').is(visibleFocusableElements.eq(0)) || _this.$element.is(':focus')) { + // left modal upwards, setting focus to last element + if (_this.options.trapFocus) { + // if focus shall be trapped + visibleFocusableElements.eq(-1).focus(); + e.preventDefault(); + } else { + // if focus is not trapped, close dropdown on focus out + _this.close(); + } + } + }, + open: function () { + if ($target.is(_this.$anchor)) { + _this.open(); + _this.$element.attr('tabindex', -1).focus(); + e.preventDefault(); + } + }, + close: function () { + _this.close(); + _this.$anchor.focus(); + } + }); + }); + } + + /** + * Adds an event handler to the body to close any dropdowns on a click. + * @function + * @private + */ + + }, { + key: '_addBodyHandler', + value: function _addBodyHandler() { + var $body = $(document.body).not(this.$element), + _this = this; + $body.off('click.zf.dropdown').on('click.zf.dropdown', function (e) { + if (_this.$anchor.is(e.target) || _this.$anchor.find(e.target).length) { + return; + } + if (_this.$element.find(e.target).length) { + return; + } + _this.close(); + $body.off('click.zf.dropdown'); + }); + } + + /** + * Opens the dropdown pane, and fires a bubbling event to close other dropdowns. + * @function + * @fires Dropdown#closeme + * @fires Dropdown#show + */ + + }, { + key: 'open', + value: function open() { + // var _this = this; + /** + * Fires to close other open dropdowns + * @event Dropdown#closeme + */ + this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id')); + this.$anchor.addClass('hover').attr({ 'aria-expanded': true }); + // this.$element/*.show()*/; + this._setPosition(); + this.$element.addClass('is-open').attr({ 'aria-hidden': false }); + + if (this.options.autoFocus) { + var $focusable = Foundation.Keyboard.findFocusable(this.$element); + if ($focusable.length) { + $focusable.eq(0).focus(); + } + } + + if (this.options.closeOnClick) { + this._addBodyHandler(); + } + + /** + * Fires once the dropdown is visible. + * @event Dropdown#show + */ + this.$element.trigger('show.zf.dropdown', [this.$element]); + } + + /** + * Closes the open dropdown pane. + * @function + * @fires Dropdown#hide + */ + + }, { + key: 'close', + value: function close() { + if (!this.$element.hasClass('is-open')) { + return false; + } + this.$element.removeClass('is-open').attr({ 'aria-hidden': true }); + + this.$anchor.removeClass('hover').attr('aria-expanded', false); + + if (this.classChanged) { + var curPositionClass = this.getPositionClass(); + if (curPositionClass) { + this.$element.removeClass(curPositionClass); + } + this.$element.addClass(this.options.positionClass) + /*.hide()*/.css({ height: '', width: '' }); + this.classChanged = false; + this.counter = 4; + this.usedPositions.length = 0; + } + this.$element.trigger('hide.zf.dropdown', [this.$element]); + } + + /** + * Toggles the dropdown pane's visibility. + * @function + */ + + }, { + key: 'toggle', + value: function toggle() { + if (this.$element.hasClass('is-open')) { + if (this.$anchor.data('hover')) return; + this.close(); + } else { + this.open(); + } + } + + /** + * Destroys the dropdown. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.off('.zf.trigger').hide(); + this.$anchor.off('.zf.dropdown'); + + Foundation.unregisterPlugin(this); + } + }]); + + return Dropdown; + }(); + + Dropdown.defaults = { + /** + * Amount of time to delay opening a submenu on hover event. + * @option + * @example 250 + */ + hoverDelay: 250, + /** + * Allow submenus to open on hover events + * @option + * @example false + */ + hover: false, + /** + * Don't close dropdown when hovering over dropdown pane + * @option + * @example true + */ + hoverPane: false, + /** + * Number of pixels between the dropdown pane and the triggering element on open. + * @option + * @example 1 + */ + vOffset: 1, + /** + * Number of pixels between the dropdown pane and the triggering element on open. + * @option + * @example 1 + */ + hOffset: 1, + /** + * Class applied to adjust open position. JS will test and fill this in. + * @option + * @example 'top' + */ + positionClass: '', + /** + * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands. + * @option + * @example false + */ + trapFocus: false, + /** + * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening. + * @option + * @example true + */ + autoFocus: false, + /** + * Allows a click on the body to close the dropdown. + * @option + * @example false + */ + closeOnClick: false + }; + + // Window exports + Foundation.plugin(Dropdown, 'Dropdown'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.dropdownMenu.js b/libraries/foundation-6/dist/plugins/foundation.dropdownMenu.js new file mode 100755 index 00000000..5ae3a3aa --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.dropdownMenu.js @@ -0,0 +1,447 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * DropdownMenu module. + * @module foundation.dropdown-menu + * @requires foundation.util.keyboard + * @requires foundation.util.box + * @requires foundation.util.nest + */ + + var DropdownMenu = function () { + /** + * Creates a new instance of DropdownMenu. + * @class + * @fires DropdownMenu#init + * @param {jQuery} element - jQuery object to make into a dropdown menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function DropdownMenu(element, options) { + _classCallCheck(this, DropdownMenu); + + this.$element = element; + this.options = $.extend({}, DropdownMenu.defaults, this.$element.data(), options); + + Foundation.Nest.Feather(this.$element, 'dropdown'); + this._init(); + + Foundation.registerPlugin(this, 'DropdownMenu'); + Foundation.Keyboard.register('DropdownMenu', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ARROW_RIGHT': 'next', + 'ARROW_UP': 'up', + 'ARROW_DOWN': 'down', + 'ARROW_LEFT': 'previous', + 'ESCAPE': 'close' + }); + } + + /** + * Initializes the plugin, and calls _prepareMenu + * @private + * @function + */ + + + _createClass(DropdownMenu, [{ + key: '_init', + value: function _init() { + var subs = this.$element.find('li.is-dropdown-submenu-parent'); + this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub'); + + this.$menuItems = this.$element.find('[role="menuitem"]'); + this.$tabs = this.$element.children('[role="menuitem"]'); + this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass); + + if (this.$element.hasClass(this.options.rightClass) || this.options.alignment === 'right' || Foundation.rtl() || this.$element.parents('.top-bar-right').is('*')) { + this.options.alignment = 'right'; + subs.addClass('opens-left'); + } else { + subs.addClass('opens-right'); + } + this.changed = false; + this._events(); + } + }, { + key: '_events', + + /** + * Adds event listeners to elements within the menu + * @private + * @function + */ + value: function _events() { + var _this = this, + hasTouch = 'ontouchstart' in window || typeof window.ontouchstart !== 'undefined', + parClass = 'is-dropdown-submenu-parent'; + + // used for onClick and in the keyboard handlers + var handleClickFn = function (e) { + var $elem = $(e.target).parentsUntil('ul', '.' + parClass), + hasSub = $elem.hasClass(parClass), + hasClicked = $elem.attr('data-is-click') === 'true', + $sub = $elem.children('.is-dropdown-submenu'); + + if (hasSub) { + if (hasClicked) { + if (!_this.options.closeOnClick || !_this.options.clickOpen && !hasTouch || _this.options.forceFollow && hasTouch) { + return; + } else { + e.stopImmediatePropagation(); + e.preventDefault(); + _this._hide($elem); + } + } else { + e.preventDefault(); + e.stopImmediatePropagation(); + _this._show($elem.children('.is-dropdown-submenu')); + $elem.add($elem.parentsUntil(_this.$element, '.' + parClass)).attr('data-is-click', true); + } + } else { + return; + } + }; + + if (this.options.clickOpen || hasTouch) { + this.$menuItems.on('click.zf.dropdownmenu touchstart.zf.dropdownmenu', handleClickFn); + } + + if (!this.options.disableHover) { + this.$menuItems.on('mouseenter.zf.dropdownmenu', function (e) { + var $elem = $(this), + hasSub = $elem.hasClass(parClass); + + if (hasSub) { + clearTimeout(_this.delay); + _this.delay = setTimeout(function () { + _this._show($elem.children('.is-dropdown-submenu')); + }, _this.options.hoverDelay); + } + }).on('mouseleave.zf.dropdownmenu', function (e) { + var $elem = $(this), + hasSub = $elem.hasClass(parClass); + if (hasSub && _this.options.autoclose) { + if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) { + return false; + } + + clearTimeout(_this.delay); + _this.delay = setTimeout(function () { + _this._hide($elem); + }, _this.options.closingTime); + } + }); + } + this.$menuItems.on('keydown.zf.dropdownmenu', function (e) { + var $element = $(e.target).parentsUntil('ul', '[role="menuitem"]'), + isTab = _this.$tabs.index($element) > -1, + $elements = isTab ? _this.$tabs : $element.siblings('li').add($element), + $prevElement, + $nextElement; + + $elements.each(function (i) { + if ($(this).is($element)) { + $prevElement = $elements.eq(i - 1); + $nextElement = $elements.eq(i + 1); + return; + } + }); + + var nextSibling = function () { + if (!$element.is(':last-child')) { + $nextElement.children('a:first').focus(); + e.preventDefault(); + } + }, + prevSibling = function () { + $prevElement.children('a:first').focus(); + e.preventDefault(); + }, + openSub = function () { + var $sub = $element.children('ul.is-dropdown-submenu'); + if ($sub.length) { + _this._show($sub); + $element.find('li > a:first').focus(); + e.preventDefault(); + } else { + return; + } + }, + closeSub = function () { + //if ($element.is(':first-child')) { + var close = $element.parent('ul').parent('li'); + close.children('a:first').focus(); + _this._hide(close); + e.preventDefault(); + //} + }; + var functions = { + open: openSub, + close: function () { + _this._hide(_this.$element); + _this.$menuItems.find('a:first').focus(); // focus to first element + e.preventDefault(); + }, + handled: function () { + e.stopImmediatePropagation(); + } + }; + + if (isTab) { + if (_this.$element.hasClass(_this.options.verticalClass)) { + // vertical menu + if (_this.options.alignment === 'left') { + // left aligned + $.extend(functions, { + down: nextSibling, + up: prevSibling, + next: openSub, + previous: closeSub + }); + } else { + // right aligned + $.extend(functions, { + down: nextSibling, + up: prevSibling, + next: closeSub, + previous: openSub + }); + } + } else { + // horizontal menu + $.extend(functions, { + next: nextSibling, + previous: prevSibling, + down: openSub, + up: closeSub + }); + } + } else { + // not tabs -> one sub + if (_this.options.alignment === 'left') { + // left aligned + $.extend(functions, { + next: openSub, + previous: closeSub, + down: nextSibling, + up: prevSibling + }); + } else { + // right aligned + $.extend(functions, { + next: closeSub, + previous: openSub, + down: nextSibling, + up: prevSibling + }); + } + } + Foundation.Keyboard.handleKey(e, 'DropdownMenu', functions); + }); + } + + /** + * Adds an event handler to the body to close any dropdowns on a click. + * @function + * @private + */ + + }, { + key: '_addBodyHandler', + value: function _addBodyHandler() { + var $body = $(document.body), + _this = this; + $body.off('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu').on('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu', function (e) { + var $link = _this.$element.find(e.target); + if ($link.length) { + return; + } + + _this._hide(); + $body.off('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu'); + }); + } + + /** + * Opens a dropdown pane, and checks for collisions first. + * @param {jQuery} $sub - ul element that is a submenu to show + * @function + * @private + * @fires DropdownMenu#show + */ + + }, { + key: '_show', + value: function _show($sub) { + var idx = this.$tabs.index(this.$tabs.filter(function (i, el) { + return $(el).find($sub).length > 0; + })); + var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent'); + this._hide($sibs, idx); + $sub.css('visibility', 'hidden').addClass('js-dropdown-active').attr({ 'aria-hidden': false }).parent('li.is-dropdown-submenu-parent').addClass('is-active').attr({ 'aria-expanded': true }); + var clear = Foundation.Box.ImNotTouchingYou($sub, null, true); + if (!clear) { + var oldClass = this.options.alignment === 'left' ? '-right' : '-left', + $parentLi = $sub.parent('.is-dropdown-submenu-parent'); + $parentLi.removeClass('opens' + oldClass).addClass('opens-' + this.options.alignment); + clear = Foundation.Box.ImNotTouchingYou($sub, null, true); + if (!clear) { + $parentLi.removeClass('opens-' + this.options.alignment).addClass('opens-inner'); + } + this.changed = true; + } + $sub.css('visibility', ''); + if (this.options.closeOnClick) { + this._addBodyHandler(); + } + /** + * Fires when the new dropdown pane is visible. + * @event DropdownMenu#show + */ + this.$element.trigger('show.zf.dropdownmenu', [$sub]); + } + + /** + * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything. + * @function + * @param {jQuery} $elem - element with a submenu to hide + * @param {Number} idx - index of the $tabs collection to hide + * @private + */ + + }, { + key: '_hide', + value: function _hide($elem, idx) { + var $toClose; + if ($elem && $elem.length) { + $toClose = $elem; + } else if (idx !== undefined) { + $toClose = this.$tabs.not(function (i, el) { + return i === idx; + }); + } else { + $toClose = this.$element; + } + var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0; + + if (somethingToClose) { + $toClose.find('li.is-active').add($toClose).attr({ + 'aria-expanded': false, + 'data-is-click': false + }).removeClass('is-active'); + + $toClose.find('ul.js-dropdown-active').attr({ + 'aria-hidden': true + }).removeClass('js-dropdown-active'); + + if (this.changed || $toClose.find('opens-inner').length) { + var oldClass = this.options.alignment === 'left' ? 'right' : 'left'; + $toClose.find('li.is-dropdown-submenu-parent').add($toClose).removeClass('opens-inner opens-' + this.options.alignment).addClass('opens-' + oldClass); + this.changed = false; + } + /** + * Fires when the open menus are closed. + * @event DropdownMenu#hide + */ + this.$element.trigger('hide.zf.dropdownmenu', [$toClose]); + } + } + + /** + * Destroys the plugin. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$menuItems.off('.zf.dropdownmenu').removeAttr('data-is-click').removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner'); + $(document.body).off('.zf.dropdownmenu'); + Foundation.Nest.Burn(this.$element, 'dropdown'); + Foundation.unregisterPlugin(this); + } + }]); + + return DropdownMenu; + }(); + + /** + * Default settings for plugin + */ + + + DropdownMenu.defaults = { + /** + * Disallows hover events from opening submenus + * @option + * @example false + */ + disableHover: false, + /** + * Allow a submenu to automatically close on a mouseleave event, if not clicked open. + * @option + * @example true + */ + autoclose: true, + /** + * Amount of time to delay opening a submenu on hover event. + * @option + * @example 50 + */ + hoverDelay: 50, + /** + * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu. + * @option + * @example true + */ + clickOpen: false, + /** + * Amount of time to delay closing a submenu on a mouseleave event. + * @option + * @example 500 + */ + + closingTime: 500, + /** + * Position of the menu relative to what direction the submenus should open. Handled by JS. + * @option + * @example 'left' + */ + alignment: 'left', + /** + * Allow clicks on the body to close any open submenus. + * @option + * @example true + */ + closeOnClick: true, + /** + * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class. + * @option + * @example 'vertical' + */ + verticalClass: 'vertical', + /** + * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class. + * @option + * @example 'align-right' + */ + rightClass: 'align-right', + /** + * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile. + * @option + * @example false + */ + forceFollow: true + }; + + // Window exports + Foundation.plugin(DropdownMenu, 'DropdownMenu'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.equalizer.js b/libraries/foundation-6/dist/plugins/foundation.equalizer.js new file mode 100755 index 00000000..36782aac --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.equalizer.js @@ -0,0 +1,364 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Equalizer module. + * @module foundation.equalizer + */ + + var Equalizer = function () { + /** + * Creates a new instance of Equalizer. + * @class + * @fires Equalizer#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Equalizer(element, options) { + _classCallCheck(this, Equalizer); + + this.$element = element; + this.options = $.extend({}, Equalizer.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Equalizer'); + } + + /** + * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load. + * @private + */ + + + _createClass(Equalizer, [{ + key: '_init', + value: function _init() { + var eqId = this.$element.attr('data-equalizer') || ''; + var $watched = this.$element.find('[data-equalizer-watch="' + eqId + '"]'); + + this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]'); + this.$element.attr('data-resize', eqId || Foundation.GetYoDigits(6, 'eq')); + + this.hasNested = this.$element.find('[data-equalizer]').length > 0; + this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0; + this.isOn = false; + this._bindHandler = { + onResizeMeBound: this._onResizeMe.bind(this), + onPostEqualizedBound: this._onPostEqualized.bind(this) + }; + + var imgs = this.$element.find('img'); + var tooSmall; + if (this.options.equalizeOn) { + tooSmall = this._checkMQ(); + $(window).on('changed.zf.mediaquery', this._checkMQ.bind(this)); + } else { + this._events(); + } + if (tooSmall !== undefined && tooSmall === false || tooSmall === undefined) { + if (imgs.length) { + Foundation.onImagesLoaded(imgs, this._reflow.bind(this)); + } else { + this._reflow(); + } + } + } + + /** + * Removes event listeners if the breakpoint is too small. + * @private + */ + + }, { + key: '_pauseEvents', + value: function _pauseEvents() { + this.isOn = false; + this.$element.off({ + '.zf.equalizer': this._bindHandler.onPostEqualizedBound, + 'resizeme.zf.trigger': this._bindHandler.onResizeMeBound + }); + } + + /** + * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound + * @private + */ + + }, { + key: '_onResizeMe', + value: function _onResizeMe(e) { + this._reflow(); + } + + /** + * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound + * @private + */ + + }, { + key: '_onPostEqualized', + value: function _onPostEqualized(e) { + if (e.target !== this.$element[0]) { + this._reflow(); + } + } + + /** + * Initializes events for Equalizer. + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + this._pauseEvents(); + if (this.hasNested) { + this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound); + } else { + this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound); + } + this.isOn = true; + } + + /** + * Checks the current breakpoint to the minimum required size. + * @private + */ + + }, { + key: '_checkMQ', + value: function _checkMQ() { + var tooSmall = !Foundation.MediaQuery.atLeast(this.options.equalizeOn); + if (tooSmall) { + if (this.isOn) { + this._pauseEvents(); + this.$watched.css('height', 'auto'); + } + } else { + if (!this.isOn) { + this._events(); + } + } + return tooSmall; + } + + /** + * A noop version for the plugin + * @private + */ + + }, { + key: '_killswitch', + value: function _killswitch() { + return; + } + + /** + * Calls necessary functions to update Equalizer upon DOM change + * @private + */ + + }, { + key: '_reflow', + value: function _reflow() { + if (!this.options.equalizeOnStack) { + if (this._isStacked()) { + this.$watched.css('height', 'auto'); + return false; + } + } + if (this.options.equalizeByRow) { + this.getHeightsByRow(this.applyHeightByRow.bind(this)); + } else { + this.getHeights(this.applyHeight.bind(this)); + } + } + + /** + * Manually determines if the first 2 elements are *NOT* stacked. + * @private + */ + + }, { + key: '_isStacked', + value: function _isStacked() { + return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top; + } + + /** + * Finds the outer heights of children contained within an Equalizer parent and returns them in an array + * @param {Function} cb - A non-optional callback to return the heights array to. + * @returns {Array} heights - An array of heights of children within Equalizer container + */ + + }, { + key: 'getHeights', + value: function getHeights(cb) { + var heights = []; + for (var i = 0, len = this.$watched.length; i < len; i++) { + this.$watched[i].style.height = 'auto'; + heights.push(this.$watched[i].offsetHeight); + } + cb(heights); + } + + /** + * Finds the outer heights of children contained within an Equalizer parent and returns them in an array + * @param {Function} cb - A non-optional callback to return the heights array to. + * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child + */ + + }, { + key: 'getHeightsByRow', + value: function getHeightsByRow(cb) { + var lastElTopOffset = this.$watched.length ? this.$watched.first().offset().top : 0, + groups = [], + group = 0; + //group by Row + groups[group] = []; + for (var i = 0, len = this.$watched.length; i < len; i++) { + this.$watched[i].style.height = 'auto'; + //maybe could use this.$watched[i].offsetTop + var elOffsetTop = $(this.$watched[i]).offset().top; + if (elOffsetTop != lastElTopOffset) { + group++; + groups[group] = []; + lastElTopOffset = elOffsetTop; + } + groups[group].push([this.$watched[i], this.$watched[i].offsetHeight]); + } + + for (var j = 0, ln = groups.length; j < ln; j++) { + var heights = $(groups[j]).map(function () { + return this[1]; + }).get(); + var max = Math.max.apply(null, heights); + groups[j].push(max); + } + cb(groups); + } + + /** + * Changes the CSS height property of each child in an Equalizer parent to match the tallest + * @param {array} heights - An array of heights of children within Equalizer container + * @fires Equalizer#preequalized + * @fires Equalizer#postequalized + */ + + }, { + key: 'applyHeight', + value: function applyHeight(heights) { + var max = Math.max.apply(null, heights); + /** + * Fires before the heights are applied + * @event Equalizer#preequalized + */ + this.$element.trigger('preequalized.zf.equalizer'); + + this.$watched.css('height', max); + + /** + * Fires when the heights have been applied + * @event Equalizer#postequalized + */ + this.$element.trigger('postequalized.zf.equalizer'); + } + + /** + * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row + * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child + * @fires Equalizer#preequalized + * @fires Equalizer#preequalizedRow + * @fires Equalizer#postequalizedRow + * @fires Equalizer#postequalized + */ + + }, { + key: 'applyHeightByRow', + value: function applyHeightByRow(groups) { + /** + * Fires before the heights are applied + */ + this.$element.trigger('preequalized.zf.equalizer'); + for (var i = 0, len = groups.length; i < len; i++) { + var groupsILength = groups[i].length, + max = groups[i][groupsILength - 1]; + if (groupsILength <= 2) { + $(groups[i][0][0]).css({ 'height': 'auto' }); + continue; + } + /** + * Fires before the heights per row are applied + * @event Equalizer#preequalizedRow + */ + this.$element.trigger('preequalizedrow.zf.equalizer'); + for (var j = 0, lenJ = groupsILength - 1; j < lenJ; j++) { + $(groups[i][j][0]).css({ 'height': max }); + } + /** + * Fires when the heights per row have been applied + * @event Equalizer#postequalizedRow + */ + this.$element.trigger('postequalizedrow.zf.equalizer'); + } + /** + * Fires when the heights have been applied + */ + this.$element.trigger('postequalized.zf.equalizer'); + } + + /** + * Destroys an instance of Equalizer. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this._pauseEvents(); + this.$watched.css('height', 'auto'); + + Foundation.unregisterPlugin(this); + } + }]); + + return Equalizer; + }(); + + /** + * Default settings for plugin + */ + + + Equalizer.defaults = { + /** + * Enable height equalization when stacked on smaller screens. + * @option + * @example true + */ + equalizeOnStack: true, + /** + * Enable height equalization row by row. + * @option + * @example false + */ + equalizeByRow: false, + /** + * String representing the minimum breakpoint size the plugin should equalize heights on. + * @option + * @example 'medium' + */ + equalizeOn: '' + }; + + // Window exports + Foundation.plugin(Equalizer, 'Equalizer'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.interchange.js b/libraries/foundation-6/dist/plugins/foundation.interchange.js new file mode 100755 index 00000000..7531ccde --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.interchange.js @@ -0,0 +1,227 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Interchange module. + * @module foundation.interchange + * @requires foundation.util.mediaQuery + * @requires foundation.util.timerAndImageLoader + */ + + var Interchange = function () { + /** + * Creates a new instance of Interchange. + * @class + * @fires Interchange#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Interchange(element, options) { + _classCallCheck(this, Interchange); + + this.$element = element; + this.options = $.extend({}, Interchange.defaults, options); + this.rules = []; + this.currentPath = ''; + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'Interchange'); + } + + /** + * Initializes the Interchange plugin and calls functions to get interchange functioning on load. + * @function + * @private + */ + + + _createClass(Interchange, [{ + key: '_init', + value: function _init() { + this._addBreakpoints(); + this._generateRules(); + this._reflow(); + } + + /** + * Initializes events for Interchange. + * @function + * @private + */ + + }, { + key: '_events', + value: function _events() { + $(window).on('resize.zf.interchange', Foundation.util.throttle(this._reflow.bind(this), 50)); + } + + /** + * Calls necessary functions to update Interchange upon DOM change + * @function + * @private + */ + + }, { + key: '_reflow', + value: function _reflow() { + var match; + + // Iterate through each rule, but only save the last match + for (var i in this.rules) { + if (this.rules.hasOwnProperty(i)) { + var rule = this.rules[i]; + + if (window.matchMedia(rule.query).matches) { + match = rule; + } + } + } + + if (match) { + this.replace(match.path); + } + } + + /** + * Gets the Foundation breakpoints and adds them to the Interchange.SPECIAL_QUERIES object. + * @function + * @private + */ + + }, { + key: '_addBreakpoints', + value: function _addBreakpoints() { + for (var i in Foundation.MediaQuery.queries) { + if (Foundation.MediaQuery.queries.hasOwnProperty(i)) { + var query = Foundation.MediaQuery.queries[i]; + Interchange.SPECIAL_QUERIES[query.name] = query.value; + } + } + } + + /** + * Checks the Interchange element for the provided media query + content pairings + * @function + * @private + * @param {Object} element - jQuery object that is an Interchange instance + * @returns {Array} scenarios - Array of objects that have 'mq' and 'path' keys with corresponding keys + */ + + }, { + key: '_generateRules', + value: function _generateRules(element) { + var rulesList = []; + var rules; + + if (this.options.rules) { + rules = this.options.rules; + } else { + rules = this.$element.data('interchange').match(/\[.*?\]/g); + } + + for (var i in rules) { + if (rules.hasOwnProperty(i)) { + var rule = rules[i].slice(1, -1).split(', '); + var path = rule.slice(0, -1).join(''); + var query = rule[rule.length - 1]; + + if (Interchange.SPECIAL_QUERIES[query]) { + query = Interchange.SPECIAL_QUERIES[query]; + } + + rulesList.push({ + path: path, + query: query + }); + } + } + + this.rules = rulesList; + } + + /** + * Update the `src` property of an image, or change the HTML of a container, to the specified path. + * @function + * @param {String} path - Path to the image or HTML partial. + * @fires Interchange#replaced + */ + + }, { + key: 'replace', + value: function replace(path) { + if (this.currentPath === path) return; + + var _this = this, + trigger = 'replaced.zf.interchange'; + + // Replacing images + if (this.$element[0].nodeName === 'IMG') { + this.$element.attr('src', path).load(function () { + _this.currentPath = path; + }).trigger(trigger); + } + // Replacing background images + else if (path.match(/\.(gif|jpg|jpeg|png|svg|tiff)([?#].*)?/i)) { + this.$element.css({ 'background-image': 'url(' + path + ')' }).trigger(trigger); + } + // Replacing HTML + else { + $.get(path, function (response) { + _this.$element.html(response).trigger(trigger); + $(response).foundation(); + _this.currentPath = path; + }); + } + + /** + * Fires when content in an Interchange element is done being loaded. + * @event Interchange#replaced + */ + // this.$element.trigger('replaced.zf.interchange'); + } + + /** + * Destroys an instance of interchange. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + //TODO this. + } + }]); + + return Interchange; + }(); + + /** + * Default settings for plugin + */ + + + Interchange.defaults = { + /** + * Rules to be applied to Interchange elements. Set with the `data-interchange` array notation. + * @option + */ + rules: null + }; + + Interchange.SPECIAL_QUERIES = { + 'landscape': 'screen and (orientation: landscape)', + 'portrait': 'screen and (orientation: portrait)', + 'retina': 'only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)' + }; + + // Window exports + Foundation.plugin(Interchange, 'Interchange'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.magellan.js b/libraries/foundation-6/dist/plugins/foundation.magellan.js new file mode 100755 index 00000000..f4ef0b98 --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.magellan.js @@ -0,0 +1,257 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Magellan module. + * @module foundation.magellan + */ + + var Magellan = function () { + /** + * Creates a new instance of Magellan. + * @class + * @fires Magellan#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Magellan(element, options) { + _classCallCheck(this, Magellan); + + this.$element = element; + this.options = $.extend({}, Magellan.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Magellan'); + } + + /** + * Initializes the Magellan plugin and calls functions to get equalizer functioning on load. + * @private + */ + + + _createClass(Magellan, [{ + key: '_init', + value: function _init() { + var id = this.$element[0].id || Foundation.GetYoDigits(6, 'magellan'); + var _this = this; + this.$targets = $('[data-magellan-target]'); + this.$links = this.$element.find('a'); + this.$element.attr({ + 'data-resize': id, + 'data-scroll': id, + 'id': id + }); + this.$active = $(); + this.scrollPos = parseInt(window.pageYOffset, 10); + + this._events(); + } + + /** + * Calculates an array of pixel values that are the demarcation lines between locations on the page. + * Can be invoked if new elements are added or the size of a location changes. + * @function + */ + + }, { + key: 'calcPoints', + value: function calcPoints() { + var _this = this, + body = document.body, + html = document.documentElement; + + this.points = []; + this.winHeight = Math.round(Math.max(window.innerHeight, html.clientHeight)); + this.docHeight = Math.round(Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight)); + + this.$targets.each(function () { + var $tar = $(this), + pt = Math.round($tar.offset().top - _this.options.threshold); + $tar.targetPoint = pt; + _this.points.push(pt); + }); + } + + /** + * Initializes events for Magellan. + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this, + $body = $('html, body'), + opts = { + duration: _this.options.animationDuration, + easing: _this.options.animationEasing + }; + $(window).one('load', function () { + if (_this.options.deepLinking) { + if (location.hash) { + _this.scrollToLoc(location.hash); + } + } + _this.calcPoints(); + _this._updateActive(); + }); + + this.$element.on({ + 'resizeme.zf.trigger': this.reflow.bind(this), + 'scrollme.zf.trigger': this._updateActive.bind(this) + }).on('click.zf.magellan', 'a[href^="#"]', function (e) { + e.preventDefault(); + var arrival = this.getAttribute('href'); + _this.scrollToLoc(arrival); + }); + } + + /** + * Function to scroll to a given location on the page. + * @param {String} loc - a properly formatted jQuery id selector. Example: '#foo' + * @function + */ + + }, { + key: 'scrollToLoc', + value: function scrollToLoc(loc) { + var scrollPos = Math.round($(loc).offset().top - this.options.threshold / 2 - this.options.barOffset); + + $('html, body').stop(true).animate({ scrollTop: scrollPos }, this.options.animationDuration, this.options.animationEasing); + } + + /** + * Calls necessary functions to update Magellan upon DOM change + * @function + */ + + }, { + key: 'reflow', + value: function reflow() { + this.calcPoints(); + this._updateActive(); + } + + /** + * Updates the visibility of an active location link, and updates the url hash for the page, if deepLinking enabled. + * @private + * @function + * @fires Magellan#update + */ + + }, { + key: '_updateActive', + value: function _updateActive() /*evt, elem, scrollPos*/{ + var winPos = /*scrollPos ||*/parseInt(window.pageYOffset, 10), + curIdx; + + if (winPos + this.winHeight === this.docHeight) { + curIdx = this.points.length - 1; + } else if (winPos < this.points[0]) { + curIdx = 0; + } else { + var isDown = this.scrollPos < winPos, + _this = this, + curVisible = this.points.filter(function (p, i) { + return isDown ? p - _this.options.barOffset <= winPos : p - _this.options.barOffset - _this.options.threshold <= winPos; + }); + curIdx = curVisible.length ? curVisible.length - 1 : 0; + } + + this.$active.removeClass(this.options.activeClass); + this.$active = this.$links.eq(curIdx).addClass(this.options.activeClass); + + if (this.options.deepLinking) { + var hash = this.$active[0].getAttribute('href'); + if (window.history.pushState) { + window.history.pushState(null, null, hash); + } else { + window.location.hash = hash; + } + } + + this.scrollPos = winPos; + /** + * Fires when magellan is finished updating to the new active element. + * @event Magellan#update + */ + this.$element.trigger('update.zf.magellan', [this.$active]); + } + + /** + * Destroys an instance of Magellan and resets the url of the window. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.off('.zf.trigger .zf.magellan').find('.' + this.options.activeClass).removeClass(this.options.activeClass); + + if (this.options.deepLinking) { + var hash = this.$active[0].getAttribute('href'); + window.location.hash.replace(hash, ''); + } + + Foundation.unregisterPlugin(this); + } + }]); + + return Magellan; + }(); + + /** + * Default settings for plugin + */ + + + Magellan.defaults = { + /** + * Amount of time, in ms, the animated scrolling should take between locations. + * @option + * @example 500 + */ + animationDuration: 500, + /** + * Animation style to use when scrolling between locations. + * @option + * @example 'ease-in-out' + */ + animationEasing: 'linear', + /** + * Number of pixels to use as a marker for location changes. + * @option + * @example 50 + */ + threshold: 50, + /** + * Class applied to the active locations link on the magellan container. + * @option + * @example 'active' + */ + activeClass: 'active', + /** + * Allows the script to manipulate the url of the current page, and if supported, alter the history. + * @option + * @example true + */ + deepLinking: false, + /** + * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar. + * @option + * @example 25 + */ + barOffset: 0 + }; + + // Window exports + Foundation.plugin(Magellan, 'Magellan'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.offcanvas.js b/libraries/foundation-6/dist/plugins/foundation.offcanvas.js new file mode 100755 index 00000000..4350c696 --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.offcanvas.js @@ -0,0 +1,438 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * OffCanvas module. + * @module foundation.offcanvas + * @requires foundation.util.mediaQuery + * @requires foundation.util.triggers + * @requires foundation.util.motion + */ + + var OffCanvas = function () { + /** + * Creates a new instance of an off-canvas wrapper. + * @class + * @fires OffCanvas#init + * @param {Object} element - jQuery object to initialize. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function OffCanvas(element, options) { + _classCallCheck(this, OffCanvas); + + this.$element = element; + this.options = $.extend({}, OffCanvas.defaults, this.$element.data(), options); + this.$lastTrigger = $(); + this.$triggers = $(); + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'OffCanvas'); + } + + /** + * Initializes the off-canvas wrapper by adding the exit overlay (if needed). + * @function + * @private + */ + + + _createClass(OffCanvas, [{ + key: '_init', + value: function _init() { + var id = this.$element.attr('id'); + + this.$element.attr('aria-hidden', 'true'); + + // Find triggers that affect this element and add aria-expanded to them + this.$triggers = $(document).find('[data-open="' + id + '"], [data-close="' + id + '"], [data-toggle="' + id + '"]').attr('aria-expanded', 'false').attr('aria-controls', id); + + // Add a close trigger over the body if necessary + if (this.options.closeOnClick) { + if ($('.js-off-canvas-exit').length) { + this.$exiter = $('.js-off-canvas-exit'); + } else { + var exiter = document.createElement('div'); + exiter.setAttribute('class', 'js-off-canvas-exit'); + $('[data-off-canvas-content]').append(exiter); + + this.$exiter = $(exiter); + } + } + + this.options.isRevealed = this.options.isRevealed || new RegExp(this.options.revealClass, 'g').test(this.$element[0].className); + + if (this.options.isRevealed) { + this.options.revealOn = this.options.revealOn || this.$element[0].className.match(/(reveal-for-medium|reveal-for-large)/g)[0].split('-')[2]; + this._setMQChecker(); + } + if (!this.options.transitionTime) { + this.options.transitionTime = parseFloat(window.getComputedStyle($('[data-off-canvas-wrapper]')[0]).transitionDuration) * 1000; + } + } + + /** + * Adds event handlers to the off-canvas wrapper and the exit overlay. + * @function + * @private + */ + + }, { + key: '_events', + value: function _events() { + this.$element.off('.zf.trigger .zf.offcanvas').on({ + 'open.zf.trigger': this.open.bind(this), + 'close.zf.trigger': this.close.bind(this), + 'toggle.zf.trigger': this.toggle.bind(this), + 'keydown.zf.offcanvas': this._handleKeyboard.bind(this) + }); + + if (this.options.closeOnClick && this.$exiter.length) { + this.$exiter.on({ 'click.zf.offcanvas': this.close.bind(this) }); + } + } + + /** + * Applies event listener for elements that will reveal at certain breakpoints. + * @private + */ + + }, { + key: '_setMQChecker', + value: function _setMQChecker() { + var _this = this; + + $(window).on('changed.zf.mediaquery', function () { + if (Foundation.MediaQuery.atLeast(_this.options.revealOn)) { + _this.reveal(true); + } else { + _this.reveal(false); + } + }).one('load.zf.offcanvas', function () { + if (Foundation.MediaQuery.atLeast(_this.options.revealOn)) { + _this.reveal(true); + } + }); + } + + /** + * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open. + * @param {Boolean} isRevealed - true if element should be revealed. + * @function + */ + + }, { + key: 'reveal', + value: function reveal(isRevealed) { + var $closer = this.$element.find('[data-close]'); + if (isRevealed) { + this.close(); + this.isRevealed = true; + // if (!this.options.forceTop) { + // var scrollPos = parseInt(window.pageYOffset); + // this.$element[0].style.transform = 'translate(0,' + scrollPos + 'px)'; + // } + // if (this.options.isSticky) { this._stick(); } + this.$element.off('open.zf.trigger toggle.zf.trigger'); + if ($closer.length) { + $closer.hide(); + } + } else { + this.isRevealed = false; + // if (this.options.isSticky || !this.options.forceTop) { + // this.$element[0].style.transform = ''; + // $(window).off('scroll.zf.offcanvas'); + // } + this.$element.on({ + 'open.zf.trigger': this.open.bind(this), + 'toggle.zf.trigger': this.toggle.bind(this) + }); + if ($closer.length) { + $closer.show(); + } + } + } + + /** + * Opens the off-canvas menu. + * @function + * @param {Object} event - Event object passed from listener. + * @param {jQuery} trigger - element that triggered the off-canvas to open. + * @fires OffCanvas#opened + */ + + }, { + key: 'open', + value: function open(event, trigger) { + if (this.$element.hasClass('is-open') || this.isRevealed) { + return; + } + var _this = this, + $body = $(document.body); + + if (this.options.forceTop) { + $('body').scrollTop(0); + } + // window.pageYOffset = 0; + + // if (!this.options.forceTop) { + // var scrollPos = parseInt(window.pageYOffset); + // this.$element[0].style.transform = 'translate(0,' + scrollPos + 'px)'; + // if (this.$exiter.length) { + // this.$exiter[0].style.transform = 'translate(0,' + scrollPos + 'px)'; + // } + // } + /** + * Fires when the off-canvas menu opens. + * @event OffCanvas#opened + */ + Foundation.Move(this.options.transitionTime, this.$element, function () { + $('[data-off-canvas-wrapper]').addClass('is-off-canvas-open is-open-' + _this.options.position); + + _this.$element.addClass('is-open'); + + // if (_this.options.isSticky) { + // _this._stick(); + // } + }); + + this.$triggers.attr('aria-expanded', 'true'); + this.$element.attr('aria-hidden', 'false').trigger('opened.zf.offcanvas'); + + if (this.options.closeOnClick) { + this.$exiter.addClass('is-visible'); + } + + if (trigger) { + this.$lastTrigger = trigger; + } + + if (this.options.autoFocus) { + this.$element.one(Foundation.transitionend(this.$element), function () { + _this.$element.find('a, button').eq(0).focus(); + }); + } + + if (this.options.trapFocus) { + $('[data-off-canvas-content]').attr('tabindex', '-1'); + this._trapFocus(); + } + } + + /** + * Traps focus within the offcanvas on open. + * @private + */ + + }, { + key: '_trapFocus', + value: function _trapFocus() { + var focusable = Foundation.Keyboard.findFocusable(this.$element), + first = focusable.eq(0), + last = focusable.eq(-1); + + focusable.off('.zf.offcanvas').on('keydown.zf.offcanvas', function (e) { + if (e.which === 9 || e.keycode === 9) { + if (e.target === last[0] && !e.shiftKey) { + e.preventDefault(); + first.focus(); + } + if (e.target === first[0] && e.shiftKey) { + e.preventDefault(); + last.focus(); + } + } + }); + } + + /** + * Allows the offcanvas to appear sticky utilizing translate properties. + * @private + */ + // OffCanvas.prototype._stick = function() { + // var elStyle = this.$element[0].style; + // + // if (this.options.closeOnClick) { + // var exitStyle = this.$exiter[0].style; + // } + // + // $(window).on('scroll.zf.offcanvas', function(e) { + // console.log(e); + // var pageY = window.pageYOffset; + // elStyle.transform = 'translate(0,' + pageY + 'px)'; + // if (exitStyle !== undefined) { exitStyle.transform = 'translate(0,' + pageY + 'px)'; } + // }); + // // this.$element.trigger('stuck.zf.offcanvas'); + // }; + /** + * Closes the off-canvas menu. + * @function + * @param {Function} cb - optional cb to fire after closure. + * @fires OffCanvas#closed + */ + + }, { + key: 'close', + value: function close(cb) { + if (!this.$element.hasClass('is-open') || this.isRevealed) { + return; + } + + var _this = this; + + // Foundation.Move(this.options.transitionTime, this.$element, function() { + $('[data-off-canvas-wrapper]').removeClass('is-off-canvas-open is-open-' + _this.options.position); + _this.$element.removeClass('is-open'); + // Foundation._reflow(); + // }); + this.$element.attr('aria-hidden', 'true') + /** + * Fires when the off-canvas menu opens. + * @event OffCanvas#closed + */ + .trigger('closed.zf.offcanvas'); + // if (_this.options.isSticky || !_this.options.forceTop) { + // setTimeout(function() { + // _this.$element[0].style.transform = ''; + // $(window).off('scroll.zf.offcanvas'); + // }, this.options.transitionTime); + // } + if (this.options.closeOnClick) { + this.$exiter.removeClass('is-visible'); + } + + this.$triggers.attr('aria-expanded', 'false'); + if (this.options.trapFocus) { + $('[data-off-canvas-content]').removeAttr('tabindex'); + } + } + + /** + * Toggles the off-canvas menu open or closed. + * @function + * @param {Object} event - Event object passed from listener. + * @param {jQuery} trigger - element that triggered the off-canvas to open. + */ + + }, { + key: 'toggle', + value: function toggle(event, trigger) { + if (this.$element.hasClass('is-open')) { + this.close(event, trigger); + } else { + this.open(event, trigger); + } + } + + /** + * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu. + * @function + * @private + */ + + }, { + key: '_handleKeyboard', + value: function _handleKeyboard(event) { + if (event.which !== 27) return; + + event.stopPropagation(); + event.preventDefault(); + this.close(); + this.$lastTrigger.focus(); + } + + /** + * Destroys the offcanvas plugin. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.close(); + this.$element.off('.zf.trigger .zf.offcanvas'); + this.$exiter.off('.zf.offcanvas'); + + Foundation.unregisterPlugin(this); + } + }]); + + return OffCanvas; + }(); + + OffCanvas.defaults = { + /** + * Allow the user to click outside of the menu to close it. + * @option + * @example true + */ + closeOnClick: true, + + /** + * Amount of time in ms the open and close transition requires. If none selected, pulls from body style. + * @option + * @example 500 + */ + transitionTime: 0, + + /** + * Direction the offcanvas opens from. Determines class applied to body. + * @option + * @example left + */ + position: 'left', + + /** + * Force the page to scroll to top on open. + * @option + * @example true + */ + forceTop: true, + + /** + * Allow the offcanvas to remain open for certain breakpoints. + * @option + * @example false + */ + isRevealed: false, + + /** + * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option. + * @option + * @example reveal-for-large + */ + revealOn: null, + + /** + * Force focus to the offcanvas on open. If true, will focus the opening trigger on close. + * @option + * @example true + */ + autoFocus: true, + + /** + * Class used to force an offcanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`. + * @option + * TODO improve the regex testing for this. + * @example reveal-for-large + */ + revealClass: 'reveal-for-', + + /** + * Triggers optional focus trapping when opening an offcanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes. + * @option + * @example true + */ + trapFocus: false + }; + + // Window exports + Foundation.plugin(OffCanvas, 'OffCanvas'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.orbit.js b/libraries/foundation-6/dist/plugins/foundation.orbit.js new file mode 100755 index 00000000..7ecae386 --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.orbit.js @@ -0,0 +1,484 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Orbit module. + * @module foundation.orbit + * @requires foundation.util.keyboard + * @requires foundation.util.motion + * @requires foundation.util.timerAndImageLoader + * @requires foundation.util.touch + */ + + var Orbit = function () { + /** + * Creates a new instance of an orbit carousel. + * @class + * @param {jQuery} element - jQuery object to make into an Orbit Carousel. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Orbit(element, options) { + _classCallCheck(this, Orbit); + + this.$element = element; + this.options = $.extend({}, Orbit.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Orbit'); + Foundation.Keyboard.register('Orbit', { + 'ltr': { + 'ARROW_RIGHT': 'next', + 'ARROW_LEFT': 'previous' + }, + 'rtl': { + 'ARROW_LEFT': 'next', + 'ARROW_RIGHT': 'previous' + } + }); + } + + /** + * Initializes the plugin by creating jQuery collections, setting attributes, and starting the animation. + * @function + * @private + */ + + + _createClass(Orbit, [{ + key: '_init', + value: function _init() { + this.$wrapper = this.$element.find('.' + this.options.containerClass); + this.$slides = this.$element.find('.' + this.options.slideClass); + var $images = this.$element.find('img'), + initActive = this.$slides.filter('.is-active'); + + if (!initActive.length) { + this.$slides.eq(0).addClass('is-active'); + } + + if (!this.options.useMUI) { + this.$slides.addClass('no-motionui'); + } + + if ($images.length) { + Foundation.onImagesLoaded($images, this._prepareForOrbit.bind(this)); + } else { + this._prepareForOrbit(); //hehe + } + + if (this.options.bullets) { + this._loadBullets(); + } + + this._events(); + + if (this.options.autoPlay && this.$slides.length > 1) { + this.geoSync(); + } + + if (this.options.accessible) { + // allow wrapper to be focusable to enable arrow navigation + this.$wrapper.attr('tabindex', 0); + } + } + + /** + * Creates a jQuery collection of bullets, if they are being used. + * @function + * @private + */ + + }, { + key: '_loadBullets', + value: function _loadBullets() { + this.$bullets = this.$element.find('.' + this.options.boxOfBullets).find('button'); + } + + /** + * Sets a `timer` object on the orbit, and starts the counter for the next slide. + * @function + */ + + }, { + key: 'geoSync', + value: function geoSync() { + var _this = this; + this.timer = new Foundation.Timer(this.$element, { + duration: this.options.timerDelay, + infinite: false + }, function () { + _this.changeSlide(true); + }); + this.timer.start(); + } + + /** + * Sets wrapper and slide heights for the orbit. + * @function + * @private + */ + + }, { + key: '_prepareForOrbit', + value: function _prepareForOrbit() { + var _this = this; + this._setWrapperHeight(function (max) { + _this._setSlideHeight(max); + }); + } + + /** + * Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height. + * @function + * @private + * @param {Function} cb - a callback function to fire when complete. + */ + + }, { + key: '_setWrapperHeight', + value: function _setWrapperHeight(cb) { + //rewrite this to `for` loop + var max = 0, + temp, + counter = 0; + + this.$slides.each(function () { + temp = this.getBoundingClientRect().height; + $(this).attr('data-slide', counter); + + if (counter) { + //if not the first slide, set css position and display property + $(this).css({ 'position': 'relative', 'display': 'none' }); + } + max = temp > max ? temp : max; + counter++; + }); + + if (counter === this.$slides.length) { + this.$wrapper.css({ 'height': max }); //only change the wrapper height property once. + cb(max); //fire callback with max height dimension. + } + } + + /** + * Sets the max-height of each slide. + * @function + * @private + */ + + }, { + key: '_setSlideHeight', + value: function _setSlideHeight(height) { + this.$slides.each(function () { + $(this).css('max-height', height); + }); + } + + /** + * Adds event listeners to basically everything within the element. + * @function + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + + //*************************************** + //**Now using custom event - thanks to:** + //** Yohai Ararat of Toronto ** + //*************************************** + if (this.$slides.length > 1) { + + if (this.options.swipe) { + this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit').on('swipeleft.zf.orbit', function (e) { + e.preventDefault(); + _this.changeSlide(true); + }).on('swiperight.zf.orbit', function (e) { + e.preventDefault(); + _this.changeSlide(false); + }); + } + //*************************************** + + if (this.options.autoPlay) { + this.$slides.on('click.zf.orbit', function () { + _this.$element.data('clickedOn', _this.$element.data('clickedOn') ? false : true); + _this.timer[_this.$element.data('clickedOn') ? 'pause' : 'start'](); + }); + + if (this.options.pauseOnHover) { + this.$element.on('mouseenter.zf.orbit', function () { + _this.timer.pause(); + }).on('mouseleave.zf.orbit', function () { + if (!_this.$element.data('clickedOn')) { + _this.timer.start(); + } + }); + } + } + + if (this.options.navButtons) { + var $controls = this.$element.find('.' + this.options.nextClass + ', .' + this.options.prevClass); + $controls.attr('tabindex', 0) + //also need to handle enter/return and spacebar key presses + .on('click.zf.orbit touchend.zf.orbit', function (e) { + e.preventDefault(); + _this.changeSlide($(this).hasClass(_this.options.nextClass)); + }); + } + + if (this.options.bullets) { + this.$bullets.on('click.zf.orbit touchend.zf.orbit', function () { + if (/is-active/g.test(this.className)) { + return false; + } //if this is active, kick out of function. + var idx = $(this).data('slide'), + ltr = idx > _this.$slides.filter('.is-active').data('slide'), + $slide = _this.$slides.eq(idx); + + _this.changeSlide(ltr, $slide, idx); + }); + } + + this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function (e) { + // handle keyboard event with keyboard util + Foundation.Keyboard.handleKey(e, 'Orbit', { + next: function () { + _this.changeSlide(true); + }, + previous: function () { + _this.changeSlide(false); + }, + handled: function () { + // if bullet is focused, make sure focus moves + if ($(e.target).is(_this.$bullets)) { + _this.$bullets.filter('.is-active').focus(); + } + } + }); + }); + } + } + + /** + * Changes the current slide to a new one. + * @function + * @param {Boolean} isLTR - flag if the slide should move left to right. + * @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected. + * @param {Number} idx - the index of the new slide in its collection, if one chosen. + * @fires Orbit#slidechange + */ + + }, { + key: 'changeSlide', + value: function changeSlide(isLTR, chosenSlide, idx) { + var $curSlide = this.$slides.filter('.is-active').eq(0); + + if (/mui/g.test($curSlide[0].className)) { + return false; + } //if the slide is currently animating, kick out of the function + + var $firstSlide = this.$slides.first(), + $lastSlide = this.$slides.last(), + dirIn = isLTR ? 'Right' : 'Left', + dirOut = isLTR ? 'Left' : 'Right', + _this = this, + $newSlide; + + if (!chosenSlide) { + //most of the time, this will be auto played or clicked from the navButtons. + $newSlide = isLTR ? //if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!! + this.options.infiniteWrap ? $curSlide.next('.' + this.options.slideClass).length ? $curSlide.next('.' + this.options.slideClass) : $firstSlide : $curSlide.next('.' + this.options.slideClass) : //pick next slide if moving left to right + this.options.infiniteWrap ? $curSlide.prev('.' + this.options.slideClass).length ? $curSlide.prev('.' + this.options.slideClass) : $lastSlide : $curSlide.prev('.' + this.options.slideClass); //pick prev slide if moving right to left + } else { + $newSlide = chosenSlide; + } + + if ($newSlide.length) { + if (this.options.bullets) { + idx = idx || this.$slides.index($newSlide); //grab index to update bullets + this._updateBullets(idx); + } + + if (this.options.useMUI) { + Foundation.Motion.animateIn($newSlide.addClass('is-active').css({ 'position': 'absolute', 'top': 0 }), this.options['animInFrom' + dirIn], function () { + $newSlide.css({ 'position': 'relative', 'display': 'block' }).attr('aria-live', 'polite'); + }); + + Foundation.Motion.animateOut($curSlide.removeClass('is-active'), this.options['animOutTo' + dirOut], function () { + $curSlide.removeAttr('aria-live'); + if (_this.options.autoPlay && !_this.timer.isPaused) { + _this.timer.restart(); + } + //do stuff? + }); + } else { + $curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide(); + $newSlide.addClass('is-active is-in').attr('aria-live', 'polite').show(); + if (this.options.autoPlay && !this.timer.isPaused) { + this.timer.restart(); + } + } + /** + * Triggers when the slide has finished animating in. + * @event Orbit#slidechange + */ + this.$element.trigger('slidechange.zf.orbit', [$newSlide]); + } + } + + /** + * Updates the active state of the bullets, if displayed. + * @function + * @private + * @param {Number} idx - the index of the current slide. + */ + + }, { + key: '_updateBullets', + value: function _updateBullets(idx) { + var $oldBullet = this.$element.find('.' + this.options.boxOfBullets).find('.is-active').removeClass('is-active').blur(), + span = $oldBullet.find('span:last').detach(), + $newBullet = this.$bullets.eq(idx).addClass('is-active').append(span); + } + + /** + * Destroys the carousel and hides the element. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.off('.zf.orbit').find('*').off('.zf.orbit').end().hide(); + Foundation.unregisterPlugin(this); + } + }]); + + return Orbit; + }(); + + Orbit.defaults = { + /** + * Tells the JS to look for and loadBullets. + * @option + * @example true + */ + bullets: true, + /** + * Tells the JS to apply event listeners to nav buttons + * @option + * @example true + */ + navButtons: true, + /** + * motion-ui animation class to apply + * @option + * @example 'slide-in-right' + */ + animInFromRight: 'slide-in-right', + /** + * motion-ui animation class to apply + * @option + * @example 'slide-out-right' + */ + animOutToRight: 'slide-out-right', + /** + * motion-ui animation class to apply + * @option + * @example 'slide-in-left' + * + */ + animInFromLeft: 'slide-in-left', + /** + * motion-ui animation class to apply + * @option + * @example 'slide-out-left' + */ + animOutToLeft: 'slide-out-left', + /** + * Allows Orbit to automatically animate on page load. + * @option + * @example true + */ + autoPlay: true, + /** + * Amount of time, in ms, between slide transitions + * @option + * @example 5000 + */ + timerDelay: 5000, + /** + * Allows Orbit to infinitely loop through the slides + * @option + * @example true + */ + infiniteWrap: true, + /** + * Allows the Orbit slides to bind to swipe events for mobile, requires an additional util library + * @option + * @example true + */ + swipe: true, + /** + * Allows the timing function to pause animation on hover. + * @option + * @example true + */ + pauseOnHover: true, + /** + * Allows Orbit to bind keyboard events to the slider, to animate frames with arrow keys + * @option + * @example true + */ + accessible: true, + /** + * Class applied to the container of Orbit + * @option + * @example 'orbit-container' + */ + containerClass: 'orbit-container', + /** + * Class applied to individual slides. + * @option + * @example 'orbit-slide' + */ + slideClass: 'orbit-slide', + /** + * Class applied to the bullet container. You're welcome. + * @option + * @example 'orbit-bullets' + */ + boxOfBullets: 'orbit-bullets', + /** + * Class applied to the `next` navigation button. + * @option + * @example 'orbit-next' + */ + nextClass: 'orbit-next', + /** + * Class applied to the `previous` navigation button. + * @option + * @example 'orbit-previous' + */ + prevClass: 'orbit-previous', + /** + * Boolean to flag the js to use motion ui classes or not. Default to true for backwards compatability. + * @option + * @example true + */ + useMUI: true + }; + + // Window exports + Foundation.plugin(Orbit, 'Orbit'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.responsiveMenu.js b/libraries/foundation-6/dist/plugins/foundation.responsiveMenu.js new file mode 100755 index 00000000..8ba0f7b0 --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.responsiveMenu.js @@ -0,0 +1,171 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * ResponsiveMenu module. + * @module foundation.responsiveMenu + * @requires foundation.util.triggers + * @requires foundation.util.mediaQuery + * @requires foundation.util.accordionMenu + * @requires foundation.util.drilldown + * @requires foundation.util.dropdown-menu + */ + + var ResponsiveMenu = function () { + /** + * Creates a new instance of a responsive menu. + * @class + * @fires ResponsiveMenu#init + * @param {jQuery} element - jQuery object to make into a dropdown menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function ResponsiveMenu(element, options) { + _classCallCheck(this, ResponsiveMenu); + + this.$element = $(element); + this.rules = this.$element.data('responsive-menu'); + this.currentMq = null; + this.currentPlugin = null; + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'ResponsiveMenu'); + } + + /** + * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element. + * @function + * @private + */ + + + _createClass(ResponsiveMenu, [{ + key: '_init', + value: function _init() { + // The first time an Interchange plugin is initialized, this.rules is converted from a string of "classes" to an object of rules + if (typeof this.rules === 'string') { + var rulesTree = {}; + + // Parse rules from "classes" pulled from data attribute + var rules = this.rules.split(' '); + + // Iterate through every rule found + for (var i = 0; i < rules.length; i++) { + var rule = rules[i].split('-'); + var ruleSize = rule.length > 1 ? rule[0] : 'small'; + var rulePlugin = rule.length > 1 ? rule[1] : rule[0]; + + if (MenuPlugins[rulePlugin] !== null) { + rulesTree[ruleSize] = MenuPlugins[rulePlugin]; + } + } + + this.rules = rulesTree; + } + + if (!$.isEmptyObject(this.rules)) { + this._checkMediaQueries(); + } + } + + /** + * Initializes events for the Menu. + * @function + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + + $(window).on('changed.zf.mediaquery', function () { + _this._checkMediaQueries(); + }); + // $(window).on('resize.zf.ResponsiveMenu', function() { + // _this._checkMediaQueries(); + // }); + } + + /** + * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out. + * @function + * @private + */ + + }, { + key: '_checkMediaQueries', + value: function _checkMediaQueries() { + var matchedMq, + _this = this; + // Iterate through each rule and find the last matching rule + $.each(this.rules, function (key) { + if (Foundation.MediaQuery.atLeast(key)) { + matchedMq = key; + } + }); + + // No match? No dice + if (!matchedMq) return; + + // Plugin already initialized? We good + if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return; + + // Remove existing plugin-specific CSS classes + $.each(MenuPlugins, function (key, value) { + _this.$element.removeClass(value.cssClass); + }); + + // Add the CSS class for the new plugin + this.$element.addClass(this.rules[matchedMq].cssClass); + + // Create an instance of the new plugin + if (this.currentPlugin) this.currentPlugin.destroy(); + this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {}); + } + + /** + * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.currentPlugin.destroy(); + $(window).off('.zf.ResponsiveMenu'); + Foundation.unregisterPlugin(this); + } + }]); + + return ResponsiveMenu; + }(); + + ResponsiveMenu.defaults = {}; + + // The plugin matches the plugin classes with these plugin instances. + var MenuPlugins = { + dropdown: { + cssClass: 'dropdown', + plugin: Foundation._plugins['dropdown-menu'] || null + }, + drilldown: { + cssClass: 'drilldown', + plugin: Foundation._plugins['drilldown'] || null + }, + accordion: { + cssClass: 'accordion-menu', + plugin: Foundation._plugins['accordion-menu'] || null + } + }; + + // Window exports + Foundation.plugin(ResponsiveMenu, 'ResponsiveMenu'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.responsiveToggle.js b/libraries/foundation-6/dist/plugins/foundation.responsiveToggle.js new file mode 100755 index 00000000..30360604 --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.responsiveToggle.js @@ -0,0 +1,142 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * ResponsiveToggle module. + * @module foundation.responsiveToggle + * @requires foundation.util.mediaQuery + */ + + var ResponsiveToggle = function () { + /** + * Creates a new instance of Tab Bar. + * @class + * @fires ResponsiveToggle#init + * @param {jQuery} element - jQuery object to attach tab bar functionality to. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function ResponsiveToggle(element, options) { + _classCallCheck(this, ResponsiveToggle); + + this.$element = $(element); + this.options = $.extend({}, ResponsiveToggle.defaults, this.$element.data(), options); + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'ResponsiveToggle'); + } + + /** + * Initializes the tab bar by finding the target element, toggling element, and running update(). + * @function + * @private + */ + + + _createClass(ResponsiveToggle, [{ + key: '_init', + value: function _init() { + var targetID = this.$element.data('responsive-toggle'); + if (!targetID) { + console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.'); + } + + this.$targetMenu = $('#' + targetID); + this.$toggler = this.$element.find('[data-toggle]'); + + this._update(); + } + + /** + * Adds necessary event handlers for the tab bar to work. + * @function + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + + this._updateMqHandler = this._update.bind(this); + + $(window).on('changed.zf.mediaquery', this._updateMqHandler); + + this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this)); + } + + /** + * Checks the current media query to determine if the tab bar should be visible or hidden. + * @function + * @private + */ + + }, { + key: '_update', + value: function _update() { + // Mobile + if (!Foundation.MediaQuery.atLeast(this.options.hideFor)) { + this.$element.show(); + this.$targetMenu.hide(); + } + + // Desktop + else { + this.$element.hide(); + this.$targetMenu.show(); + } + } + + /** + * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it. + * @function + * @fires ResponsiveToggle#toggled + */ + + }, { + key: 'toggleMenu', + value: function toggleMenu() { + if (!Foundation.MediaQuery.atLeast(this.options.hideFor)) { + this.$targetMenu.toggle(0); + + /** + * Fires when the element attached to the tab bar toggles. + * @event ResponsiveToggle#toggled + */ + this.$element.trigger('toggled.zf.responsiveToggle'); + } + } + }, { + key: 'destroy', + value: function destroy() { + this.$element.off('.zf.responsiveToggle'); + this.$toggler.off('.zf.responsiveToggle'); + + $(window).off('changed.zf.mediaquery', this._updateMqHandler); + + Foundation.unregisterPlugin(this); + } + }]); + + return ResponsiveToggle; + }(); + + ResponsiveToggle.defaults = { + /** + * The breakpoint after which the menu is always shown, and the tab bar is hidden. + * @option + * @example 'medium' + */ + hideFor: 'medium' + }; + + // Window exports + Foundation.plugin(ResponsiveToggle, 'ResponsiveToggle'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.reveal.js b/libraries/foundation-6/dist/plugins/foundation.reveal.js new file mode 100755 index 00000000..21ed625d --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.reveal.js @@ -0,0 +1,623 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Reveal module. + * @module foundation.reveal + * @requires foundation.util.keyboard + * @requires foundation.util.box + * @requires foundation.util.triggers + * @requires foundation.util.mediaQuery + * @requires foundation.util.motion if using animations + */ + + var Reveal = function () { + /** + * Creates a new instance of Reveal. + * @class + * @param {jQuery} element - jQuery object to use for the modal. + * @param {Object} options - optional parameters. + */ + + function Reveal(element, options) { + _classCallCheck(this, Reveal); + + this.$element = element; + this.options = $.extend({}, Reveal.defaults, this.$element.data(), options); + this._init(); + + Foundation.registerPlugin(this, 'Reveal'); + Foundation.Keyboard.register('Reveal', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ESCAPE': 'close', + 'TAB': 'tab_forward', + 'SHIFT_TAB': 'tab_backward' + }); + } + + /** + * Initializes the modal by adding the overlay and close buttons, (if selected). + * @private + */ + + + _createClass(Reveal, [{ + key: '_init', + value: function _init() { + this.id = this.$element.attr('id'); + this.isActive = false; + this.cached = { mq: Foundation.MediaQuery.current }; + this.isMobile = mobileSniff(); + + this.$anchor = $('[data-open="' + this.id + '"]').length ? $('[data-open="' + this.id + '"]') : $('[data-toggle="' + this.id + '"]'); + this.$anchor.attr({ + 'aria-controls': this.id, + 'aria-haspopup': true, + 'tabindex': 0 + }); + + if (this.options.fullScreen || this.$element.hasClass('full')) { + this.options.fullScreen = true; + this.options.overlay = false; + } + if (this.options.overlay && !this.$overlay) { + this.$overlay = this._makeOverlay(this.id); + } + + this.$element.attr({ + 'role': 'dialog', + 'aria-hidden': true, + 'data-yeti-box': this.id, + 'data-resize': this.id + }); + + if (this.$overlay) { + this.$element.detach().appendTo(this.$overlay); + } else { + this.$element.detach().appendTo($('body')); + this.$element.addClass('without-overlay'); + } + this._events(); + if (this.options.deepLink && window.location.hash === '#' + this.id) { + $(window).one('load.zf.reveal', this.open.bind(this)); + } + } + + /** + * Creates an overlay div to display behind the modal. + * @private + */ + + }, { + key: '_makeOverlay', + value: function _makeOverlay(id) { + var $overlay = $('<div></div>').addClass('reveal-overlay').appendTo('body'); + return $overlay; + } + + /** + * Updates position of modal + * TODO: Figure out if we actually need to cache these values or if it doesn't matter + * @private + */ + + }, { + key: '_updatePosition', + value: function _updatePosition() { + var width = this.$element.outerWidth(); + var outerWidth = $(window).width(); + var height = this.$element.outerHeight(); + var outerHeight = $(window).height(); + var left, top; + if (this.options.hOffset === 'auto') { + left = parseInt((outerWidth - width) / 2, 10); + } else { + left = parseInt(this.options.hOffset, 10); + } + if (this.options.vOffset === 'auto') { + if (height > outerHeight) { + top = parseInt(Math.min(100, outerHeight / 10), 10); + } else { + top = parseInt((outerHeight - height) / 4, 10); + } + } else { + top = parseInt(this.options.vOffset, 10); + } + this.$element.css({ top: top + 'px' }); + // only worry about left if we don't have an overlay or we havea horizontal offset, + // otherwise we're perfectly in the middle + if (!this.$overlay || this.options.hOffset !== 'auto') { + this.$element.css({ left: left + 'px' }); + this.$element.css({ margin: '0px' }); + } + } + + /** + * Adds event handlers for the modal. + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this2 = this; + + var _this = this; + + this.$element.on({ + 'open.zf.trigger': this.open.bind(this), + 'close.zf.trigger': function (event, $element) { + if (event.target === _this.$element[0] || $(event.target).parents('[data-closable]')[0] === $element) { + // only close reveal when it's explicitly called + return _this2.close.apply(_this2); + } + }, + 'toggle.zf.trigger': this.toggle.bind(this), + 'resizeme.zf.trigger': function () { + _this._updatePosition(); + } + }); + + if (this.$anchor.length) { + this.$anchor.on('keydown.zf.reveal', function (e) { + if (e.which === 13 || e.which === 32) { + e.stopPropagation(); + e.preventDefault(); + _this.open(); + } + }); + } + + if (this.options.closeOnClick && this.options.overlay) { + this.$overlay.off('.zf.reveal').on('click.zf.reveal', function (e) { + if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)) { + return; + } + _this.close(); + }); + } + if (this.options.deepLink) { + $(window).on('popstate.zf.reveal:' + this.id, this._handleState.bind(this)); + } + } + + /** + * Handles modal methods on back/forward button clicks or any other event that triggers popstate. + * @private + */ + + }, { + key: '_handleState', + value: function _handleState(e) { + if (window.location.hash === '#' + this.id && !this.isActive) { + this.open(); + } else { + this.close(); + } + } + + /** + * Opens the modal controlled by `this.$anchor`, and closes all others by default. + * @function + * @fires Reveal#closeme + * @fires Reveal#open + */ + + }, { + key: 'open', + value: function open() { + var _this3 = this; + + if (this.options.deepLink) { + var hash = '#' + this.id; + + if (window.history.pushState) { + window.history.pushState(null, null, hash); + } else { + window.location.hash = hash; + } + } + + this.isActive = true; + + // Make elements invisible, but remove display: none so we can get size and positioning + this.$element.css({ 'visibility': 'hidden' }).show().scrollTop(0); + if (this.options.overlay) { + this.$overlay.css({ 'visibility': 'hidden' }).show(); + } + + this._updatePosition(); + + this.$element.hide().css({ 'visibility': '' }); + + if (this.$overlay) { + this.$overlay.css({ 'visibility': '' }).hide(); + if (this.$element.hasClass('fast')) { + this.$overlay.addClass('fast'); + } else if (this.$element.hasClass('slow')) { + this.$overlay.addClass('slow'); + } + } + + if (!this.options.multipleOpened) { + /** + * Fires immediately before the modal opens. + * Closes any other modals that are currently open + * @event Reveal#closeme + */ + this.$element.trigger('closeme.zf.reveal', this.id); + } + // Motion UI method of reveal + if (this.options.animationIn) { + var _this; + + (function () { + var afterAnimationFocus = function () { + _this.$element.attr({ + 'aria-hidden': false, + 'tabindex': -1 + }).focus(); + console.log('focus'); + }; + + _this = _this3; + + if (_this3.options.overlay) { + Foundation.Motion.animateIn(_this3.$overlay, 'fade-in'); + } + Foundation.Motion.animateIn(_this3.$element, _this3.options.animationIn, function () { + _this3.focusableElements = Foundation.Keyboard.findFocusable(_this3.$element); + afterAnimationFocus(); + }); + })(); + } + // jQuery method of reveal + else { + if (this.options.overlay) { + this.$overlay.show(0); + } + this.$element.show(this.options.showDelay); + } + + // handle accessibility + this.$element.attr({ + 'aria-hidden': false, + 'tabindex': -1 + }).focus(); + + /** + * Fires when the modal has successfully opened. + * @event Reveal#open + */ + this.$element.trigger('open.zf.reveal'); + + if (this.isMobile) { + this.originalScrollPos = window.pageYOffset; + $('html, body').addClass('is-reveal-open'); + } else { + $('body').addClass('is-reveal-open'); + } + + setTimeout(function () { + _this3._extraHandlers(); + }, 0); + } + + /** + * Adds extra event handlers for the body and window if necessary. + * @private + */ + + }, { + key: '_extraHandlers', + value: function _extraHandlers() { + var _this = this; + this.focusableElements = Foundation.Keyboard.findFocusable(this.$element); + + if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) { + $('body').on('click.zf.reveal', function (e) { + if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)) { + return; + } + _this.close(); + }); + } + + if (this.options.closeOnEsc) { + $(window).on('keydown.zf.reveal', function (e) { + Foundation.Keyboard.handleKey(e, 'Reveal', { + close: function () { + if (_this.options.closeOnEsc) { + _this.close(); + _this.$anchor.focus(); + } + } + }); + }); + } + + // lock focus within modal while tabbing + this.$element.on('keydown.zf.reveal', function (e) { + var $target = $(this); + // handle keyboard event with keyboard util + Foundation.Keyboard.handleKey(e, 'Reveal', { + tab_forward: function () { + if (_this.$element.find(':focus').is(_this.focusableElements.eq(-1))) { + // left modal downwards, setting focus to first element + _this.focusableElements.eq(0).focus(); + return true; + } + if (_this.focusableElements.length === 0) { + // no focusable elements inside the modal at all, prevent tabbing in general + return true; + } + }, + tab_backward: function () { + if (_this.$element.find(':focus').is(_this.focusableElements.eq(0)) || _this.$element.is(':focus')) { + // left modal upwards, setting focus to last element + _this.focusableElements.eq(-1).focus(); + return true; + } + if (_this.focusableElements.length === 0) { + // no focusable elements inside the modal at all, prevent tabbing in general + return true; + } + }, + open: function () { + if (_this.$element.find(':focus').is(_this.$element.find('[data-close]'))) { + setTimeout(function () { + // set focus back to anchor if close button has been activated + _this.$anchor.focus(); + }, 1); + } else if ($target.is(_this.focusableElements)) { + // dont't trigger if acual element has focus (i.e. inputs, links, ...) + _this.open(); + } + }, + close: function () { + if (_this.options.closeOnEsc) { + _this.close(); + _this.$anchor.focus(); + } + }, + handled: function (preventDefault) { + if (preventDefault) { + e.preventDefault(); + } + } + }); + }); + } + + /** + * Closes the modal. + * @function + * @fires Reveal#closed + */ + + }, { + key: 'close', + value: function close() { + if (!this.isActive || !this.$element.is(':visible')) { + return false; + } + var _this = this; + + // Motion UI method of hiding + if (this.options.animationOut) { + if (this.options.overlay) { + Foundation.Motion.animateOut(this.$overlay, 'fade-out', finishUp); + } else { + finishUp(); + } + + Foundation.Motion.animateOut(this.$element, this.options.animationOut); + } + // jQuery method of hiding + else { + if (this.options.overlay) { + this.$overlay.hide(0, finishUp); + } else { + finishUp(); + } + + this.$element.hide(this.options.hideDelay); + } + + // Conditionals to remove extra event listeners added on open + if (this.options.closeOnEsc) { + $(window).off('keydown.zf.reveal'); + } + + if (!this.options.overlay && this.options.closeOnClick) { + $('body').off('click.zf.reveal'); + } + + this.$element.off('keydown.zf.reveal'); + + function finishUp() { + if (_this.isMobile) { + $('html, body').removeClass('is-reveal-open'); + if (_this.originalScrollPos) { + $('body').scrollTop(_this.originalScrollPos); + _this.originalScrollPos = null; + } + } else { + $('body').removeClass('is-reveal-open'); + } + + _this.$element.attr('aria-hidden', true); + + /** + * Fires when the modal is done closing. + * @event Reveal#closed + */ + _this.$element.trigger('closed.zf.reveal'); + } + + /** + * Resets the modal content + * This prevents a running video to keep going in the background + */ + if (this.options.resetOnClose) { + this.$element.html(this.$element.html()); + } + + this.isActive = false; + if (_this.options.deepLink) { + if (window.history.replaceState) { + window.history.replaceState("", document.title, window.location.pathname); + } else { + window.location.hash = ''; + } + } + } + + /** + * Toggles the open/closed state of a modal. + * @function + */ + + }, { + key: 'toggle', + value: function toggle() { + if (this.isActive) { + this.close(); + } else { + this.open(); + } + } + }, { + key: 'destroy', + + + /** + * Destroys an instance of a modal. + * @function + */ + value: function destroy() { + if (this.options.overlay) { + this.$element.appendTo($('body')); // move $element outside of $overlay to prevent error unregisterPlugin() + this.$overlay.hide().off().remove(); + } + this.$element.hide().off(); + this.$anchor.off('.zf'); + $(window).off('.zf.reveal:' + this.id); + + Foundation.unregisterPlugin(this); + } + }]); + + return Reveal; + }(); + + Reveal.defaults = { + /** + * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide. + * @option + * @example 'slide-in-left' + */ + animationIn: '', + /** + * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide. + * @option + * @example 'slide-out-right' + */ + animationOut: '', + /** + * Time, in ms, to delay the opening of a modal after a click if no animation used. + * @option + * @example 10 + */ + showDelay: 0, + /** + * Time, in ms, to delay the closing of a modal after a click if no animation used. + * @option + * @example 10 + */ + hideDelay: 0, + /** + * Allows a click on the body/overlay to close the modal. + * @option + * @example true + */ + closeOnClick: true, + /** + * Allows the modal to close if the user presses the `ESCAPE` key. + * @option + * @example true + */ + closeOnEsc: true, + /** + * If true, allows multiple modals to be displayed at once. + * @option + * @example false + */ + multipleOpened: false, + /** + * Distance, in pixels, the modal should push down from the top of the screen. + * @option + * @example auto + */ + vOffset: 'auto', + /** + * Distance, in pixels, the modal should push in from the side of the screen. + * @option + * @example auto + */ + hOffset: 'auto', + /** + * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well. + * @option + * @example false + */ + fullScreen: false, + /** + * Percentage of screen height the modal should push up from the bottom of the view. + * @option + * @example 10 + */ + btmOffsetPct: 10, + /** + * Allows the modal to generate an overlay div, which will cover the view when modal opens. + * @option + * @example true + */ + overlay: true, + /** + * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background. + * @option + * @example false + */ + resetOnClose: false, + /** + * Allows the modal to alter the url on open/close, and allows the use of the `back` button to close modals. ALSO, allows a modal to auto-maniacally open on page load IF the hash === the modal's user-set id. + * @option + * @example false + */ + deepLink: false + }; + + // Window exports + Foundation.plugin(Reveal, 'Reveal'); + + function iPhoneSniff() { + return (/iP(ad|hone|od).*OS/.test(window.navigator.userAgent) + ); + } + + function androidSniff() { + return (/Android/.test(window.navigator.userAgent) + ); + } + + function mobileSniff() { + return iPhoneSniff() || androidSniff(); + } +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.slider.js b/libraries/foundation-6/dist/plugins/foundation.slider.js new file mode 100755 index 00000000..3cbc0374 --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.slider.js @@ -0,0 +1,648 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Slider module. + * @module foundation.slider + * @requires foundation.util.motion + * @requires foundation.util.triggers + * @requires foundation.util.keyboard + * @requires foundation.util.touch + */ + + var Slider = function () { + /** + * Creates a new instance of a drilldown menu. + * @class + * @param {jQuery} element - jQuery object to make into an accordion menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Slider(element, options) { + _classCallCheck(this, Slider); + + this.$element = element; + this.options = $.extend({}, Slider.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Slider'); + Foundation.Keyboard.register('Slider', { + 'ltr': { + 'ARROW_RIGHT': 'increase', + 'ARROW_UP': 'increase', + 'ARROW_DOWN': 'decrease', + 'ARROW_LEFT': 'decrease', + 'SHIFT_ARROW_RIGHT': 'increase_fast', + 'SHIFT_ARROW_UP': 'increase_fast', + 'SHIFT_ARROW_DOWN': 'decrease_fast', + 'SHIFT_ARROW_LEFT': 'decrease_fast' + }, + 'rtl': { + 'ARROW_LEFT': 'increase', + 'ARROW_RIGHT': 'decrease', + 'SHIFT_ARROW_LEFT': 'increase_fast', + 'SHIFT_ARROW_RIGHT': 'decrease_fast' + } + }); + } + + /** + * Initilizes the plugin by reading/setting attributes, creating collections and setting the initial position of the handle(s). + * @function + * @private + */ + + + _createClass(Slider, [{ + key: '_init', + value: function _init() { + this.inputs = this.$element.find('input'); + this.handles = this.$element.find('[data-slider-handle]'); + + this.$handle = this.handles.eq(0); + this.$input = this.inputs.length ? this.inputs.eq(0) : $('#' + this.$handle.attr('aria-controls')); + this.$fill = this.$element.find('[data-slider-fill]').css(this.options.vertical ? 'height' : 'width', 0); + + var isDbl = false, + _this = this; + if (this.options.disabled || this.$element.hasClass(this.options.disabledClass)) { + this.options.disabled = true; + this.$element.addClass(this.options.disabledClass); + } + if (!this.inputs.length) { + this.inputs = $().add(this.$input); + this.options.binding = true; + } + this._setInitAttr(0); + this._events(this.$handle); + + if (this.handles[1]) { + this.options.doubleSided = true; + this.$handle2 = this.handles.eq(1); + this.$input2 = this.inputs.length > 1 ? this.inputs.eq(1) : $('#' + this.$handle2.attr('aria-controls')); + + if (!this.inputs[1]) { + this.inputs = this.inputs.add(this.$input2); + } + isDbl = true; + + this._setHandlePos(this.$handle, this.options.initialStart, true, function () { + + _this._setHandlePos(_this.$handle2, _this.options.initialEnd, true); + }); + // this.$handle.triggerHandler('click.zf.slider'); + this._setInitAttr(1); + this._events(this.$handle2); + } + + if (!isDbl) { + this._setHandlePos(this.$handle, this.options.initialStart, true); + } + } + + /** + * Sets the position of the selected handle and fill bar. + * @function + * @private + * @param {jQuery} $hndl - the selected handle to move. + * @param {Number} location - floating point between the start and end values of the slider bar. + * @param {Function} cb - callback function to fire on completion. + * @fires Slider#moved + * @fires Slider#changed + */ + + }, { + key: '_setHandlePos', + value: function _setHandlePos($hndl, location, noInvert, cb) { + // don't move if the slider has been disabled since its initialization + if (this.$element.hasClass(this.options.disabledClass)) { + return; + } + //might need to alter that slightly for bars that will have odd number selections. + location = parseFloat(location); //on input change events, convert string to number...grumble. + + // prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max + if (location < this.options.start) { + location = this.options.start; + } else if (location > this.options.end) { + location = this.options.end; + } + + var isDbl = this.options.doubleSided; + + if (isDbl) { + //this block is to prevent 2 handles from crossing eachother. Could/should be improved. + if (this.handles.index($hndl) === 0) { + var h2Val = parseFloat(this.$handle2.attr('aria-valuenow')); + location = location >= h2Val ? h2Val - this.options.step : location; + } else { + var h1Val = parseFloat(this.$handle.attr('aria-valuenow')); + location = location <= h1Val ? h1Val + this.options.step : location; + } + } + + //this is for single-handled vertical sliders, it adjusts the value to account for the slider being "upside-down" + //for click and drag events, it's weird due to the scale(-1, 1) css property + if (this.options.vertical && !noInvert) { + location = this.options.end - location; + } + + var _this = this, + vert = this.options.vertical, + hOrW = vert ? 'height' : 'width', + lOrT = vert ? 'top' : 'left', + handleDim = $hndl[0].getBoundingClientRect()[hOrW], + elemDim = this.$element[0].getBoundingClientRect()[hOrW], + + //percentage of bar min/max value based on click or drag point + pctOfBar = percent(location - this.options.start, this.options.end - this.options.start).toFixed(2), + + //number of actual pixels to shift the handle, based on the percentage obtained above + pxToMove = (elemDim - handleDim) * pctOfBar, + + //percentage of bar to shift the handle + movement = (percent(pxToMove, elemDim) * 100).toFixed(this.options.decimal); + //fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value + location = parseFloat(location.toFixed(this.options.decimal)); + // declare empty object for css adjustments, only used with 2 handled-sliders + var css = {}; + + this._setValues($hndl, location); + + // TODO update to calculate based on values set to respective inputs?? + if (isDbl) { + var isLeftHndl = this.handles.index($hndl) === 0, + + //empty variable, will be used for min-height/width for fill bar + dim, + + //percentage w/h of the handle compared to the slider bar + handlePct = ~ ~(percent(handleDim, elemDim) * 100); + //if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar + if (isLeftHndl) { + //left or top percentage value to apply to the fill bar. + css[lOrT] = movement + '%'; + //calculate the new min-height/width for the fill bar. + dim = parseFloat(this.$handle2[0].style[lOrT]) - movement + handlePct; + //this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider + //plus, it means we don't care if 'dim' isNaN on init, it won't be in the future. + if (cb && typeof cb === 'function') { + cb(); + } //this is only needed for the initialization of 2 handled sliders + } else { + //just caching the value of the left/bottom handle's left/top property + var handlePos = parseFloat(this.$handle[0].style[lOrT]); + //calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0 + //based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself + dim = movement - (isNaN(handlePos) ? this.options.initialStart / ((this.options.end - this.options.start) / 100) : handlePos) + handlePct; + } + // assign the min-height/width to our css object + css['min-' + hOrW] = dim + '%'; + } + + this.$element.one('finished.zf.animate', function () { + /** + * Fires when the handle is done moving. + * @event Slider#moved + */ + _this.$element.trigger('moved.zf.slider', [$hndl]); + }); + + //because we don't know exactly how the handle will be moved, check the amount of time it should take to move. + var moveTime = this.$element.data('dragging') ? 1000 / 60 : this.options.moveTime; + + Foundation.Move(moveTime, $hndl, function () { + //adjusting the left/top property of the handle, based on the percentage calculated above + $hndl.css(lOrT, movement + '%'); + + if (!_this.options.doubleSided) { + //if single-handled, a simple method to expand the fill bar + _this.$fill.css(hOrW, pctOfBar * 100 + '%'); + } else { + //otherwise, use the css object we created above + _this.$fill.css(css); + } + }); + + /** + * Fires when the value has not been change for a given time. + * @event Slider#changed + */ + clearTimeout(_this.timeout); + _this.timeout = setTimeout(function () { + _this.$element.trigger('changed.zf.slider', [$hndl]); + }, _this.options.changedDelay); + } + + /** + * Sets the initial attribute for the slider element. + * @function + * @private + * @param {Number} idx - index of the current handle/input to use. + */ + + }, { + key: '_setInitAttr', + value: function _setInitAttr(idx) { + var id = this.inputs.eq(idx).attr('id') || Foundation.GetYoDigits(6, 'slider'); + this.inputs.eq(idx).attr({ + 'id': id, + 'max': this.options.end, + 'min': this.options.start, + 'step': this.options.step + }); + this.handles.eq(idx).attr({ + 'role': 'slider', + 'aria-controls': id, + 'aria-valuemax': this.options.end, + 'aria-valuemin': this.options.start, + 'aria-valuenow': idx === 0 ? this.options.initialStart : this.options.initialEnd, + 'aria-orientation': this.options.vertical ? 'vertical' : 'horizontal', + 'tabindex': 0 + }); + } + + /** + * Sets the input and `aria-valuenow` values for the slider element. + * @function + * @private + * @param {jQuery} $handle - the currently selected handle. + * @param {Number} val - floating point of the new value. + */ + + }, { + key: '_setValues', + value: function _setValues($handle, val) { + var idx = this.options.doubleSided ? this.handles.index($handle) : 0; + this.inputs.eq(idx).val(val); + $handle.attr('aria-valuenow', val); + } + + /** + * Handles events on the slider element. + * Calculates the new location of the current handle. + * If there are two handles and the bar was clicked, it determines which handle to move. + * @function + * @private + * @param {Object} e - the `event` object passed from the listener. + * @param {jQuery} $handle - the current handle to calculate for, if selected. + * @param {Number} val - floating point number for the new value of the slider. + * TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn. + */ + + }, { + key: '_handleEvent', + value: function _handleEvent(e, $handle, val) { + var value, hasVal; + if (!val) { + //click or drag events + e.preventDefault(); + var _this = this, + vertical = this.options.vertical, + param = vertical ? 'height' : 'width', + direction = vertical ? 'top' : 'left', + eventOffset = vertical ? e.pageY : e.pageX, + halfOfHandle = this.$handle[0].getBoundingClientRect()[param] / 2, + barDim = this.$element[0].getBoundingClientRect()[param], + windowScroll = vertical ? $(window).scrollTop() : $(window).scrollLeft(); + + var elemOffset = this.$element.offset()[direction]; + + // touch events emulated by the touch util give position relative to screen, add window.scroll to event coordinates... + // best way to guess this is simulated is if clientY == pageY + if (e.clientY === e.pageY) { + eventOffset = eventOffset + windowScroll; + } + var eventFromBar = eventOffset - elemOffset; + var barXY; + if (eventFromBar < 0) { + barXY = 0; + } else if (eventFromBar > barDim) { + barXY = barDim; + } else { + barXY = eventFromBar; + } + offsetPct = percent(barXY, barDim); + + value = (this.options.end - this.options.start) * offsetPct + this.options.start; + + // turn everything around for RTL, yay math! + if (Foundation.rtl() && !this.options.vertical) { + value = this.options.end - value; + } + + value = _this._adjustValue(null, value); + //boolean flag for the setHandlePos fn, specifically for vertical sliders + hasVal = false; + + if (!$handle) { + //figure out which handle it is, pass it to the next function. + var firstHndlPos = absPosition(this.$handle, direction, barXY, param), + secndHndlPos = absPosition(this.$handle2, direction, barXY, param); + $handle = firstHndlPos <= secndHndlPos ? this.$handle : this.$handle2; + } + } else { + //change event on input + value = this._adjustValue(null, val); + hasVal = true; + } + + this._setHandlePos($handle, value, hasVal); + } + + /** + * Adjustes value for handle in regard to step value. returns adjusted value + * @function + * @private + * @param {jQuery} $handle - the selected handle. + * @param {Number} value - value to adjust. used if $handle is falsy + */ + + }, { + key: '_adjustValue', + value: function _adjustValue($handle, value) { + var val, + step = this.options.step, + div = parseFloat(step / 2), + left, + prev_val, + next_val; + if (!!$handle) { + val = parseFloat($handle.attr('aria-valuenow')); + } else { + val = value; + } + left = val % step; + prev_val = val - left; + next_val = prev_val + step; + if (left === 0) { + return val; + } + val = val >= prev_val + div ? next_val : prev_val; + return val; + } + + /** + * Adds event listeners to the slider elements. + * @function + * @private + * @param {jQuery} $handle - the current handle to apply listeners to. + */ + + }, { + key: '_events', + value: function _events($handle) { + var _this = this, + curHandle, + timer; + + this.inputs.off('change.zf.slider').on('change.zf.slider', function (e) { + var idx = _this.inputs.index($(this)); + _this._handleEvent(e, _this.handles.eq(idx), $(this).val()); + }); + + if (this.options.clickSelect) { + this.$element.off('click.zf.slider').on('click.zf.slider', function (e) { + if (_this.$element.data('dragging')) { + return false; + } + + if (!$(e.target).is('[data-slider-handle]')) { + if (_this.options.doubleSided) { + _this._handleEvent(e); + } else { + _this._handleEvent(e, _this.$handle); + } + } + }); + } + + if (this.options.draggable) { + this.handles.addTouch(); + + var $body = $('body'); + $handle.off('mousedown.zf.slider').on('mousedown.zf.slider', function (e) { + $handle.addClass('is-dragging'); + _this.$fill.addClass('is-dragging'); // + _this.$element.data('dragging', true); + + curHandle = $(e.currentTarget); + + $body.on('mousemove.zf.slider', function (e) { + e.preventDefault(); + _this._handleEvent(e, curHandle); + }).on('mouseup.zf.slider', function (e) { + _this._handleEvent(e, curHandle); + + $handle.removeClass('is-dragging'); + _this.$fill.removeClass('is-dragging'); + _this.$element.data('dragging', false); + + $body.off('mousemove.zf.slider mouseup.zf.slider'); + }); + }) + // prevent events triggered by touch + .on('selectstart.zf.slider touchmove.zf.slider', function (e) { + e.preventDefault(); + }); + } + + $handle.off('keydown.zf.slider').on('keydown.zf.slider', function (e) { + var _$handle = $(this), + idx = _this.options.doubleSided ? _this.handles.index(_$handle) : 0, + oldValue = parseFloat(_this.inputs.eq(idx).val()), + newValue; + + // handle keyboard event with keyboard util + Foundation.Keyboard.handleKey(e, 'Slider', { + decrease: function () { + newValue = oldValue - _this.options.step; + }, + increase: function () { + newValue = oldValue + _this.options.step; + }, + decrease_fast: function () { + newValue = oldValue - _this.options.step * 10; + }, + increase_fast: function () { + newValue = oldValue + _this.options.step * 10; + }, + handled: function () { + // only set handle pos when event was handled specially + e.preventDefault(); + _this._setHandlePos(_$handle, newValue, true); + } + }); + /*if (newValue) { // if pressed key has special function, update value + e.preventDefault(); + _this._setHandlePos(_$handle, newValue); + }*/ + }); + } + + /** + * Destroys the slider plugin. + */ + + }, { + key: 'destroy', + value: function destroy() { + this.handles.off('.zf.slider'); + this.inputs.off('.zf.slider'); + this.$element.off('.zf.slider'); + + Foundation.unregisterPlugin(this); + } + }]); + + return Slider; + }(); + + Slider.defaults = { + /** + * Minimum value for the slider scale. + * @option + * @example 0 + */ + start: 0, + /** + * Maximum value for the slider scale. + * @option + * @example 100 + */ + end: 100, + /** + * Minimum value change per change event. + * @option + * @example 1 + */ + step: 1, + /** + * Value at which the handle/input *(left handle/first input)* should be set to on initialization. + * @option + * @example 0 + */ + initialStart: 0, + /** + * Value at which the right handle/second input should be set to on initialization. + * @option + * @example 100 + */ + initialEnd: 100, + /** + * Allows the input to be located outside the container and visible. Set to by the JS + * @option + * @example false + */ + binding: false, + /** + * Allows the user to click/tap on the slider bar to select a value. + * @option + * @example true + */ + clickSelect: true, + /** + * Set to true and use the `vertical` class to change alignment to vertical. + * @option + * @example false + */ + vertical: false, + /** + * Allows the user to drag the slider handle(s) to select a value. + * @option + * @example true + */ + draggable: true, + /** + * Disables the slider and prevents event listeners from being applied. Double checked by JS with `disabledClass`. + * @option + * @example false + */ + disabled: false, + /** + * Allows the use of two handles. Double checked by the JS. Changes some logic handling. + * @option + * @example false + */ + doubleSided: false, + /** + * Potential future feature. + */ + // steps: 100, + /** + * Number of decimal places the plugin should go to for floating point precision. + * @option + * @example 2 + */ + decimal: 2, + /** + * Time delay for dragged elements. + */ + // dragDelay: 0, + /** + * Time, in ms, to animate the movement of a slider handle if user clicks/taps on the bar. Needs to be manually set if updating the transition time in the Sass settings. + * @option + * @example 200 + */ + moveTime: 200, //update this if changing the transition time in the sass + /** + * Class applied to disabled sliders. + * @option + * @example 'disabled' + */ + disabledClass: 'disabled', + /** + * Will invert the default layout for a vertical<span data-tooltip title="who would do this???"> </span>slider. + * @option + * @example false + */ + invertVertical: false, + /** + * Milliseconds before the `changed.zf-slider` event is triggered after value change. + * @option + * @example 500 + */ + changedDelay: 500 + }; + + function percent(frac, num) { + return frac / num; + } + function absPosition($handle, dir, clickPos, param) { + return Math.abs($handle.position()[dir] + $handle[param]() / 2 - clickPos); + } + + // Window exports + Foundation.plugin(Slider, 'Slider'); +}(jQuery); + +//*********this is in case we go to static, absolute positions instead of dynamic positioning******** +// this.setSteps(function() { +// _this._events(); +// var initStart = _this.options.positions[_this.options.initialStart - 1] || null; +// var initEnd = _this.options.initialEnd ? _this.options.position[_this.options.initialEnd - 1] : null; +// if (initStart || initEnd) { +// _this._handleEvent(initStart, initEnd); +// } +// }); + +//***********the other part of absolute positions************* +// Slider.prototype.setSteps = function(cb) { +// var posChange = this.$element.outerWidth() / this.options.steps; +// var counter = 0 +// while(counter < this.options.steps) { +// if (counter) { +// this.options.positions.push(this.options.positions[counter - 1] + posChange); +// } else { +// this.options.positions.push(posChange); +// } +// counter++; +// } +// cb(); +// }; \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.sticky.js b/libraries/foundation-6/dist/plugins/foundation.sticky.js new file mode 100755 index 00000000..d1a4689d --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.sticky.js @@ -0,0 +1,495 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Sticky module. + * @module foundation.sticky + * @requires foundation.util.triggers + * @requires foundation.util.mediaQuery + */ + + var Sticky = function () { + /** + * Creates a new instance of a sticky thing. + * @class + * @param {jQuery} element - jQuery object to make sticky. + * @param {Object} options - options object passed when creating the element programmatically. + */ + + function Sticky(element, options) { + _classCallCheck(this, Sticky); + + this.$element = element; + this.options = $.extend({}, Sticky.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Sticky'); + } + + /** + * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes + * @function + * @private + */ + + + _createClass(Sticky, [{ + key: '_init', + value: function _init() { + var $parent = this.$element.parent('[data-sticky-container]'), + id = this.$element[0].id || Foundation.GetYoDigits(6, 'sticky'), + _this = this; + + if (!$parent.length) { + this.wasWrapped = true; + } + this.$container = $parent.length ? $parent : $(this.options.container).wrapInner(this.$element); + this.$container.addClass(this.options.containerClass); + + this.$element.addClass(this.options.stickyClass).attr({ 'data-resize': id }); + + this.scrollCount = this.options.checkEvery; + this.isStuck = false; + $(window).one('load.zf.sticky', function () { + if (_this.options.anchor !== '') { + _this.$anchor = $('#' + _this.options.anchor); + } else { + _this._parsePoints(); + } + + _this._setSizes(function () { + _this._calc(false); + }); + _this._events(id.split('-').reverse().join('-')); + }); + } + + /** + * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on. + * @function + * @private + */ + + }, { + key: '_parsePoints', + value: function _parsePoints() { + var top = this.options.topAnchor == "" ? 1 : this.options.topAnchor, + btm = this.options.btmAnchor == "" ? document.documentElement.scrollHeight : this.options.btmAnchor, + pts = [top, btm], + breaks = {}; + for (var i = 0, len = pts.length; i < len && pts[i]; i++) { + var pt; + if (typeof pts[i] === 'number') { + pt = pts[i]; + } else { + var place = pts[i].split(':'), + anchor = $('#' + place[0]); + + pt = anchor.offset().top; + if (place[1] && place[1].toLowerCase() === 'bottom') { + pt += anchor[0].getBoundingClientRect().height; + } + } + breaks[i] = pt; + } + + this.points = breaks; + return; + } + + /** + * Adds event handlers for the scrolling element. + * @private + * @param {String} id - psuedo-random id for unique scroll event listener. + */ + + }, { + key: '_events', + value: function _events(id) { + var _this = this, + scrollListener = this.scrollListener = 'scroll.zf.' + id; + if (this.isOn) { + return; + } + if (this.canStick) { + this.isOn = true; + $(window).off(scrollListener).on(scrollListener, function (e) { + if (_this.scrollCount === 0) { + _this.scrollCount = _this.options.checkEvery; + _this._setSizes(function () { + _this._calc(false, window.pageYOffset); + }); + } else { + _this.scrollCount--; + _this._calc(false, window.pageYOffset); + } + }); + } + + this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', function (e, el) { + _this._setSizes(function () { + _this._calc(false); + if (_this.canStick) { + if (!_this.isOn) { + _this._events(id); + } + } else if (_this.isOn) { + _this._pauseListeners(scrollListener); + } + }); + }); + } + + /** + * Removes event handlers for scroll and change events on anchor. + * @fires Sticky#pause + * @param {String} scrollListener - unique, namespaced scroll listener attached to `window` + */ + + }, { + key: '_pauseListeners', + value: function _pauseListeners(scrollListener) { + this.isOn = false; + $(window).off(scrollListener); + + /** + * Fires when the plugin is paused due to resize event shrinking the view. + * @event Sticky#pause + * @private + */ + this.$element.trigger('pause.zf.sticky'); + } + + /** + * Called on every `scroll` event and on `_init` + * fires functions based on booleans and cached values + * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints. + * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`. + */ + + }, { + key: '_calc', + value: function _calc(checkSizes, scroll) { + if (checkSizes) { + this._setSizes(); + } + + if (!this.canStick) { + if (this.isStuck) { + this._removeSticky(true); + } + return false; + } + + if (!scroll) { + scroll = window.pageYOffset; + } + + if (scroll >= this.topPoint) { + if (scroll <= this.bottomPoint) { + if (!this.isStuck) { + this._setSticky(); + } + } else { + if (this.isStuck) { + this._removeSticky(false); + } + } + } else { + if (this.isStuck) { + this._removeSticky(true); + } + } + } + + /** + * Causes the $element to become stuck. + * Adds `position: fixed;`, and helper classes. + * @fires Sticky#stuckto + * @function + * @private + */ + + }, { + key: '_setSticky', + value: function _setSticky() { + var _this = this, + stickTo = this.options.stickTo, + mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom', + notStuckTo = stickTo === 'top' ? 'bottom' : 'top', + css = {}; + + css[mrgn] = this.options[mrgn] + 'em'; + css[stickTo] = 0; + css[notStuckTo] = 'auto'; + css['left'] = this.$container.offset().left + parseInt(window.getComputedStyle(this.$container[0])["padding-left"], 10); + this.isStuck = true; + this.$element.removeClass('is-anchored is-at-' + notStuckTo).addClass('is-stuck is-at-' + stickTo).css(css) + /** + * Fires when the $element has become `position: fixed;` + * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top` + * @event Sticky#stuckto + */ + .trigger('sticky.zf.stuckto:' + stickTo); + this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd", function () { + _this._setSizes(); + }); + } + + /** + * Causes the $element to become unstuck. + * Removes `position: fixed;`, and helper classes. + * Adds other helper classes. + * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element. + * @fires Sticky#unstuckfrom + * @private + */ + + }, { + key: '_removeSticky', + value: function _removeSticky(isTop) { + var stickTo = this.options.stickTo, + stickToTop = stickTo === 'top', + css = {}, + anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight, + mrgn = stickToTop ? 'marginTop' : 'marginBottom', + notStuckTo = stickToTop ? 'bottom' : 'top', + topOrBottom = isTop ? 'top' : 'bottom'; + + css[mrgn] = 0; + + css['bottom'] = 'auto'; + if (isTop) { + css['top'] = 0; + } else { + css['top'] = anchorPt; + } + + css['left'] = ''; + this.isStuck = false; + this.$element.removeClass('is-stuck is-at-' + stickTo).addClass('is-anchored is-at-' + topOrBottom).css(css) + /** + * Fires when the $element has become anchored. + * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom` + * @event Sticky#unstuckfrom + */ + .trigger('sticky.zf.unstuckfrom:' + topOrBottom); + } + + /** + * Sets the $element and $container sizes for plugin. + * Calls `_setBreakPoints`. + * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`. + * @private + */ + + }, { + key: '_setSizes', + value: function _setSizes(cb) { + this.canStick = Foundation.MediaQuery.atLeast(this.options.stickyOn); + if (!this.canStick) { + cb(); + } + var _this = this, + newElemWidth = this.$container[0].getBoundingClientRect().width, + comp = window.getComputedStyle(this.$container[0]), + pdng = parseInt(comp['padding-right'], 10); + + if (this.$anchor && this.$anchor.length) { + this.anchorHeight = this.$anchor[0].getBoundingClientRect().height; + } else { + this._parsePoints(); + } + + this.$element.css({ + 'max-width': newElemWidth - pdng + 'px' + }); + + var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight; + if (this.$element.css("display") == "none") { + newContainerHeight = 0; + } + this.containerHeight = newContainerHeight; + this.$container.css({ + height: newContainerHeight + }); + this.elemHeight = newContainerHeight; + + if (this.isStuck) { + this.$element.css({ "left": this.$container.offset().left + parseInt(comp['padding-left'], 10) }); + } + + this._setBreakPoints(newContainerHeight, function () { + if (cb) { + cb(); + } + }); + } + + /** + * Sets the upper and lower breakpoints for the element to become sticky/unsticky. + * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`. + * @param {Function} cb - optional callback function to be called on completion. + * @private + */ + + }, { + key: '_setBreakPoints', + value: function _setBreakPoints(elemHeight, cb) { + if (!this.canStick) { + if (cb) { + cb(); + } else { + return false; + } + } + var mTop = emCalc(this.options.marginTop), + mBtm = emCalc(this.options.marginBottom), + topPoint = this.points ? this.points[0] : this.$anchor.offset().top, + bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight, + + // topPoint = this.$anchor.offset().top || this.points[0], + // bottomPoint = topPoint + this.anchorHeight || this.points[1], + winHeight = window.innerHeight; + + if (this.options.stickTo === 'top') { + topPoint -= mTop; + bottomPoint -= elemHeight + mTop; + } else if (this.options.stickTo === 'bottom') { + topPoint -= winHeight - (elemHeight + mBtm); + bottomPoint -= winHeight - mBtm; + } else { + //this would be the stickTo: both option... tricky + } + + this.topPoint = topPoint; + this.bottomPoint = bottomPoint; + + if (cb) { + cb(); + } + } + + /** + * Destroys the current sticky element. + * Resets the element to the top position first. + * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this._removeSticky(true); + + this.$element.removeClass(this.options.stickyClass + ' is-anchored is-at-top').css({ + height: '', + top: '', + bottom: '', + 'max-width': '' + }).off('resizeme.zf.trigger'); + if (this.$anchor && this.$anchor.length) { + this.$anchor.off('change.zf.sticky'); + } + $(window).off(this.scrollListener); + + if (this.wasWrapped) { + this.$element.unwrap(); + } else { + this.$container.removeClass(this.options.containerClass).css({ + height: '' + }); + } + Foundation.unregisterPlugin(this); + } + }]); + + return Sticky; + }(); + + Sticky.defaults = { + /** + * Customizable container template. Add your own classes for styling and sizing. + * @option + * @example '<div data-sticky-container class="small-6 columns"></div>' + */ + container: '<div data-sticky-container></div>', + /** + * Location in the view the element sticks to. + * @option + * @example 'top' + */ + stickTo: 'top', + /** + * If anchored to a single element, the id of that element. + * @option + * @example 'exampleId' + */ + anchor: '', + /** + * If using more than one element as anchor points, the id of the top anchor. + * @option + * @example 'exampleId:top' + */ + topAnchor: '', + /** + * If using more than one element as anchor points, the id of the bottom anchor. + * @option + * @example 'exampleId:bottom' + */ + btmAnchor: '', + /** + * Margin, in `em`'s to apply to the top of the element when it becomes sticky. + * @option + * @example 1 + */ + marginTop: 1, + /** + * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky. + * @option + * @example 1 + */ + marginBottom: 1, + /** + * Breakpoint string that is the minimum screen size an element should become sticky. + * @option + * @example 'medium' + */ + stickyOn: 'medium', + /** + * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`. + * @option + * @example 'sticky' + */ + stickyClass: 'sticky', + /** + * Class applied to sticky container. Foundation defaults to `sticky-container`. + * @option + * @example 'sticky-container' + */ + containerClass: 'sticky-container', + /** + * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll. + * @option + * @example 50 + */ + checkEvery: -1 + }; + + /** + * Helper function to calculate em values + * @param Number {em} - number of em's to calculate into pixels + */ + function emCalc(em) { + return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em; + } + + // Window exports + Foundation.plugin(Sticky, 'Sticky'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.tabs.js b/libraries/foundation-6/dist/plugins/foundation.tabs.js new file mode 100755 index 00000000..47e25b5e --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.tabs.js @@ -0,0 +1,348 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Tabs module. + * @module foundation.tabs + * @requires foundation.util.keyboard + * @requires foundation.util.timerAndImageLoader if tabs contain images + */ + + var Tabs = function () { + /** + * Creates a new instance of tabs. + * @class + * @fires Tabs#init + * @param {jQuery} element - jQuery object to make into tabs. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Tabs(element, options) { + _classCallCheck(this, Tabs); + + this.$element = element; + this.options = $.extend({}, Tabs.defaults, this.$element.data(), options); + + this._init(); + Foundation.registerPlugin(this, 'Tabs'); + Foundation.Keyboard.register('Tabs', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ARROW_RIGHT': 'next', + 'ARROW_UP': 'previous', + 'ARROW_DOWN': 'next', + 'ARROW_LEFT': 'previous' + // 'TAB': 'next', + // 'SHIFT_TAB': 'previous' + }); + } + + /** + * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab. + * @private + */ + + + _createClass(Tabs, [{ + key: '_init', + value: function _init() { + var _this = this; + + this.$tabTitles = this.$element.find('.' + this.options.linkClass); + this.$tabContent = $('[data-tabs-content="' + this.$element[0].id + '"]'); + + this.$tabTitles.each(function () { + var $elem = $(this), + $link = $elem.find('a'), + isActive = $elem.hasClass('is-active'), + hash = $link[0].hash.slice(1), + linkId = $link[0].id ? $link[0].id : hash + '-label', + $tabContent = $('#' + hash); + + $elem.attr({ 'role': 'presentation' }); + + $link.attr({ + 'role': 'tab', + 'aria-controls': hash, + 'aria-selected': isActive, + 'id': linkId + }); + + $tabContent.attr({ + 'role': 'tabpanel', + 'aria-hidden': !isActive, + 'aria-labelledby': linkId + }); + + if (isActive && _this.options.autoFocus) { + $link.focus(); + } + }); + + if (this.options.matchHeight) { + var $images = this.$tabContent.find('img'); + + if ($images.length) { + Foundation.onImagesLoaded($images, this._setHeight.bind(this)); + } else { + this._setHeight(); + } + } + + this._events(); + } + + /** + * Adds event handlers for items within the tabs. + * @private + */ + + }, { + key: '_events', + value: function _events() { + this._addKeyHandler(); + this._addClickHandler(); + this._setHeightMqHandler = null; + + if (this.options.matchHeight) { + this._setHeightMqHandler = this._setHeight.bind(this); + + $(window).on('changed.zf.mediaquery', this._setHeightMqHandler); + } + } + + /** + * Adds click handlers for items within the tabs. + * @private + */ + + }, { + key: '_addClickHandler', + value: function _addClickHandler() { + var _this = this; + + this.$element.off('click.zf.tabs').on('click.zf.tabs', '.' + this.options.linkClass, function (e) { + e.preventDefault(); + e.stopPropagation(); + if ($(this).hasClass('is-active')) { + return; + } + _this._handleTabChange($(this)); + }); + } + + /** + * Adds keyboard event handlers for items within the tabs. + * @private + */ + + }, { + key: '_addKeyHandler', + value: function _addKeyHandler() { + var _this = this; + var $firstTab = _this.$element.find('li:first-of-type'); + var $lastTab = _this.$element.find('li:last-of-type'); + + this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function (e) { + if (e.which === 9) return; + + var $element = $(this), + $elements = $element.parent('ul').children('li'), + $prevElement, + $nextElement; + + $elements.each(function (i) { + if ($(this).is($element)) { + if (_this.options.wrapOnKeys) { + $prevElement = i === 0 ? $elements.last() : $elements.eq(i - 1); + $nextElement = i === $elements.length - 1 ? $elements.first() : $elements.eq(i + 1); + } else { + $prevElement = $elements.eq(Math.max(0, i - 1)); + $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)); + } + return; + } + }); + + // handle keyboard event with keyboard util + Foundation.Keyboard.handleKey(e, 'Tabs', { + open: function () { + $element.find('[role="tab"]').focus(); + _this._handleTabChange($element); + }, + previous: function () { + $prevElement.find('[role="tab"]').focus(); + _this._handleTabChange($prevElement); + }, + next: function () { + $nextElement.find('[role="tab"]').focus(); + _this._handleTabChange($nextElement); + }, + handled: function () { + e.stopPropagation(); + e.preventDefault(); + } + }); + }); + } + + /** + * Opens the tab `$targetContent` defined by `$target`. + * @param {jQuery} $target - Tab to open. + * @fires Tabs#change + * @function + */ + + }, { + key: '_handleTabChange', + value: function _handleTabChange($target) { + var $tabLink = $target.find('[role="tab"]'), + hash = $tabLink[0].hash, + $targetContent = this.$tabContent.find(hash), + $oldTab = this.$element.find('.' + this.options.linkClass + '.is-active').removeClass('is-active').find('[role="tab"]').attr({ 'aria-selected': 'false' }); + + $('#' + $oldTab.attr('aria-controls')).removeClass('is-active').attr({ 'aria-hidden': 'true' }); + + $target.addClass('is-active'); + + $tabLink.attr({ 'aria-selected': 'true' }); + + $targetContent.addClass('is-active').attr({ 'aria-hidden': 'false' }); + + /** + * Fires when the plugin has successfully changed tabs. + * @event Tabs#change + */ + this.$element.trigger('change.zf.tabs', [$target]); + } + + /** + * Public method for selecting a content pane to display. + * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display. + * @function + */ + + }, { + key: 'selectTab', + value: function selectTab(elem) { + var idStr; + + if (typeof elem === 'object') { + idStr = elem[0].id; + } else { + idStr = elem; + } + + if (idStr.indexOf('#') < 0) { + idStr = '#' + idStr; + } + + var $target = this.$tabTitles.find('[href="' + idStr + '"]').parent('.' + this.options.linkClass); + + this._handleTabChange($target); + } + }, { + key: '_setHeight', + + /** + * Sets the height of each panel to the height of the tallest panel. + * If enabled in options, gets called on media query change. + * If loading content via external source, can be called directly or with _reflow. + * @function + * @private + */ + value: function _setHeight() { + var max = 0; + this.$tabContent.find('.' + this.options.panelClass).css('height', '').each(function () { + var panel = $(this), + isActive = panel.hasClass('is-active'); + + if (!isActive) { + panel.css({ 'visibility': 'hidden', 'display': 'block' }); + } + + var temp = this.getBoundingClientRect().height; + + if (!isActive) { + panel.css({ + 'visibility': '', + 'display': '' + }); + } + + max = temp > max ? temp : max; + }).css('height', max + 'px'); + } + + /** + * Destroys an instance of an tabs. + * @fires Tabs#destroyed + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.find('.' + this.options.linkClass).off('.zf.tabs').hide().end().find('.' + this.options.panelClass).hide(); + + if (this.options.matchHeight) { + if (this._setHeightMqHandler != null) { + $(window).off('changed.zf.mediaquery', this._setHeightMqHandler); + } + } + + Foundation.unregisterPlugin(this); + } + }]); + + return Tabs; + }(); + + Tabs.defaults = { + /** + * Allows the window to scroll to content of active pane on load if set to true. + * @option + * @example false + */ + autoFocus: false, + + /** + * Allows keyboard input to 'wrap' around the tab links. + * @option + * @example true + */ + wrapOnKeys: true, + + /** + * Allows the tab content panes to match heights if set to true. + * @option + * @example false + */ + matchHeight: false, + + /** + * Class applied to `li`'s in tab link list. + * @option + * @example 'tabs-title' + */ + linkClass: 'tabs-title', + + /** + * Class applied to the content containers. + * @option + * @example 'tabs-panel' + */ + panelClass: 'tabs-panel' + }; + + function checkClass($elem) { + return $elem.hasClass('is-active'); + } + + // Window exports + Foundation.plugin(Tabs, 'Tabs'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.toggler.js b/libraries/foundation-6/dist/plugins/foundation.toggler.js new file mode 100755 index 00000000..3e73b8d6 --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.toggler.js @@ -0,0 +1,166 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Toggler module. + * @module foundation.toggler + * @requires foundation.util.motion + * @requires foundation.util.triggers + */ + + var Toggler = function () { + /** + * Creates a new instance of Toggler. + * @class + * @fires Toggler#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Toggler(element, options) { + _classCallCheck(this, Toggler); + + this.$element = element; + this.options = $.extend({}, Toggler.defaults, element.data(), options); + this.className = ''; + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'Toggler'); + } + + /** + * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate. + * @function + * @private + */ + + + _createClass(Toggler, [{ + key: '_init', + value: function _init() { + var input; + // Parse animation classes if they were set + if (this.options.animate) { + input = this.options.animate.split(' '); + + this.animationIn = input[0]; + this.animationOut = input[1] || null; + } + // Otherwise, parse toggle class + else { + input = this.$element.data('toggler'); + // Allow for a . at the beginning of the string + this.className = input[0] === '.' ? input.slice(1) : input; + } + + // Add ARIA attributes to triggers + var id = this.$element[0].id; + $('[data-open="' + id + '"], [data-close="' + id + '"], [data-toggle="' + id + '"]').attr('aria-controls', id); + // If the target is hidden, add aria-hidden + this.$element.attr('aria-expanded', this.$element.is(':hidden') ? false : true); + } + + /** + * Initializes events for the toggle trigger. + * @function + * @private + */ + + }, { + key: '_events', + value: function _events() { + this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this)); + } + + /** + * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was "on" or "off". + * @function + * @fires Toggler#on + * @fires Toggler#off + */ + + }, { + key: 'toggle', + value: function toggle() { + this[this.options.animate ? '_toggleAnimate' : '_toggleClass'](); + } + }, { + key: '_toggleClass', + value: function _toggleClass() { + this.$element.toggleClass(this.className); + + var isOn = this.$element.hasClass(this.className); + if (isOn) { + /** + * Fires if the target element has the class after a toggle. + * @event Toggler#on + */ + this.$element.trigger('on.zf.toggler'); + } else { + /** + * Fires if the target element does not have the class after a toggle. + * @event Toggler#off + */ + this.$element.trigger('off.zf.toggler'); + } + + this._updateARIA(isOn); + } + }, { + key: '_toggleAnimate', + value: function _toggleAnimate() { + var _this = this; + + if (this.$element.is(':hidden')) { + Foundation.Motion.animateIn(this.$element, this.animationIn, function () { + _this._updateARIA(true); + this.trigger('on.zf.toggler'); + }); + } else { + Foundation.Motion.animateOut(this.$element, this.animationOut, function () { + _this._updateARIA(false); + this.trigger('off.zf.toggler'); + }); + } + } + }, { + key: '_updateARIA', + value: function _updateARIA(isOn) { + this.$element.attr('aria-expanded', isOn ? true : false); + } + + /** + * Destroys the instance of Toggler on the element. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.off('.zf.toggler'); + Foundation.unregisterPlugin(this); + } + }]); + + return Toggler; + }(); + + Toggler.defaults = { + /** + * Tells the plugin if the element should animated when toggled. + * @option + * @example false + */ + animate: false + }; + + // Window exports + Foundation.plugin(Toggler, 'Toggler'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.tooltip.js b/libraries/foundation-6/dist/plugins/foundation.tooltip.js new file mode 100755 index 00000000..a02bd5ab --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.tooltip.js @@ -0,0 +1,468 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Tooltip module. + * @module foundation.tooltip + * @requires foundation.util.box + * @requires foundation.util.triggers + */ + + var Tooltip = function () { + /** + * Creates a new instance of a Tooltip. + * @class + * @fires Tooltip#init + * @param {jQuery} element - jQuery object to attach a tooltip to. + * @param {Object} options - object to extend the default configuration. + */ + + function Tooltip(element, options) { + _classCallCheck(this, Tooltip); + + this.$element = element; + this.options = $.extend({}, Tooltip.defaults, this.$element.data(), options); + + this.isActive = false; + this.isClick = false; + this._init(); + + Foundation.registerPlugin(this, 'Tooltip'); + } + + /** + * Initializes the tooltip by setting the creating the tip element, adding it's text, setting private variables and setting attributes on the anchor. + * @private + */ + + + _createClass(Tooltip, [{ + key: '_init', + value: function _init() { + var elemId = this.$element.attr('aria-describedby') || Foundation.GetYoDigits(6, 'tooltip'); + + this.options.positionClass = this.options.positionClass || this._getPositionClass(this.$element); + this.options.tipText = this.options.tipText || this.$element.attr('title'); + this.template = this.options.template ? $(this.options.template) : this._buildTemplate(elemId); + + this.template.appendTo(document.body).text(this.options.tipText).hide(); + + this.$element.attr({ + 'title': '', + 'aria-describedby': elemId, + 'data-yeti-box': elemId, + 'data-toggle': elemId, + 'data-resize': elemId + }).addClass(this.triggerClass); + + //helper variables to track movement on collisions + this.usedPositions = []; + this.counter = 4; + this.classChanged = false; + + this._events(); + } + + /** + * Grabs the current positioning class, if present, and returns the value or an empty string. + * @private + */ + + }, { + key: '_getPositionClass', + value: function _getPositionClass(element) { + if (!element) { + return ''; + } + // var position = element.attr('class').match(/top|left|right/g); + var position = element[0].className.match(/\b(top|left|right)\b/g); + position = position ? position[0] : ''; + return position; + } + }, { + key: '_buildTemplate', + + /** + * builds the tooltip element, adds attributes, and returns the template. + * @private + */ + value: function _buildTemplate(id) { + var templateClasses = (this.options.tooltipClass + ' ' + this.options.positionClass + ' ' + this.options.templateClasses).trim(); + var $template = $('<div></div>').addClass(templateClasses).attr({ + 'role': 'tooltip', + 'aria-hidden': true, + 'data-is-active': false, + 'data-is-focus': false, + 'id': id + }); + return $template; + } + + /** + * Function that gets called if a collision event is detected. + * @param {String} position - positioning class to try + * @private + */ + + }, { + key: '_reposition', + value: function _reposition(position) { + this.usedPositions.push(position ? position : 'bottom'); + + //default, try switching to opposite side + if (!position && this.usedPositions.indexOf('top') < 0) { + this.template.addClass('top'); + } else if (position === 'top' && this.usedPositions.indexOf('bottom') < 0) { + this.template.removeClass(position); + } else if (position === 'left' && this.usedPositions.indexOf('right') < 0) { + this.template.removeClass(position).addClass('right'); + } else if (position === 'right' && this.usedPositions.indexOf('left') < 0) { + this.template.removeClass(position).addClass('left'); + } + + //if default change didn't work, try bottom or left first + else if (!position && this.usedPositions.indexOf('top') > -1 && this.usedPositions.indexOf('left') < 0) { + this.template.addClass('left'); + } else if (position === 'top' && this.usedPositions.indexOf('bottom') > -1 && this.usedPositions.indexOf('left') < 0) { + this.template.removeClass(position).addClass('left'); + } else if (position === 'left' && this.usedPositions.indexOf('right') > -1 && this.usedPositions.indexOf('bottom') < 0) { + this.template.removeClass(position); + } else if (position === 'right' && this.usedPositions.indexOf('left') > -1 && this.usedPositions.indexOf('bottom') < 0) { + this.template.removeClass(position); + } + //if nothing cleared, set to bottom + else { + this.template.removeClass(position); + } + this.classChanged = true; + this.counter--; + } + + /** + * sets the position class of an element and recursively calls itself until there are no more possible positions to attempt, or the tooltip element is no longer colliding. + * if the tooltip is larger than the screen width, default to full width - any user selected margin + * @private + */ + + }, { + key: '_setPosition', + value: function _setPosition() { + var position = this._getPositionClass(this.template), + $tipDims = Foundation.Box.GetDimensions(this.template), + $anchorDims = Foundation.Box.GetDimensions(this.$element), + direction = position === 'left' ? 'left' : position === 'right' ? 'left' : 'top', + param = direction === 'top' ? 'height' : 'width', + offset = param === 'height' ? this.options.vOffset : this.options.hOffset, + _this = this; + + if ($tipDims.width >= $tipDims.windowDims.width || !this.counter && !Foundation.Box.ImNotTouchingYou(this.template)) { + this.template.offset(Foundation.Box.GetOffsets(this.template, this.$element, 'center bottom', this.options.vOffset, this.options.hOffset, true)).css({ + // this.$element.offset(Foundation.GetOffsets(this.template, this.$element, 'center bottom', this.options.vOffset, this.options.hOffset, true)).css({ + 'width': $anchorDims.windowDims.width - this.options.hOffset * 2, + 'height': 'auto' + }); + return false; + } + + this.template.offset(Foundation.Box.GetOffsets(this.template, this.$element, 'center ' + (position || 'bottom'), this.options.vOffset, this.options.hOffset)); + + while (!Foundation.Box.ImNotTouchingYou(this.template) && this.counter) { + this._reposition(position); + this._setPosition(); + } + } + + /** + * reveals the tooltip, and fires an event to close any other open tooltips on the page + * @fires Tooltip#closeme + * @fires Tooltip#show + * @function + */ + + }, { + key: 'show', + value: function show() { + if (this.options.showOn !== 'all' && !Foundation.MediaQuery.atLeast(this.options.showOn)) { + // console.error('The screen is too small to display this tooltip'); + return false; + } + + var _this = this; + this.template.css('visibility', 'hidden').show(); + this._setPosition(); + + /** + * Fires to close all other open tooltips on the page + * @event Closeme#tooltip + */ + this.$element.trigger('closeme.zf.tooltip', this.template.attr('id')); + + this.template.attr({ + 'data-is-active': true, + 'aria-hidden': false + }); + _this.isActive = true; + // console.log(this.template); + this.template.stop().hide().css('visibility', '').fadeIn(this.options.fadeInDuration, function () { + //maybe do stuff? + }); + /** + * Fires when the tooltip is shown + * @event Tooltip#show + */ + this.$element.trigger('show.zf.tooltip'); + } + + /** + * Hides the current tooltip, and resets the positioning class if it was changed due to collision + * @fires Tooltip#hide + * @function + */ + + }, { + key: 'hide', + value: function hide() { + // console.log('hiding', this.$element.data('yeti-box')); + var _this = this; + this.template.stop().attr({ + 'aria-hidden': true, + 'data-is-active': false + }).fadeOut(this.options.fadeOutDuration, function () { + _this.isActive = false; + _this.isClick = false; + if (_this.classChanged) { + _this.template.removeClass(_this._getPositionClass(_this.template)).addClass(_this.options.positionClass); + + _this.usedPositions = []; + _this.counter = 4; + _this.classChanged = false; + } + }); + /** + * fires when the tooltip is hidden + * @event Tooltip#hide + */ + this.$element.trigger('hide.zf.tooltip'); + } + + /** + * adds event listeners for the tooltip and its anchor + * TODO combine some of the listeners like focus and mouseenter, etc. + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + var $template = this.template; + var isFocus = false; + + if (!this.options.disableHover) { + + this.$element.on('mouseenter.zf.tooltip', function (e) { + if (!_this.isActive) { + _this.timeout = setTimeout(function () { + _this.show(); + }, _this.options.hoverDelay); + } + }).on('mouseleave.zf.tooltip', function (e) { + clearTimeout(_this.timeout); + if (!isFocus || _this.isClick && !_this.options.clickOpen) { + _this.hide(); + } + }); + } + + if (this.options.clickOpen) { + this.$element.on('mousedown.zf.tooltip', function (e) { + e.stopImmediatePropagation(); + if (_this.isClick) { + //_this.hide(); + // _this.isClick = false; + } else { + _this.isClick = true; + if ((_this.options.disableHover || !_this.$element.attr('tabindex')) && !_this.isActive) { + _this.show(); + } + } + }); + } else { + this.$element.on('mousedown.zf.tooltip', function (e) { + e.stopImmediatePropagation(); + _this.isClick = true; + }); + } + + if (!this.options.disableForTouch) { + this.$element.on('tap.zf.tooltip touchend.zf.tooltip', function (e) { + _this.isActive ? _this.hide() : _this.show(); + }); + } + + this.$element.on({ + // 'toggle.zf.trigger': this.toggle.bind(this), + // 'close.zf.trigger': this.hide.bind(this) + 'close.zf.trigger': this.hide.bind(this) + }); + + this.$element.on('focus.zf.tooltip', function (e) { + isFocus = true; + if (_this.isClick) { + // If we're not showing open on clicks, we need to pretend a click-launched focus isn't + // a real focus, otherwise on hover and come back we get bad behavior + if (!_this.options.clickOpen) { + isFocus = false; + } + return false; + } else { + _this.show(); + } + }).on('focusout.zf.tooltip', function (e) { + isFocus = false; + _this.isClick = false; + _this.hide(); + }).on('resizeme.zf.trigger', function () { + if (_this.isActive) { + _this._setPosition(); + } + }); + } + + /** + * adds a toggle method, in addition to the static show() & hide() functions + * @function + */ + + }, { + key: 'toggle', + value: function toggle() { + if (this.isActive) { + this.hide(); + } else { + this.show(); + } + } + + /** + * Destroys an instance of tooltip, removes template element from the view. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.attr('title', this.template.text()).off('.zf.trigger .zf.tootip') + // .removeClass('has-tip') + .removeAttr('aria-describedby').removeAttr('data-yeti-box').removeAttr('data-toggle').removeAttr('data-resize'); + + this.template.remove(); + + Foundation.unregisterPlugin(this); + } + }]); + + return Tooltip; + }(); + + Tooltip.defaults = { + disableForTouch: false, + /** + * Time, in ms, before a tooltip should open on hover. + * @option + * @example 200 + */ + hoverDelay: 200, + /** + * Time, in ms, a tooltip should take to fade into view. + * @option + * @example 150 + */ + fadeInDuration: 150, + /** + * Time, in ms, a tooltip should take to fade out of view. + * @option + * @example 150 + */ + fadeOutDuration: 150, + /** + * Disables hover events from opening the tooltip if set to true + * @option + * @example false + */ + disableHover: false, + /** + * Optional addtional classes to apply to the tooltip template on init. + * @option + * @example 'my-cool-tip-class' + */ + templateClasses: '', + /** + * Non-optional class added to tooltip templates. Foundation default is 'tooltip'. + * @option + * @example 'tooltip' + */ + tooltipClass: 'tooltip', + /** + * Class applied to the tooltip anchor element. + * @option + * @example 'has-tip' + */ + triggerClass: 'has-tip', + /** + * Minimum breakpoint size at which to open the tooltip. + * @option + * @example 'small' + */ + showOn: 'small', + /** + * Custom template to be used to generate markup for tooltip. + * @option + * @example '<div class="tooltip"></div>' + */ + template: '', + /** + * Text displayed in the tooltip template on open. + * @option + * @example 'Some cool space fact here.' + */ + tipText: '', + touchCloseText: 'Tap to close.', + /** + * Allows the tooltip to remain open if triggered with a click or touch event. + * @option + * @example true + */ + clickOpen: true, + /** + * Additional positioning classes, set by the JS + * @option + * @example 'top' + */ + positionClass: '', + /** + * Distance, in pixels, the template should push away from the anchor on the Y axis. + * @option + * @example 10 + */ + vOffset: 10, + /** + * Distance, in pixels, the template should push away from the anchor on the X axis, if aligned to a side. + * @option + * @example 12 + */ + hOffset: 12 + }; + + /** + * TODO utilize resize event trigger + */ + + // Window exports + Foundation.plugin(Tooltip, 'Tooltip'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.util.box.js b/libraries/foundation-6/dist/plugins/foundation.util.box.js new file mode 100755 index 00000000..b3ff90ee --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.util.box.js @@ -0,0 +1,196 @@ +'use strict'; + +!function ($) { + + Foundation.Box = { + ImNotTouchingYou: ImNotTouchingYou, + GetDimensions: GetDimensions, + GetOffsets: GetOffsets + }; + + /** + * Compares the dimensions of an element to a container and determines collision events with container. + * @function + * @param {jQuery} element - jQuery object to test for collisions. + * @param {jQuery} parent - jQuery object to use as bounding container. + * @param {Boolean} lrOnly - set to true to check left and right values only. + * @param {Boolean} tbOnly - set to true to check top and bottom values only. + * @default if no parent object passed, detects collisions with `window`. + * @returns {Boolean} - true if collision free, false if a collision in any direction. + */ + function ImNotTouchingYou(element, parent, lrOnly, tbOnly) { + var eleDims = GetDimensions(element), + top, + bottom, + left, + right; + + if (parent) { + var parDims = GetDimensions(parent); + + bottom = eleDims.offset.top + eleDims.height <= parDims.height + parDims.offset.top; + top = eleDims.offset.top >= parDims.offset.top; + left = eleDims.offset.left >= parDims.offset.left; + right = eleDims.offset.left + eleDims.width <= parDims.width + parDims.offset.left; + } else { + bottom = eleDims.offset.top + eleDims.height <= eleDims.windowDims.height + eleDims.windowDims.offset.top; + top = eleDims.offset.top >= eleDims.windowDims.offset.top; + left = eleDims.offset.left >= eleDims.windowDims.offset.left; + right = eleDims.offset.left + eleDims.width <= eleDims.windowDims.width; + } + + var allDirs = [bottom, top, left, right]; + + if (lrOnly) { + return left === right === true; + } + + if (tbOnly) { + return top === bottom === true; + } + + return allDirs.indexOf(false) === -1; + }; + + /** + * Uses native methods to return an object of dimension values. + * @function + * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window. + * @returns {Object} - nested object of integer pixel values + * TODO - if element is window, return only those values. + */ + function GetDimensions(elem, test) { + elem = elem.length ? elem[0] : elem; + + if (elem === window || elem === document) { + throw new Error("I'm sorry, Dave. I'm afraid I can't do that."); + } + + var rect = elem.getBoundingClientRect(), + parRect = elem.parentNode.getBoundingClientRect(), + winRect = document.body.getBoundingClientRect(), + winY = window.pageYOffset, + winX = window.pageXOffset; + + return { + width: rect.width, + height: rect.height, + offset: { + top: rect.top + winY, + left: rect.left + winX + }, + parentDims: { + width: parRect.width, + height: parRect.height, + offset: { + top: parRect.top + winY, + left: parRect.left + winX + } + }, + windowDims: { + width: winRect.width, + height: winRect.height, + offset: { + top: winY, + left: winX + } + } + }; + } + + /** + * Returns an object of top and left integer pixel values for dynamically rendered elements, + * such as: Tooltip, Reveal, and Dropdown + * @function + * @param {jQuery} element - jQuery object for the element being positioned. + * @param {jQuery} anchor - jQuery object for the element's anchor point. + * @param {String} position - a string relating to the desired position of the element, relative to it's anchor + * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element. + * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element. + * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset. + * TODO alter/rewrite to work with `em` values as well/instead of pixels + */ + function GetOffsets(element, anchor, position, vOffset, hOffset, isOverflow) { + var $eleDims = GetDimensions(element), + $anchorDims = anchor ? GetDimensions(anchor) : null; + + switch (position) { + case 'top': + return { + left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left, + top: $anchorDims.offset.top - ($eleDims.height + vOffset) + }; + break; + case 'left': + return { + left: $anchorDims.offset.left - ($eleDims.width + hOffset), + top: $anchorDims.offset.top + }; + break; + case 'right': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset, + top: $anchorDims.offset.top + }; + break; + case 'center top': + return { + left: $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2, + top: $anchorDims.offset.top - ($eleDims.height + vOffset) + }; + break; + case 'center bottom': + return { + left: isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2, + top: $anchorDims.offset.top + $anchorDims.height + vOffset + }; + break; + case 'center left': + return { + left: $anchorDims.offset.left - ($eleDims.width + hOffset), + top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2 + }; + break; + case 'center right': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset + 1, + top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2 + }; + break; + case 'center': + return { + left: $eleDims.windowDims.offset.left + $eleDims.windowDims.width / 2 - $eleDims.width / 2, + top: $eleDims.windowDims.offset.top + $eleDims.windowDims.height / 2 - $eleDims.height / 2 + }; + break; + case 'reveal': + return { + left: ($eleDims.windowDims.width - $eleDims.width) / 2, + top: $eleDims.windowDims.offset.top + vOffset + }; + case 'reveal full': + return { + left: $eleDims.windowDims.offset.left, + top: $eleDims.windowDims.offset.top + }; + break; + case 'left bottom': + return { + left: $anchorDims.offset.left - ($eleDims.width + hOffset), + top: $anchorDims.offset.top + $anchorDims.height + }; + break; + case 'right bottom': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset - $eleDims.width, + top: $anchorDims.offset.top + $anchorDims.height + }; + break; + default: + return { + left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left, + top: $anchorDims.offset.top + $anchorDims.height + vOffset + }; + } + } +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.util.keyboard.js b/libraries/foundation-6/dist/plugins/foundation.util.keyboard.js new file mode 100755 index 00000000..e9e03bbe --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.util.keyboard.js @@ -0,0 +1,123 @@ +/******************************************* + * * + * This util was created by Marius Olbertz * + * Please thank Marius on GitHub /owlbertz * + * or the web http://www.mariusolbertz.de/ * + * * + ******************************************/ + +'use strict'; + +!function ($) { + + var keyCodes = { + 9: 'TAB', + 13: 'ENTER', + 27: 'ESCAPE', + 32: 'SPACE', + 37: 'ARROW_LEFT', + 38: 'ARROW_UP', + 39: 'ARROW_RIGHT', + 40: 'ARROW_DOWN' + }; + + var commands = {}; + + var Keyboard = { + keys: getKeyCodes(keyCodes), + + /** + * Parses the (keyboard) event and returns a String that represents its key + * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE + * @param {Event} event - the event generated by the event handler + * @return String key - String that represents the key pressed + */ + parseKey: function (event) { + var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase(); + if (event.shiftKey) key = 'SHIFT_' + key; + if (event.ctrlKey) key = 'CTRL_' + key; + if (event.altKey) key = 'ALT_' + key; + return key; + }, + + + /** + * Handles the given (keyboard) event + * @param {Event} event - the event generated by the event handler + * @param {String} component - Foundation component's name, e.g. Slider or Reveal + * @param {Objects} functions - collection of functions that are to be executed + */ + handleKey: function (event, component, functions) { + var commandList = commands[component], + keyCode = this.parseKey(event), + cmds, + command, + fn; + + if (!commandList) return console.warn('Component not defined!'); + + if (typeof commandList.ltr === 'undefined') { + // this component does not differentiate between ltr and rtl + cmds = commandList; // use plain list + } else { + // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa + if (Foundation.rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl);else cmds = $.extend({}, commandList.rtl, commandList.ltr); + } + command = cmds[keyCode]; + + fn = functions[command]; + if (fn && typeof fn === 'function') { + // execute function if exists + var returnValue = fn.apply(); + if (functions.handled || typeof functions.handled === 'function') { + // execute function when event was handled + functions.handled(returnValue); + } + } else { + if (functions.unhandled || typeof functions.unhandled === 'function') { + // execute function when event was not handled + functions.unhandled(); + } + } + }, + + + /** + * Finds all focusable elements within the given `$element` + * @param {jQuery} $element - jQuery object to search within + * @return {jQuery} $focusable - all focusable elements within `$element` + */ + findFocusable: function ($element) { + return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function () { + if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { + return false; + } //only have visible elements and those that have a tabindex greater or equal 0 + return true; + }); + }, + + + /** + * Returns the component name name + * @param {Object} component - Foundation component, e.g. Slider or Reveal + * @return String componentName + */ + + register: function (componentName, cmds) { + commands[componentName] = cmds; + } + }; + + /* + * Constants for easier comparing. + * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE + */ + function getKeyCodes(kcs) { + var k = {}; + for (var kc in kcs) { + k[kcs[kc]] = kcs[kc]; + }return k; + } + + Foundation.Keyboard = Keyboard; +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.util.mediaQuery.js b/libraries/foundation-6/dist/plugins/foundation.util.mediaQuery.js new file mode 100755 index 00000000..328be8e9 --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.util.mediaQuery.js @@ -0,0 +1,216 @@ +'use strict'; + +!function ($) { + + // Default set of media queries + var defaultQueries = { + 'default': 'only screen', + landscape: 'only screen and (orientation: landscape)', + portrait: 'only screen and (orientation: portrait)', + retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)' + }; + + var MediaQuery = { + queries: [], + + current: '', + + /** + * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher. + * @function + * @private + */ + _init: function () { + var self = this; + var extractedStyles = $('.foundation-mq').css('font-family'); + var namedQueries; + + namedQueries = parseStyleToObject(extractedStyles); + + for (var key in namedQueries) { + if (namedQueries.hasOwnProperty(key)) { + self.queries.push({ + name: key, + value: 'only screen and (min-width: ' + namedQueries[key] + ')' + }); + } + } + + this.current = this._getCurrentSize(); + + this._watcher(); + }, + + + /** + * Checks if the screen is at least as wide as a breakpoint. + * @function + * @param {String} size - Name of the breakpoint to check. + * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller. + */ + atLeast: function (size) { + var query = this.get(size); + + if (query) { + return window.matchMedia(query).matches; + } + + return false; + }, + + + /** + * Gets the media query of a breakpoint. + * @function + * @param {String} size - Name of the breakpoint to get. + * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist. + */ + get: function (size) { + for (var i in this.queries) { + if (this.queries.hasOwnProperty(i)) { + var query = this.queries[i]; + if (size === query.name) return query.value; + } + } + + return null; + }, + + + /** + * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one). + * @function + * @private + * @returns {String} Name of the current breakpoint. + */ + _getCurrentSize: function () { + var matched; + + for (var i = 0; i < this.queries.length; i++) { + var query = this.queries[i]; + + if (window.matchMedia(query.value).matches) { + matched = query; + } + } + + if (typeof matched === 'object') { + return matched.name; + } else { + return matched; + } + }, + + + /** + * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes. + * @function + * @private + */ + _watcher: function () { + var _this = this; + + $(window).on('resize.zf.mediaquery', function () { + var newSize = _this._getCurrentSize(), + currentSize = _this.current; + + if (newSize !== currentSize) { + // Change the current media query + _this.current = newSize; + + // Broadcast the media query change on the window + $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]); + } + }); + } + }; + + Foundation.MediaQuery = MediaQuery; + + // matchMedia() polyfill - Test a CSS media type/query in JS. + // Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license + window.matchMedia || (window.matchMedia = function () { + 'use strict'; + + // For browsers that support matchMedium api such as IE 9 and webkit + + var styleMedia = window.styleMedia || window.media; + + // For those that don't support matchMedium + if (!styleMedia) { + var style = document.createElement('style'), + script = document.getElementsByTagName('script')[0], + info = null; + + style.type = 'text/css'; + style.id = 'matchmediajs-test'; + + script.parentNode.insertBefore(style, script); + + // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers + info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle; + + styleMedia = { + matchMedium: function (media) { + var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; + + // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers + if (style.styleSheet) { + style.styleSheet.cssText = text; + } else { + style.textContent = text; + } + + // Test if media query is true or false + return info.width === '1px'; + } + }; + } + + return function (media) { + return { + matches: styleMedia.matchMedium(media || 'all'), + media: media || 'all' + }; + }; + }()); + + // Thank you: https://github.com/sindresorhus/query-string + function parseStyleToObject(str) { + var styleObject = {}; + + if (typeof str !== 'string') { + return styleObject; + } + + str = str.trim().slice(1, -1); // browsers re-quote string style values + + if (!str) { + return styleObject; + } + + styleObject = str.split('&').reduce(function (ret, param) { + var parts = param.replace(/\+/g, ' ').split('='); + var key = parts[0]; + var val = parts[1]; + key = decodeURIComponent(key); + + // missing `=` should be `null`: + // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters + val = val === undefined ? null : decodeURIComponent(val); + + if (!ret.hasOwnProperty(key)) { + ret[key] = val; + } else if (Array.isArray(ret[key])) { + ret[key].push(val); + } else { + ret[key] = [ret[key], val]; + } + return ret; + }, {}); + + return styleObject; + } + + Foundation.MediaQuery = MediaQuery; +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.util.motion.js b/libraries/foundation-6/dist/plugins/foundation.util.motion.js new file mode 100755 index 00000000..c045ec84 --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.util.motion.js @@ -0,0 +1,97 @@ +'use strict'; + +!function ($) { + + /** + * Motion module. + * @module foundation.motion + */ + + var initClasses = ['mui-enter', 'mui-leave']; + var activeClasses = ['mui-enter-active', 'mui-leave-active']; + + var Motion = { + animateIn: function (element, animation, cb) { + animate(true, element, animation, cb); + }, + + animateOut: function (element, animation, cb) { + animate(false, element, animation, cb); + } + }; + + function Move(duration, elem, fn) { + var anim, + prog, + start = null; + // console.log('called'); + + function move(ts) { + if (!start) start = window.performance.now(); + // console.log(start, ts); + prog = ts - start; + fn.apply(elem); + + if (prog < duration) { + anim = window.requestAnimationFrame(move, elem); + } else { + window.cancelAnimationFrame(anim); + elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]); + } + } + anim = window.requestAnimationFrame(move); + } + + /** + * Animates an element in or out using a CSS transition class. + * @function + * @private + * @param {Boolean} isIn - Defines if the animation is in or out. + * @param {Object} element - jQuery or HTML object to animate. + * @param {String} animation - CSS class to use. + * @param {Function} cb - Callback to run when animation is finished. + */ + function animate(isIn, element, animation, cb) { + element = $(element).eq(0); + + if (!element.length) return; + + var initClass = isIn ? initClasses[0] : initClasses[1]; + var activeClass = isIn ? activeClasses[0] : activeClasses[1]; + + // Set up the animation + reset(); + + element.addClass(animation).css('transition', 'none'); + + requestAnimationFrame(function () { + element.addClass(initClass); + if (isIn) element.show(); + }); + + // Start the animation + requestAnimationFrame(function () { + element[0].offsetWidth; + element.css('transition', '').addClass(activeClass); + }); + + // Clean up the animation when it finishes + element.one(Foundation.transitionend(element), finish); + + // Hides the element (for out animations), resets the element, and runs a callback + function finish() { + if (!isIn) element.hide(); + reset(); + if (cb) cb.apply(element); + } + + // Resets transitions and removes motion-specific classes + function reset() { + element[0].style.transitionDuration = 0; + element.removeClass(initClass + ' ' + activeClass + ' ' + animation); + } + } + + Foundation.Move = Move; + Foundation.Motion = Motion; +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.util.nest.js b/libraries/foundation-6/dist/plugins/foundation.util.nest.js new file mode 100755 index 00000000..a8433837 --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.util.nest.js @@ -0,0 +1,69 @@ +'use strict'; + +!function ($) { + + var Nest = { + Feather: function (menu) { + var type = arguments.length <= 1 || arguments[1] === undefined ? 'zf' : arguments[1]; + + menu.attr('role', 'menubar'); + + var items = menu.find('li').attr({ 'role': 'menuitem' }), + subMenuClass = 'is-' + type + '-submenu', + subItemClass = subMenuClass + '-item', + hasSubClass = 'is-' + type + '-submenu-parent'; + + menu.find('a:first').attr('tabindex', 0); + + items.each(function () { + var $item = $(this), + $sub = $item.children('ul'); + + if ($sub.length) { + $item.addClass(hasSubClass).attr({ + 'aria-haspopup': true, + 'aria-expanded': false, + 'aria-label': $item.children('a:first').text() + }); + + $sub.addClass('submenu ' + subMenuClass).attr({ + 'data-submenu': '', + 'aria-hidden': true, + 'role': 'menu' + }); + } + + if ($item.parent('[data-submenu]').length) { + $item.addClass('is-submenu-item ' + subItemClass); + } + }); + + return; + }, + Burn: function (menu, type) { + var items = menu.find('li').removeAttr('tabindex'), + subMenuClass = 'is-' + type + '-submenu', + subItemClass = subMenuClass + '-item', + hasSubClass = 'is-' + type + '-submenu-parent'; + + menu.find('*').removeClass(subMenuClass + ' ' + subItemClass + ' ' + hasSubClass + ' is-submenu-item submenu is-active').removeAttr('data-submenu').css('display', ''); + + // console.log( menu.find('.' + subMenuClass + ', .' + subItemClass + ', .has-submenu, .is-submenu-item, .submenu, [data-submenu]') + // .removeClass(subMenuClass + ' ' + subItemClass + ' has-submenu is-submenu-item submenu') + // .removeAttr('data-submenu')); + // items.each(function(){ + // var $item = $(this), + // $sub = $item.children('ul'); + // if($item.parent('[data-submenu]').length){ + // $item.removeClass('is-submenu-item ' + subItemClass); + // } + // if($sub.length){ + // $item.removeClass('has-submenu'); + // $sub.removeClass('submenu ' + subMenuClass).removeAttr('data-submenu'); + // } + // }); + } + }; + + Foundation.Nest = Nest; +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.util.timerAndImageLoader.js b/libraries/foundation-6/dist/plugins/foundation.util.timerAndImageLoader.js new file mode 100755 index 00000000..21e3384f --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.util.timerAndImageLoader.js @@ -0,0 +1,84 @@ +'use strict'; + +!function ($) { + + function Timer(elem, options, cb) { + var _this = this, + duration = options.duration, + //options is an object for easily adding features later. + nameSpace = Object.keys(elem.data())[0] || 'timer', + remain = -1, + start, + timer; + + this.isPaused = false; + + this.restart = function () { + remain = -1; + clearTimeout(timer); + this.start(); + }; + + this.start = function () { + this.isPaused = false; + // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things. + clearTimeout(timer); + remain = remain <= 0 ? duration : remain; + elem.data('paused', false); + start = Date.now(); + timer = setTimeout(function () { + if (options.infinite) { + _this.restart(); //rerun the timer. + } + cb(); + }, remain); + elem.trigger('timerstart.zf.' + nameSpace); + }; + + this.pause = function () { + this.isPaused = true; + //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things. + clearTimeout(timer); + elem.data('paused', true); + var end = Date.now(); + remain = remain - (end - start); + elem.trigger('timerpaused.zf.' + nameSpace); + }; + } + + /** + * Runs a callback function when images are fully loaded. + * @param {Object} images - Image(s) to check if loaded. + * @param {Func} callback - Function to execute when image is fully loaded. + */ + function onImagesLoaded(images, callback) { + var self = this, + unloaded = images.length; + + if (unloaded === 0) { + callback(); + } + + images.each(function () { + if (this.complete) { + singleImageLoaded(); + } else if (typeof this.naturalWidth !== 'undefined' && this.naturalWidth > 0) { + singleImageLoaded(); + } else { + $(this).one('load', function () { + singleImageLoaded(); + }); + } + }); + + function singleImageLoaded() { + unloaded--; + if (unloaded === 0) { + callback(); + } + } + } + + Foundation.Timer = Timer; + Foundation.onImagesLoaded = onImagesLoaded; +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.util.touch.js b/libraries/foundation-6/dist/plugins/foundation.util.touch.js new file mode 100755 index 00000000..b37d0f16 --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.util.touch.js @@ -0,0 +1,352 @@ +//************************************************** +//**Work inspired by multiple jquery swipe plugins** +//**Done by Yohai Ararat *************************** +//************************************************** +(function ($) { + + $.spotSwipe = { + version: '1.0.0', + enabled: 'ontouchstart' in document.documentElement, + preventDefault: false, + moveThreshold: 75, + timeThreshold: 200 + }; + + var startPosX, + startPosY, + startTime, + elapsedTime, + isMoving = false; + + function onTouchEnd() { + // alert(this); + this.removeEventListener('touchmove', onTouchMove); + this.removeEventListener('touchend', onTouchEnd); + isMoving = false; + } + + function onTouchMove(e) { + if ($.spotSwipe.preventDefault) { + e.preventDefault(); + } + if (isMoving) { + var x = e.touches[0].pageX; + var y = e.touches[0].pageY; + var dx = startPosX - x; + var dy = startPosY - y; + var dir; + elapsedTime = new Date().getTime() - startTime; + if (Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) { + dir = dx > 0 ? 'left' : 'right'; + } + // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) { + // dir = dy > 0 ? 'down' : 'up'; + // } + if (dir) { + e.preventDefault(); + onTouchEnd.call(this); + $(this).trigger('swipe', dir).trigger('swipe' + dir); + } + } + } + + function onTouchStart(e) { + if (e.touches.length == 1) { + startPosX = e.touches[0].pageX; + startPosY = e.touches[0].pageY; + isMoving = true; + startTime = new Date().getTime(); + this.addEventListener('touchmove', onTouchMove, false); + this.addEventListener('touchend', onTouchEnd, false); + } + } + + function init() { + this.addEventListener && this.addEventListener('touchstart', onTouchStart, false); + } + + function teardown() { + this.removeEventListener('touchstart', onTouchStart); + } + + $.event.special.swipe = { setup: init }; + + $.each(['left', 'up', 'down', 'right'], function () { + $.event.special['swipe' + this] = { setup: function () { + $(this).on('swipe', $.noop); + } }; + }); +})(jQuery); +/**************************************************** + * Method for adding psuedo drag events to elements * + ***************************************************/ +!function ($) { + $.fn.addTouch = function () { + this.each(function (i, el) { + $(el).bind('touchstart touchmove touchend touchcancel', function () { + //we pass the original event object because the jQuery event + //object is normalized to w3c specs and does not provide the TouchList + handleTouch(event); + }); + }); + + var handleTouch = function (event) { + var touches = event.changedTouches, + first = touches[0], + eventTypes = { + touchstart: 'mousedown', + touchmove: 'mousemove', + touchend: 'mouseup' + }, + type = eventTypes[event.type], + simulatedEvent; + + if ('MouseEvent' in window && typeof window.MouseEvent === 'function') { + simulatedEvent = new window.MouseEvent(type, { + 'bubbles': true, + 'cancelable': true, + 'screenX': first.screenX, + 'screenY': first.screenY, + 'clientX': first.clientX, + 'clientY': first.clientY + }); + } else { + simulatedEvent = document.createEvent('MouseEvent'); + simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0 /*left*/, null); + } + first.target.dispatchEvent(simulatedEvent); + }; + }; +}(jQuery); + +//********************************** +//**From the jQuery Mobile Library** +//**need to recreate functionality** +//**and try to improve if possible** +//********************************** + +/* Removing the jQuery function **** +************************************ + +(function( $, window, undefined ) { + + var $document = $( document ), + // supportTouch = $.mobile.support.touch, + touchStartEvent = 'touchstart'//supportTouch ? "touchstart" : "mousedown", + touchStopEvent = 'touchend'//supportTouch ? "touchend" : "mouseup", + touchMoveEvent = 'touchmove'//supportTouch ? "touchmove" : "mousemove"; + + // setup new event shortcuts + $.each( ( "touchstart touchmove touchend " + + "swipe swipeleft swiperight" ).split( " " ), function( i, name ) { + + $.fn[ name ] = function( fn ) { + return fn ? this.bind( name, fn ) : this.trigger( name ); + }; + + // jQuery < 1.8 + if ( $.attrFn ) { + $.attrFn[ name ] = true; + } + }); + + function triggerCustomEvent( obj, eventType, event, bubble ) { + var originalType = event.type; + event.type = eventType; + if ( bubble ) { + $.event.trigger( event, undefined, obj ); + } else { + $.event.dispatch.call( obj, event ); + } + event.type = originalType; + } + + // also handles taphold + + // Also handles swipeleft, swiperight + $.event.special.swipe = { + + // More than this horizontal displacement, and we will suppress scrolling. + scrollSupressionThreshold: 30, + + // More time than this, and it isn't a swipe. + durationThreshold: 1000, + + // Swipe horizontal displacement must be more than this. + horizontalDistanceThreshold: window.devicePixelRatio >= 2 ? 15 : 30, + + // Swipe vertical displacement must be less than this. + verticalDistanceThreshold: window.devicePixelRatio >= 2 ? 15 : 30, + + getLocation: function ( event ) { + var winPageX = window.pageXOffset, + winPageY = window.pageYOffset, + x = event.clientX, + y = event.clientY; + + if ( event.pageY === 0 && Math.floor( y ) > Math.floor( event.pageY ) || + event.pageX === 0 && Math.floor( x ) > Math.floor( event.pageX ) ) { + + // iOS4 clientX/clientY have the value that should have been + // in pageX/pageY. While pageX/page/ have the value 0 + x = x - winPageX; + y = y - winPageY; + } else if ( y < ( event.pageY - winPageY) || x < ( event.pageX - winPageX ) ) { + + // Some Android browsers have totally bogus values for clientX/Y + // when scrolling/zooming a page. Detectable since clientX/clientY + // should never be smaller than pageX/pageY minus page scroll + x = event.pageX - winPageX; + y = event.pageY - winPageY; + } + + return { + x: x, + y: y + }; + }, + + start: function( event ) { + var data = event.originalEvent.touches ? + event.originalEvent.touches[ 0 ] : event, + location = $.event.special.swipe.getLocation( data ); + return { + time: ( new Date() ).getTime(), + coords: [ location.x, location.y ], + origin: $( event.target ) + }; + }, + + stop: function( event ) { + var data = event.originalEvent.touches ? + event.originalEvent.touches[ 0 ] : event, + location = $.event.special.swipe.getLocation( data ); + return { + time: ( new Date() ).getTime(), + coords: [ location.x, location.y ] + }; + }, + + handleSwipe: function( start, stop, thisObject, origTarget ) { + if ( stop.time - start.time < $.event.special.swipe.durationThreshold && + Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold && + Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) { + var direction = start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight"; + + triggerCustomEvent( thisObject, "swipe", $.Event( "swipe", { target: origTarget, swipestart: start, swipestop: stop }), true ); + triggerCustomEvent( thisObject, direction,$.Event( direction, { target: origTarget, swipestart: start, swipestop: stop } ), true ); + return true; + } + return false; + + }, + + // This serves as a flag to ensure that at most one swipe event event is + // in work at any given time + eventInProgress: false, + + setup: function() { + var events, + thisObject = this, + $this = $( thisObject ), + context = {}; + + // Retrieve the events data for this element and add the swipe context + events = $.data( this, "mobile-events" ); + if ( !events ) { + events = { length: 0 }; + $.data( this, "mobile-events", events ); + } + events.length++; + events.swipe = context; + + context.start = function( event ) { + + // Bail if we're already working on a swipe event + if ( $.event.special.swipe.eventInProgress ) { + return; + } + $.event.special.swipe.eventInProgress = true; + + var stop, + start = $.event.special.swipe.start( event ), + origTarget = event.target, + emitted = false; + + context.move = function( event ) { + if ( !start || event.isDefaultPrevented() ) { + return; + } + + stop = $.event.special.swipe.stop( event ); + if ( !emitted ) { + emitted = $.event.special.swipe.handleSwipe( start, stop, thisObject, origTarget ); + if ( emitted ) { + + // Reset the context to make way for the next swipe event + $.event.special.swipe.eventInProgress = false; + } + } + // prevent scrolling + if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) { + event.preventDefault(); + } + }; + + context.stop = function() { + emitted = true; + + // Reset the context to make way for the next swipe event + $.event.special.swipe.eventInProgress = false; + $document.off( touchMoveEvent, context.move ); + context.move = null; + }; + + $document.on( touchMoveEvent, context.move ) + .one( touchStopEvent, context.stop ); + }; + $this.on( touchStartEvent, context.start ); + }, + + teardown: function() { + var events, context; + + events = $.data( this, "mobile-events" ); + if ( events ) { + context = events.swipe; + delete events.swipe; + events.length--; + if ( events.length === 0 ) { + $.removeData( this, "mobile-events" ); + } + } + + if ( context ) { + if ( context.start ) { + $( this ).off( touchStartEvent, context.start ); + } + if ( context.move ) { + $document.off( touchMoveEvent, context.move ); + } + if ( context.stop ) { + $document.off( touchStopEvent, context.stop ); + } + } + } + }; + $.each({ + swipeleft: "swipe.left", + swiperight: "swipe.right" + }, function( event, sourceEvent ) { + + $.event.special[ event ] = { + setup: function() { + $( this ).bind( sourceEvent, $.noop ); + }, + teardown: function() { + $( this ).unbind( sourceEvent ); + } + }; + }); +})( jQuery, this ); +*/ \ No newline at end of file diff --git a/libraries/foundation-6/dist/plugins/foundation.util.triggers.js b/libraries/foundation-6/dist/plugins/foundation.util.triggers.js new file mode 100755 index 00000000..17eb7cbc --- /dev/null +++ b/libraries/foundation-6/dist/plugins/foundation.util.triggers.js @@ -0,0 +1,243 @@ +'use strict'; + +!function ($) { + + var MutationObserver = function () { + var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; + for (var i = 0; i < prefixes.length; i++) { + if (prefixes[i] + 'MutationObserver' in window) { + return window[prefixes[i] + 'MutationObserver']; + } + } + return false; + }(); + + var triggers = function (el, type) { + el.data(type).split(' ').forEach(function (id) { + $('#' + id)[type === 'close' ? 'trigger' : 'triggerHandler'](type + '.zf.trigger', [el]); + }); + }; + // Elements with [data-open] will reveal a plugin that supports it when clicked. + $(document).on('click.zf.trigger', '[data-open]', function () { + triggers($(this), 'open'); + }); + + // Elements with [data-close] will close a plugin that supports it when clicked. + // If used without a value on [data-close], the event will bubble, allowing it to close a parent component. + $(document).on('click.zf.trigger', '[data-close]', function () { + var id = $(this).data('close'); + if (id) { + triggers($(this), 'close'); + } else { + $(this).trigger('close.zf.trigger'); + } + }); + + // Elements with [data-toggle] will toggle a plugin that supports it when clicked. + $(document).on('click.zf.trigger', '[data-toggle]', function () { + triggers($(this), 'toggle'); + }); + + // Elements with [data-closable] will respond to close.zf.trigger events. + $(document).on('close.zf.trigger', '[data-closable]', function (e) { + e.stopPropagation(); + var animation = $(this).data('closable'); + + if (animation !== '') { + Foundation.Motion.animateOut($(this), animation, function () { + $(this).trigger('closed.zf'); + }); + } else { + $(this).fadeOut().trigger('closed.zf'); + } + }); + + $(document).on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', function () { + var id = $(this).data('toggle-focus'); + $('#' + id).triggerHandler('toggle.zf.trigger', [$(this)]); + }); + + /** + * Fires once after all other scripts have loaded + * @function + * @private + */ + $(window).load(function () { + checkListeners(); + }); + + function checkListeners() { + eventsListener(); + resizeListener(); + scrollListener(); + closemeListener(); + } + + //******** only fires this function once on load, if there's something to watch ******** + function closemeListener(pluginName) { + var yetiBoxes = $('[data-yeti-box]'), + plugNames = ['dropdown', 'tooltip', 'reveal']; + + if (pluginName) { + if (typeof pluginName === 'string') { + plugNames.push(pluginName); + } else if (typeof pluginName === 'object' && typeof pluginName[0] === 'string') { + plugNames.concat(pluginName); + } else { + console.error('Plugin names must be strings'); + } + } + if (yetiBoxes.length) { + var listeners = plugNames.map(function (name) { + return 'closeme.zf.' + name; + }).join(' '); + + $(window).off(listeners).on(listeners, function (e, pluginId) { + var plugin = e.namespace.split('.')[0]; + var plugins = $('[data-' + plugin + ']').not('[data-yeti-box="' + pluginId + '"]'); + + plugins.each(function () { + var _this = $(this); + + _this.triggerHandler('close.zf.trigger', [_this]); + }); + }); + } + } + + function resizeListener(debounce) { + var timer = void 0, + $nodes = $('[data-resize]'); + if ($nodes.length) { + $(window).off('resize.zf.trigger').on('resize.zf.trigger', function (e) { + if (timer) { + clearTimeout(timer); + } + + timer = setTimeout(function () { + + if (!MutationObserver) { + //fallback for IE 9 + $nodes.each(function () { + $(this).triggerHandler('resizeme.zf.trigger'); + }); + } + //trigger all listening elements and signal a resize event + $nodes.attr('data-events', "resize"); + }, debounce || 10); //default time to emit resize event + }); + } + } + + function scrollListener(debounce) { + var timer = void 0, + $nodes = $('[data-scroll]'); + if ($nodes.length) { + $(window).off('scroll.zf.trigger').on('scroll.zf.trigger', function (e) { + if (timer) { + clearTimeout(timer); + } + + timer = setTimeout(function () { + + if (!MutationObserver) { + //fallback for IE 9 + $nodes.each(function () { + $(this).triggerHandler('scrollme.zf.trigger'); + }); + } + //trigger all listening elements and signal a scroll event + $nodes.attr('data-events', "scroll"); + }, debounce || 10); //default time to emit scroll event + }); + } + } + + function eventsListener() { + if (!MutationObserver) { + return false; + } + var nodes = document.querySelectorAll('[data-resize], [data-scroll], [data-mutate]'); + + //element callback + var listeningElementsMutation = function (mutationRecordsList) { + var $target = $(mutationRecordsList[0].target); + //trigger the event handler for the element depending on type + switch ($target.attr("data-events")) { + + case "resize": + $target.triggerHandler('resizeme.zf.trigger', [$target]); + break; + + case "scroll": + $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); + break; + + // case "mutate" : + // console.log('mutate', $target); + // $target.triggerHandler('mutate.zf.trigger'); + // + // //make sure we don't get stuck in an infinite loop from sloppy codeing + // if ($target.index('[data-mutate]') == $("[data-mutate]").length-1) { + // domMutationObserver(); + // } + // break; + + default: + return false; + //nothing + } + }; + + if (nodes.length) { + //for each element that needs to listen for resizing, scrolling, (or coming soon mutation) add a single observer + for (var i = 0; i <= nodes.length - 1; i++) { + var elementObserver = new MutationObserver(listeningElementsMutation); + elementObserver.observe(nodes[i], { attributes: true, childList: false, characterData: false, subtree: false, attributeFilter: ["data-events"] }); + } + } + } + + // ------------------------------------ + + // [PH] + // Foundation.CheckWatchers = checkWatchers; + Foundation.IHearYou = checkListeners; + // Foundation.ISeeYou = scrollListener; + // Foundation.IFeelYou = closemeListener; +}(jQuery); + +// function domMutationObserver(debounce) { +// // !!! This is coming soon and needs more work; not active !!! // +// var timer, +// nodes = document.querySelectorAll('[data-mutate]'); +// // +// if (nodes.length) { +// // var MutationObserver = (function () { +// // var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; +// // for (var i=0; i < prefixes.length; i++) { +// // if (prefixes[i] + 'MutationObserver' in window) { +// // return window[prefixes[i] + 'MutationObserver']; +// // } +// // } +// // return false; +// // }()); +// +// +// //for the body, we need to listen for all changes effecting the style and class attributes +// var bodyObserver = new MutationObserver(bodyMutation); +// bodyObserver.observe(document.body, { attributes: true, childList: true, characterData: false, subtree:true, attributeFilter:["style", "class"]}); +// +// +// //body callback +// function bodyMutation(mutate) { +// //trigger all listening elements and signal a mutation event +// if (timer) { clearTimeout(timer); } +// +// timer = setTimeout(function() { +// bodyObserver.disconnect(); +// $('[data-mutate]').attr('data-events',"mutate"); +// }, debounce || 150); +// } +// } +// } \ No newline at end of file diff --git a/libraries/foundation-6/docs/assets/img/a11y/chrome-a11y-inspector.jpg b/libraries/foundation-6/docs/assets/img/a11y/chrome-a11y-inspector.jpg new file mode 100755 index 0000000000000000000000000000000000000000..cb0694de64d5efc70895bd11b7976aaab1773f05 GIT binary patch literal 20979 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 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/rectangle-1.jpg b/libraries/foundation-6/docs/assets/img/generic/rectangle-1.jpg new file mode 100755 index 0000000000000000000000000000000000000000..2898e4cccf608cc8cf844740c17c7eb0cb3a952b GIT binary patch literal 9284 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 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/rectangle-2.jpg b/libraries/foundation-6/docs/assets/img/generic/rectangle-2.jpg new file mode 100755 index 0000000000000000000000000000000000000000..a48b680e658421ed2f85e9e3ff283bbbab753c28 GIT binary patch literal 172889 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�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	fayu6>BRp5zbob=c$NT=6a^~Xp{ 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 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/rectangle-3.jpg b/libraries/foundation-6/docs/assets/img/generic/rectangle-3.jpg new file mode 100755 index 0000000000000000000000000000000000000000..ec69293a7792a6118ac92b870b0e89b3a7be06ba GIT binary patch literal 14048 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 ONV(9gA7sZJeE2^)bEPl< literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/rectangle-4.jpg b/libraries/foundation-6/docs/assets/img/generic/rectangle-4.jpg new file mode 100755 index 0000000000000000000000000000000000000000..df2ac80ab9ed380a4fc95aa9cdf791c1f408095e GIT binary patch literal 32780 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%0Aj%lrqS)4rnYiSR~kA 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 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/rectangle-5.jpg b/libraries/foundation-6/docs/assets/img/generic/rectangle-5.jpg new file mode 100755 index 0000000000000000000000000000000000000000..632e907092952d6802d9a63f9c5a44bf0e895b67 GIT binary patch literal 31295 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 Y*8Z=){{QglzklFAU;FP6_4nuh2XQqYT>t<8 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/rectangle-6.jpg b/libraries/foundation-6/docs/assets/img/generic/rectangle-6.jpg new file mode 100755 index 0000000000000000000000000000000000000000..79cc090104372b9a954e225ce1bb881c23926ca3 GIT binary patch literal 33578 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�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 Ukh3zMm-$u!pXc?z-js9y+0{cNGXMYp literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/rectangle-7.jpg b/libraries/foundation-6/docs/assets/img/generic/rectangle-7.jpg new file mode 100755 index 0000000000000000000000000000000000000000..3c60ba7ee755dcf54f12bcd58eb1fb83c14a567d GIT binary patch literal 30779 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 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/rectangle-8.jpg b/libraries/foundation-6/docs/assets/img/generic/rectangle-8.jpg new file mode 100755 index 0000000000000000000000000000000000000000..9902a5f9f0a2dcc5ff5cd8655c70938f132b099d GIT binary patch literal 69069 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%0AC&!kru#4 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�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 M4B%bY@89hI0BQk1#{d8T literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/square-1.jpg b/libraries/foundation-6/docs/assets/img/generic/square-1.jpg new file mode 100755 index 0000000000000000000000000000000000000000..580ed19d028402ce4de3227c58b88b482285296b GIT binary patch literal 38630 zcma%ibx<5n^yk82A-KB-cXvr}cUhdpokc=$O>kS>-4_W?aJS$r1o)D`A^`%ygLC}u zs;=t(yEipeGySG}db*}xzxO_$ep!3@1;A5PR8a&VAp-!muLt1e4**}@7wqy0fCNAR z005G&MW+B9Ia?1KJAm!LYYEcJ1|SN6hJu2Eih_oUiuMNW^?ZwghKBJL3lsA#CMFgh z*8dhfEF4@sTpTPyLLwqULMlp1N-Em_D@f?*=-61;WO#UF6vX(%6#rN8|9kN=0KmsU z+C$m{BH;s&@sWV|NG~G*C;)&AM0%Cij{YBcy+uI<prK<R0sddb>z5z{QBcwF0LVzd zS3yPv0#T6vr#3P^fF8(4fFh@ZYRy3C6`oqcPlVR|o^eo@_-tYO+y)XM@F5bN3IBh; z=k@vjX&CTY^R+>IdIBJyoDLz1H3L797wXv{<I6e#3;3$W2jT-{0FT{uhGqKNC?sL5 z#mua4fESf2L`ayn1+D0=EUKc^txG8dTCqn?XWd-&@}tqxI8|0Ck^V=5g4>{zS~xOm zQy?~PWg?n9aBXq>0p%Cnu~zh-j4^moF9(jJ11(~`EHS`x3=5}x@FYM~_WPHesR`wG zZ*-?VutgGJG}E+6irCtFe#>s3C$@!R3L*#SR?VXjq9qZiDo`<D`Snt9m)V`DeOW%? z(+$@AsR~fN*OtSu4`Zkld|3Rw!`EWtd8D{49yYWiNEc^g0bm$KqDOaD`V|O(C#5L& zWfqI0@+%WfIM;1O;AyjJypdD);cQ~5K*MgOY+sn~*z@$a)uerN54tPp{JnWzM1goS z$@Ev<)TDzBAIoZGD-<YWr+g$l3T)U=m#_oYtg#|-$R4-Pi^mk-7Zm=t$Y8_#0*D6i z$@;CM>$Pf|E6XXv{MHEylEukSXakT99DTBD#Si6PM>WniP5KI5n}D(UP>#uowg_Y` zNFW!%{G1`bqmtbwYHofJ)IiF?-;W!WkHs3-Pp}(Qk&Cu(?+sDUL!vO)(qFG+(uOXv z>Xa`rh9kr+*Z;Fg!YSJslIg!Fi#?*&vmZd2`P(xh?^o=Dib2|ozKRvcMdZ1M$F4EH zn1!RC4)sJ;Nc5IFQ(rciIQVrzh-vTY+Q~1#Em@9NKS>!TrFu$uT~@T>*_?nz@>fOp zEkYvvP|lb!i8-poD?;%LjNMaAbDw!peE?4eNspneVJq|3+jyFxBEorO`wUT`u}j7e zdis#kw!~uNMGiH|z@MtYN*~Uu%PLdjaMHghP6$V?!th``)+}xO=@K65_u2GT;q`Nt z6-Wbohqrn-{A?-B2;5Zt&av{riGcy?8DvLpIvYPFtMXdK8;Uo)EJu#p@25g{Qm;3# zQRlyE2pl1+R2p_7+JM!V=<w)w9c|x?wSldNM8kao@Cc<**`pA?P3^)egx;~7FD=Cr zTao!W()FS2jhrgF`PVcz#VK^XPX*&2KlRA#QbXpC$SPIhkZr<#7ek4LOT*qVad2Wd zrpYqN<<X?0=+Oh5D%gut-eBVXqekCWPsyRBY>>Cf!TYR8LLZ)@G{1BxR`B0+3yI&m zoTT!+G^Z)WQUacmzv`WQv6=GsapFb{w`TEdg7;=6|LFfAv-t$XG~4A6R&KRdEnee} z7&`@6%it*V;HyRGFzj|%T-7@j2;TaOexb47vt^x5@;|Ek7I+GD;unsAiqy9r-A#rX z2(aSuP@~d6q5b(mNP^}k>P6z}KPjQ#<4))EU#kYax>*3wS-JG~U1OE|)x!HV9d{I( z($w1hA&t>qHi9~Y?+aiQEozfTFo~-kiJxZ!UKO_@3dSSD4qg20%UK+dtN-4F$U-`u zBm6cy_Q+8|tpw=EZxg=w%#0=@UMf2pm}|GBMC*xiDEBdPe01|DI)Vd_l2M(NMGufo zlg@4t-MMEH_8EDwn-+v6gFk<$Aq2$X=V?@xCya_DLW#m(&voUjXmkcw^9oXEL+FsF zlr$@I&eWm<v>ReQIk$$wNQa8E7jt}i>(;{vNQ;ZnSdozz7L$l;HZ<tNW#y==f4xan zUJ#6rIaX%UJ|bG8#{^b0ExjQ^m!DUOv!)BKiA0_^qaDLMR4a>aC%``H&LfB^o-8J# z`PZ*psrW%Q@^*=uOevniZqU^a5Agz+O3DKGkMJh4RYjP6k1bjK2$p;BbeY7lPFpe4 z`U;m+4pn_Raxu$Yv)0-(F}xsHi$#`C6(ZIF;w(}w#t3dFWOl+o`wSIxUQs)8(_fSY zns6=8o9pjxcQj3$sD<my6PD8~16&E$7WHWa>5F~KBI>u5p3GrHw~^%UBYFcCn^fiS zR)nd_Z1Uuf50$%iVTmHbf91{{qVl=s9?FAa&pYK3BWP1<Zr9Q%*D08MPub?4w5%zK zK^SpP5jq`u?#rysi(Fb!yo3*pYM)bManf<pZ{-}5d(nsa&ek@~a4I8;zmJ<d1v;1D z`PaG|7pa1y+nK0w5wd#(O+Z&<w&V}83MLx?xZ%hF3P@t2qcX<y^;R*>1TyTXQT+A4 zZE^t<tvH#o#q*_Cn3?b*Or`frzjnrP$Gq>#Wd7X#_$1Rl^5c${K;Y3oQ$%9mYwYsU zEZ3tLkvW-*j<>AUa^y$Ee=?Y3-}CGcerrD)T24<6iF|yD*~C%)$2t=@z9Aau);1@2 zdrUMiE8yRYK90h2tfYjk&&x&B-9S^iN?INyz)XUqDQ`vPu7cvOYa@Te1>>`6&|g<Z zW-pWaAUc;tA~{ild7zzSP8@?2sVea114r#u8_g&K@J%#-2-JW;>=PQxp{8!rAJvoU zvNCuBL^6~mVVIVY@YlpdL&<Ut`;I~J6+^>KNTowX71f46_OafdM!7;9(oXZnJH2kg z18g&{n3H9kGS%5bi05`fDltiek&SGF9qGFm%q3EMVFrYbcF%8zSoY#kQNeFTx6iI2 zZ)vm0dGo~tM5wIqi1tzSg%QcuZv97f*XN5}=WrbD-wR7^-24^&hiM+`5plorQsvHZ z1o;9Kfr+3?<;~8B!mDl2^4T*_(Qa3#e~_dSv+F4#Srfq+>UX!x+yA!se=gelHNF72 zpE>qk07;)_jp8qi6}gS5d$&!D<p{89q}ZN9%pNb<z51HSQ7pPz*8$^OC1#qFU5lw0 z_?-nR#}$G<=_h_&wdt#eN4S#U!h{A-F_Z~ge+%&)s~e}tNvD(I=z}FZw!(*vfbq@i zy={W{2`0VqR<3~MrC(8dL--ps@^(J&Oh6;}HW*Tl5<lKglvwF;*NIy&M9cDOvkId3 zr6a|@TAMeT8c)0P`t8`%hs9~F0HVrZ5<$vFUPlu8p}FcxZASOcMe5HoB3Yy4p)M2C zkq2XI-a+n@{gjHkZsn@k^9w=_+f%i}T{Z1d#5Ls@y()B=?or{d%PLMW6DUVC7g??n z+w5}@x}j(55pzcTcVmMO6$(zAWou|zHAm%moCEGmVf3~$I73BBC~HtUlEosmmGRFw zm8kkh?u<pTZ7j5H8u2+$1D-pM<TG6_44ml{;fZ%DfE>OPYR7K%y9Td#u$=&YsH&dX zqyF4o0Itj<bn*p2cTo5-ZSL|yn3*2HUdnKyuRwx{E~f>8_beZX&6$LONmBI|KABAs zGay0f?-v&Pu*T}LOliWL<ffO-ttE=z>JOr=5nF2b2-ZN;qa4L4>Z^>R>?iYV**2jS zmUR*p>LY}~Y|&V!3`miDM~=VJ+t=gJ%{915b;(s9qK{l@hV+|JWS8|<RCS_Xy|Ly< z>2WL=76x6-35dU&G-Y>p7Xmq$IDv92a?b9y5Co)osQtUveRWtAjNI%wq`0Z7Yf*kK zwiwUg1D*wAFspIv@#VZQ6Y)v@8ldC1YYe8U-x8E(#}{Dh)NgOwGLb~<EWxO`IS15` z)H`Fq)os!QZ=;q#q6)hc4STVie{7);Er^En+xJ-WayE2fOuAw!qJv#!Rjce^YBnE= zx-Zt0EX=<YRfO@&o&MDveG{Ag^hQn`GgwXx&j(&hifIeHCcD>TKdHGc;T9cSx-8M= ztaNSO%E_GiFHrzR#Ie{@!Xr=@hhZy2h(7K^81m=II4ga0ZOt}7km~_D3yH7%gqL`y zdMzy_u>elxOjUIy<l>s=St+QJ=o`s;nRBcF02|#}mcVARX?NWZ4by_FGZr~;pc2C6 z1+gCMGGfM0-DDlx%XX!k<dxBnx5&^JphN=8fO0)gGl{Vo^ZWr{Q*aNN@UTG3A80tI zknmX^oXe$iJJ;&lp4d-Q`9iCw)1`$*2wm9TWfOc<X-kX>F!XB$A<jF0xkE%~3aX*C zJ@IeGMpHV*M0iPvj#${l{CjdXOVY6eRy4%=iX<M;L>q`m2m&HuDxTZz!g-1rA|I|8 zxdp}7^Gh`aMYHd?Mt332h@Ybf*QeoAZKWwySnQ^4QbeJqj(Ed=)4t*qqJ}m5BL|y2 zL_0nWZ&09~0fq?^yNI!OT5VOELUCRJ`R67%=QUG<n!hT)<GX)mJ1;0+`)F~{%Wf`M zqqDiJvk;wny4t2-RxBDWfX7OWG*G<ubFo(6_-~SCX6cGOMU1j=GHA9nR&*ZcIU+@I z%wv%b6H6^oTjiff1!KylG4-azgHeax`%W-;te5FtFG^({MvrnOzT){g$pI!!s)=$$ zfeQ{O1-9f-F5YmHp0|M50+SfGf!7ok2S*V_(LB~i$V56z+v>xw>mOyhPcQvI`+IC) zjF<xm95&e+i+1fLj5p?-!UTHzB}{NJwG&~*=`_R@`IdGpx5UoUB7Iqnj`<3mO5WV( zL`OB!qg#AY?!BXHsydViU7N}gDQ^j=#~dk%PY6$2>bj;_BJyvMcPILzUT3{fFIbIG zQMaF%s-7{?rjAn&XI95abM{}<VIZXRJ#zB(=Hf<=Kd?oFT>YASpw0S41*<~b`JLYW zlXu_nuf3dYowe(6Nyh!+yhoM^hKUi^Ly}n%aR8#p)AQkiz7%&?mgkafW1-{izU<=q zE)~x$qK}f(=T+l9-@mh|EtEk=ZO6)324v@BU>%>xHa|J+pLOvcCX^jZF`k$`PrU$C z+qDpz6%u1~4$avzs;k0Yg?+wyJcQh&SVNdw30neJ)#|(0MH`E?`RDiad9IVo3V8K8 zd%F_=J7a3)TCh!nn3Y^Kwef7fbEiB5DpSYNG12|($RBjM7eGK9ggQBy(TljCF6RT2 zNCg9stF@R8Y@eb){3-S}d9kW?#~|dj2Y@j=jd%1Z?rn!4&uaw$0UJjRmbh;f-OXEi z@jL@x;mqF*fc}8$bZ!x;!_*SA&vM1ka}0Q8%yy!d-gU*Oe8yN=FQd_vylh!yxvcnA zC6xiiu*K&T4hG?7wMsRxb%1z~?AWLqjGBtTiYc(>s-AQRAdC-U3`?ib;}#{*K$V}p z!GG_ME>O|ex~Cu3v!qQeLjeqL61b_U(4jdz+^Q(L*39!+!pVI@*(j@i94sTQ7)x}I zf>FF(MknElg3)1m<ixJ?ITyE*`><+hyV|cvHCT%sE_wSs4yp&*hau-VAgn1;O^g(^ zw!KXW9#snZkRLXXSR8E_{r+Qtm#sew%@iENZ$FPu4z>+=fgCiRr1J8m*$gpaQPu#s z_e(csw@YMc2g%vQMGG#<@ch+t%DdEYL<^XOjB}Ey7U$_$;wlX*^gGNFdu$GIc3W@a zz57q7h}Jj~=FopHA<6v$7#BD&$j*NhQ>{b=1`ko<)(8>0dQ5i=_HZKoS1HoW4j^Fc zH4K5)^k4o?=G*b)A7&CI;UhE+9J+r2eE+n!BPJ~&%q=&D-f0G0Hb9tr28RT_^Z)kK zThKV0#j(w8Tt+9gxtIef9G*NBcgII>qT?Q4Azizz&x*znZ*rf_R~cp5>rmSTRpgyU zZuwmuBK-r!A}Z4p6rjhAjB!)_u%JnY;0r9grWWTErJz^_rMEBROCLGB)j93hTwWQz zK?A}V2@v=I1!`^pf^Mrpw?<vjC)J3+AAgZ8+!dh4xp>q`7;CJ8f(d05uvP;GAeViG zo`{rH3<QEaDyXGN2Cf9V0bX65T|_=qF=x^mni1^IyM!3e^C9U8NZ}}0-mPjh13F7- zi$9R03s|`&c6toEYMOsi_?leT9tLEk2)?hTuGWZl^YZrAAV&E<5r=~^@kE#ArUX*{ zuz6ZmHIZ)rpuf(Ie$($<WE)yH6>ZY(^hE=SD1vF83LA}H7LPew*}mB4(Qe~#D~a9U zRD}EjPl(9NEAVFRY*_u@RgDwlXWd^X0$VLhuFD7o+|FvLzsBo7`2xdtzn(#$W5FGL zj1>fRGFqnF$3di*I3gS=onnkTvoaqDov34A_Ah|xvV(uQJ<sjU7fLKF?0lJ`6Y`AL z_^pDI*FuGTX(1AQp>Mwh%HVbO6dHJqya3Q2(lIt=VBRKNzFI|#4mpLjW_{=)I7FJt z9x<&XB7|%A8eA5l*XOI(btBteAKts6DBYp%RBco|7wOY|AJ~7~nBF1$=H792Y_LHn zKyq<ML(6xLz$W)-6$&rRFfzLCx&A2-YEoz#IR?f(p;Luc3-wR`zLYtB0pul<?|SW+ z!CDJoo{EKSKY6}H_CQ)%5Mw`ptkGc%>cJigk(D;GzpYL;?#nD27b}m8U;+o{s00_? ze)Xrndy>qYLzRnQb|I0=b|#Mh93ZBo*=1|Jy1)ILm<}}^&B8tLz%}sN-}~&RGPF>H z7%3%@<?@+T@UcWizze|OqAo+ijVOe%K=(H3#P(V+P%v9ebh?hhW;DSu%=kMM-ssS0 z=B-v7jPpfzpAunlVuh%c5z-V}YYyu}tx`OlFGt|(@`@16+i*IXE1bF@m*t|GVxSH5 zq!(#AlEsNwO8V_D?`npmB+7(=4N@s5G6+4gJ;+^3V$p~&krIwA?j(u^rwa#O6{u&o zX=%R4JXsDtia{M{Z_~cThgPYA!@<GMrGh3_IGI&0;-rykRdgaWnN>?hR?>y(zMlTg zd_BwS<}x;?8_shTKRLU9t6~&0q{wSiw@2>Sgr%?oks~R<Oo#erPUp8^1a_~j@PE+L z#g9r4j{5Fi=jVPXAL&x>qck|+KbqCjUjQT@V(@;ci}oWFxS?Uv#~9Qu)bO8dAhRGR z=tlcN4N1L_`3pd%C=_G=jGul}f8+?ec-cYW=GM4OO!No-@-UEnr7x&cgqsJve5<t^ zJGfWHC?KpUt>wW;1|MEuN$L}xRcd|#u)F|%Xl3rVy#NrQp)UX}@XiY$tt0IxG&c6L zq^$~*lT@ALBWIt>a{mj!?RnDOA?6Cz6k0@KE7!umiBCr$1Zy1bqw2SOcz2N`a=zIq zHj>GR-x=>t5jXn+n6m~S|6B~}_;P`XU?y|rs<uI*HLjhTR)1a$8Dl+r%<?qX`S`W= zb8s<%jY(qIb!|VzUXj*C2sb*5=<SbThHNWeG#e3LqRX@X(c_boooC6PS!X#-IT7Kp z3<`BE2L~^Jz1Nt2>GHbwnU6L)({FC8^?E67Gkuf)^9#Vg{u+9i-MRNym;&Ho>})X0 z#c!ic28bB8olN1mgNM|1zW`9hzwpcZ(PS{L4usHA3^}_IGAB?*4bo&lZndu7`L&Md ze-~^n`!aRMbKA4UC5F{Qb($k!h2NG(b;5Ee1Zjacik5C#At9?&bW5AC`KyV{>+dxb zW2y*uwz-b3@uBg$vbOG8+!E2-KQWqAtQZJSyrnKap>|Oo)-Q!LQ`*TrI)QY_c=-ry zarT!ZaM0W^l3MTSAfA!t>T~b0wOX`vEysybcG=Ob^-jG}#TjDc2{)Jj6U?R~{ZFa+ zo@yXW#J6ni37}U!zp&tq+Ror1_4_FJy&P#Q_0j3{ayyfguBfJ!(~!XgnVE||{*xoM z+~WO;nu&AxS0qQMVRmE+@gf8CJuRbLxB<EI+1u2lR?pBTm+U;uc=T?Op5uT*(g&jP z3ipL&6i|wM95&s2uyQe3oglDzoB7-sH=gXNmq+g0n!o1osx~4&kzG9zYy}TTPbRtf z2MQU=Ff{UCYko_TF8<^~J^pdL2%bfaAF7d6VFx*!TPpfuJJR(AB@k@R%|WdxF3{)! zC(Rj6l*MdPvV=KZH1OPCidtfTr;~R+lF|mO&Y87jNjBEL0G<O8_%DFu3oq-5?5@Vs zECO<w+ndGO1K2Y~SAKH&EiPj3R+Lnt46IQBp(90JU;Q|~Cps5udb_fBThBX@{j|_Z ziBz5pf<Km3(OQgWT?S!IhJ8)L+@NO!?cE369)DfCJf1=9P7#VnD3m)hH2=#y&$#;` z-j+;CYBd=ZF=ph1eqQBq%a$|dkf{y}+h&&<C}{D39i8`cd-U-%(g>uEgHvMGQA@k~ zlPTud>!Q&3fizH)%~-QXMP@n1Cl-@>Ur8Qlc_V&$&ZA47#;0LV#IpRHp7DL_jT-T| zW3L5d93((SQndUZssx)Fz2v6Mu6Z}@RXxua!=S<K#3oMh+$Ag#(QnbH5fAYpKCL}! zkBnK-#M@fk!9#^C=!@5uH=_x80hoQI^7)|{9oq)@ji?D!vvTXTqX9R>7KHn-?X&y> zvxeEC`<iaCctaWMSf$PrA)4tc!^uRTJOR2cL$Xaa3nOBIK>C{IyFER(@kFO|W?5af z_MUo*dNPc=sJ3fHHeAKiI3MrB+p9KaXx0@X84{yM<YQLS+>nZblcAGYg**hHX8YPU zgj!9_$SlgwDIQmyi-^S$TWuy*Hkd#$@boE-VioS!EIT$}5Ufl6H4a+hD`1^}>rf0U zcHq;<kIt5|x+z~;cC;E-&CNsYu3$em6~~vAi<28-Mb>8y3$Q`a6Mz!L7pAjQnIQpW z4^<RSp(xr)^v1`UI$9(8J`W4?-;yv$h`Osg;>muqbEqGJaRe^N@B%2NlM)UqqWRfR z*ZDP)gj4U}fzvIBy2p!|=MV8{+|qnaLAkr1v%!nFTA-q$qtHLQGcN#k3-tJrxe57M zWmykW=8ml{Dq7A!|HjhWIo52-?Pr0}X(*kn0GK5}p(At|{s|5{JI+bH>i@Mllfxer zRQfSHG(mGAkh5^*D0I3JOS<bM7?>R-4%YaVmHo3;sg?DQOR2`k7Xabq-=Js7@q+EL zZTm1Xr>pDwf0s9b#;g2iVvn2`o7E|SAh`zYpss+vkAroHJj_40o4og-pqiwRu75Hq zA!_llov(?R@nimw7Ndk0fZ5N`S!v(>%Y4bl*w~n6MX5n}w{6z-&R-+pb0q=@KbmON z3Bgu`EcBm{_;Sn`ch83(5Co(v9i1XJcW%qsPw@WH_p+yyjyHL#39jmxWkZS32}}#r z4;VagGH#~ovX(16C@zaN)5jd4gO-5x4Cu{fRNqen6x)(o+<d?gEq0I24E2yru%UQv z&p~QtW19>iaYT7UhprHcZ%vm|fidsQj4gr2<dFt2^A0o`o~&GH(dIz=mW;mCw5!5R ze?-hH%w6WK2AjW7+J&^n24BnzV5d}TbE&nQ=jQbLDYn#+n?;CUnGEi`Z`3lsmmdU+ zD9R=gZUADy3*cK##nRPIp?aV^rri*29QJI6aDIB(xHcz>Z>fRTWGvFsU-b`uiGmDJ zWeYW$<(-ejQ_TWPFiW#`v8Te;1r^sg`J+I+6d1igG-uU&1+$n|a?K@%LnA^pZY-d+ z5x&74X4pi8bEyG;DiM2^s#_Y5MpB%Et>^DiGIieO&Pe6UI^s$;PPt@|f<k9-tuCQZ zoz+&@Z^6j0UNnfQs?|yW)*ib&AD!IdzRmhoE-^BBY%e3(U!n*&aEukfATl9)o1=`R z{?jv(UrK@TXjT$a>4*lZ*7{w4-L1+?KeuDN|6g#e(6;}@JVH{E^6AjN?N|#<f839h zwyL?_?<#~eS>`buvbQfXlbFniHy^sL5Jr>UH2z%U-hY3#@XYe~k%cFPfO0$77}$;0 zZSVtbDMNh4vY-4mvC~Xah6MTDmhd;4N)1WpgW+I@My*G^X|ET6<0nSvuh}|yKfShk zX$xKe+nGT|HPYq+UV9r`0eME2(|U=);xiXi2XirF?oDuFSW6-4^c`Gfzj%Tuywf*a zDCzDQm-6fLHy%2H$p|gbu%+~<%gNNt<);<@=!|k!C~d&3ra$BbuwZv_=OB}I_em>_ z8#Dm#7@p{;I_KpMny5bxr}&;RxZb`zz}#}ru_yTgh?1-izhQw{8z_a5*r?nu`_yX+ zn&rF!nrl_C>+&EF4DZqzuB9{_j7Bvzl?eDAltNl}*=u`@yqQ$4D;#q^{4${9gEp*B zo4x>W5`y|)Q+{OfTxoa#iy0P8e^516<W4kYdt=RxiZN^6)~V8IL@bpzPWTybY&HGo zl27|3EnI#;y69L(2!1ycIb8(w>7>w;0CVuLqKk(KR*eL*ORJ!4nbyzGwUeIBWM)%q zywkuhL_+fUtLLJE`GH^DN%jq5GSvgrIXi5G!Ol_zVx5btn>MyWeR7<9V*mCYmi!H- zZ*2hCLtm_ANO92C(05RsJiPB-DH#xZ0q7WDmRtau?+iu^%&JdLnQQ4SZ3(-hRZog@ z#kp0d-n8n<$@#YZCX&F~O1&~wOb?4QOhf``<EaQA%BqIT5-A{Ypln4ev^i-5&}1l7 zm9^z~*|eDmUjWXE&57vF*xrO}c+P>NUS%1biC>V<&xJ|MtUodBa`W$EX`VF+$I!X; zK@D8FB?vYZ6lzml$Ujp*`PBCoh>f^<C2@sAYB=b7dj}U={%bo7ofD8T?lamA6}aSm z0Z@{?2l*sAKYI^nJ=eVeo`U<6%U%E&?i5~1C+98u+8=uYRfHN?(l=xhX?b>9?yzFK zcZ>{D3~i({VB>8vl19I7dwR@lcd)9fuK1eoHC*x`q1y-lE~m9(cga0FrcXDXKD&e_ zm6IA)U-rPwOk;Ggm@K+OH^^OnWJ(^jE4Y5fGLAI+ceH4jM9To$%~ZbksfMo<3iKpH z{jK8se%rV7E6FVJa7~$^Ga<A(8W-~)ZZCFz4$novnURm-l~0(~JP8GYM;y{uCL@pb z0A%LMLH0RX^6}HQ6EqI-u5AZqgQ@Hx#QFrzP1;BD=A_J0IoJNt&@bMDv;l^Np3)zz z2a`RHyh+SMDqB|E^3Roo@$)jf&Iw!J*1&y)_}M=BYZbnY(OGQEad5t&rLhIHP@@{X zariYBfjuWHu?Q2mY|S617zA@|v^n_vE@CaqN+(Y$QA{;iu*D4RehAR_q833w1sXxY zRP?vbDl8S$G__s4Oe5}6Y^75yBXtR6OU4z8*ABLZoWVZTFaeh=B8^sfOuybam{P0a zs9OqUs{daVyGS09Hyy!hZVlP7xlRxSWBIB!;Y2?OTO3p)MKc<+)GN5i&s-s$q1_qA z11zpfILe}Xs7=#miWNypzb|BQ=FRR0HRMOTeLm4Gx0ju_-^rtBu%bYJYaL*qvsxpK z1qD^3g~cfz>!CxuxM>vC)iMMcgxLjbn99PRri|H=+lc;fDI8LX8OI1xj0uv*e*Q=E zd9_^JYT(ylWh+iSLbnn-<|M#C&3Kuw>&ZOWMT&>RxJfi}>7wSS*LfeW6v(OD_G#*f zMtEWa+hqOsIEm=v9}Hm#foC=@2_IZ2QdP-NI?cZxN1g_Zf|>$t&C4#lUQHe^xGH** zPJG18t{cHf5V3LcEs#Slv*0l|E|_DSzkICSPL8MZ0iS9!MFgxMj$j8dLqDkHxXG|F z1Yl+>$0~(&d*q%i<fxj(#~}MM3l7|gZxRIK8~DKf3X&^JRGV#Zi{|4OORWmABCLn? z=G0kE&yf_tIB}4{E<|)D(wjVf&KurxmUvv>6Mx#GdL<-|c(VvW7FsGHPHTMr5&)Jp ziE0bWedpj1ZZns_3;niOux?MX%KSSVIb&gl$9hl{whGcQBSWB!%>tO#C`7x6UjR-$ zCvQ1@r49o)ew2-z`)AGo{u=QY!9Pn%+UlyNNhDv@ie0uQbhSs|xoY-4?^hWtC8rna z3ml~QVI-ec|AOy6>S96&R8p5Q<I-_hxm=PmBqes&Fu)ZWN{uOfvP4^383iyY;!ArZ z#SPsXnrQG$Ie~{#(>3S5y`%A(#KK~VWCH7eq@}5TW2z;dJ!kn+y61>_6-XSylwqz| zW)V@O=e@$M91adxG?M<>m}n52XK<YuHXUs%oS{A$WP^b5)}&CMp-LC9&7T5{3)^(R zHtTWoTVR*g)gOjZZNT&wyatFxDg?jLQEoa^S1q4a>Z-p6=)#`uvg(IQ%3MiOjz|8q zN##%ZLv6+kj?yL3)kx(|x%PCFAVnv%k(@S6)p<2Dv!<cTLnS4O4{vD$%qW-FA+*Va z;SxT}hJGEhpiSE7Gb%=^0|#9JffEB|x*A=E-N<eij{Bp#qkzjo&8PN1km5`<)%%ac z(pyURCxtQ!@!Q#6*e?Kc)-uAmG%-zHWC{!sw7?a+fU~KfsV>E(RnYOM=aY=Z_-%hi zh_vunLQUU+3Jcs>8rqPYwOUBI)`^~x@rh@G`=iPbfbh`x@%&)AEbs+@U1$;H7$1u} zG7?BEyFnd_dD{2YA1u;1<`>lP$18Kw2IU&YT}3{-u|6|>u>*O_M#!M#JnQ5adbnmr z<;@NfLa*0_-`8ut5)E4N_}&G?#W!T+J6ssQjRZb93uf?5vcQz|)Pfe_owW!K{ZA~6 zyG_!mi%ASCr_8LF*vZa$qD#`C+jG2a31=rSU7_1YB|8Gmt;h;P2pb~i{U4o1=YH*c ze>B?Xv7+snb*cKwopD`f7xmqxEHdi3U3QnCT6?k|r?zj$RkfYhu^xS=6Wp4lqV$^Q z0x_rzMgV$*&hZ&)tF~&PtvGFkS)V_0u+CHdtM>(Iv6rzrp`C9vA1eg?z*<kr&?HXv zzNuPPPq4C?$1-5PtMOqP8L!~6o5A}*O!cOXTB4Aw))&q3HzLpFt?_kd99`|-7+#5_ zjPiP+43Fg343!ZFWr{7PQhRHHU}L%*)L<&Zt?!V?iv&86sQdsgtUfAKROD5fUpPu6 z(FdYzWyEHdykZvbLh6Rm3)9!VeqdSlt5(Mc-~r9nlS=nS0r!}O=`pvXT3S)9n45zf za?!o4qWH&hF?gEk_$3C_qP(SaW{bzlC}V0T<_;jJlh>{N%uq0@VB4*&4e#)}Z*HQ& zOe-!qMEZ~NMgTR6p>MnMJ`RaO(-_97Oof7r5GkM6NUTTV=Z*+=U(!U2+u9H{5;=)% zTgMhhw<l)-iYF0|zghYF7ug8wZsRqawmxuH;Mwfp#0@XlQ>MaKNqmlQvU94oJT{TF z**K7v_%SjgreSEdb9As*{>fwG(d{xc6+8z8(zEM?+X=VIRh9iCk&%jLRy0LDzJZD7 zT={9L?ph%>DSHPioV%m-Kk%Z2_>weu7TPPk?bLBHL>EbWKp4c5QoG2wXI5d1U+g;S zU<Ujv$!O0#PDLq}=tWuZsR_46T&l{~_;pDs$T(XbXN1Ngx{y}Bri~^nUbmI!2Wavn z%MvGb!@Gvu5DNOJO}#G147RPGzqg)zU^*ryX`7qz*TMLgcT;^_B_o<pf^S<?Oe|bf zo2lZ|MIG(nyife*4VR3nf(LS+QrgxCuMb_AeVvr|6K9=&YK$0lhcNUxqQGuZj4Q>R zPB|WP*r41Nk`dG1>r$ivmQq0(e1QAF`On4tP0$$$ckXl`JKPl?8ACEnmT5j`;Vhkj zb!98xnXx4X7ay@*8Rs95Qb{`VHtl_}58B%^B?mf3#pBsuDm*&nj=7p%G)>mb$7!4F zntEGlRBcwl^cBA$VUD<oJhG=HtnDmW!}e?Soe8tCBb|EP@~`KvdUVE9K07YKJ7)d& z|NCvpNLb-IgB3*(%5KOo>RK##TB2ic#<{j&<K&Sr)=|?;l425;=<F)0co-_DMEpo1 ztB$`4a+)y9;HzNwRNkmnDE)DIRi0Gc0q;gvV`dff=;h9f)MG?iR7gt4A*(IdhGY}h z8|kPv7&M3j-c7Wr=9+0Gj5r4_{zh0P#gV!YXg0BP>6;Bt`TqCCZQ#H85c|^B8E4N8 zgyqGa!jyX)+Ft*rh62p?HRj|x5UrUKO$(7jTI1AtS2j|c-^ew#_vr5xNHzia5545n z@tWiXz&Q6wp3HRpBV(-6sg#1pWrJloLLxqr+0Uw12-fDmbWqq4^f4S0$6fA+lLAGG z_)pc@zmMY07trfK5@AF$%DTiLL+oDW1D1u-Bztar&MRgG<I6pfz-6I8tm|#5aPH>C zEDE-1bx^9Sk@9*QGt}^g4fcgCKM3U*5AVuNEH0vIb)Abrc<BA=P*UvGDNI)xnv0xE zvH+~v#nj&tV$!r=oVQ#DeI$A@on8&wSHw!cd182fZ2ff3g*yyuB@eJQHDPu)OZBqv zxQljXFMrLqEYBmXfn8>bJE7X?K;AUr!`wc-mEm$O%ee4rLbLhEcazk-b)D3HI`{b8 zGU?yB%g`s+mZxxhEm*SYWu3!U)u~jon3<$#$uU8<IeVs1Z0IWj5xBe~DY9)kb<-OI z-Pb%LQj0i!exq`?w8OJ-6Hl>DIDO-SNu?<?@rjZ$7ZVL30+Ok&uBwyTNL-r~!!8Nq zqZ3nH5^r)S426Az(f_E2i&TtUJDu-MRPzhivX<cI#IDDe)?Zy!Xo8p!6^-Z>8is+2 zanc(9q1G~%di{u5m*Z#e4ylDD`pze^;<FR)ItMI~PVifeDM(kXn6i*yH)`rYlo(0J z6Rz)#jONUfJlg$djsI(nFK`Ju91n4ti1;q<S9c_(;>{tYrOG9vtOjNQK}rw8L@|hd zELu_@`jWE$@FeF0AL^+ps1GD%5oKjd+G+9%O4We8rOnoMx30QB(vwXHmlUz(X>Fx? z<#cxwp!G7oA)*Y6L+bohz>q^j=j6SfWxyaJ_>d5ypSw>T&%Gp*@$UR%e2&P&hATBr zs-D4k$@ZQh(3&!)nZnRlQv2e^C9`=$=!6g5_zr8_--y*zC<#6JTX&khBaHdT_r2+T z>d7h1OfAlVD*}HrR(?SsHfF_Xk-Fmg*HtjR3#y(X41`Dz{f(5<>;G;N%yTA9C~PKX zKE%Nq*%==x9M?PB{sJgGKf3&sgwDc$%H28nkB@151Ljav;A>gVF(X3AHkkY+r4#bO zmX85t#9-fKtLed{!80M0Vt=z;@2Rrj(c7VLVn*R}1}S&_8s{e#az#g=%3nPPQXai{ z=t}#<^R{!YWGF~7NQ^v0qgjL?Kxa@$CJ~n=W@g5!G^C@##UuYHDAV^Q%F?g4-<<u{ zZ{ide`z9gDE_&ibVdDF7MweNiY5t5Nr#y-!>|S4Guj1mGMkE@V<^>+30|14?a8?^~ z+7Qp7T#t{$2y3(WQ!A+%`50=zb(PE4ApZe~m}Gxe%D`yE%%+oeyoB8B1rQ}gT0Kfu zswNP7lB`RN=0nOy!P-PdnBEs7)w$76EX-djK1ex?rz8Y^b)&5aSYB3Hih9G!z;#`N z(1d~Knia#Ac7$5=(v3-gUZjAv<z+>&?{jmLq8Hd}(|EE_c$aTb$BZ-ebn<psacFBO zi0jM@V>F@2_Z!9Rih9vFg8QfMcte}?(7pt8MEQoiKw@EGRA+nxe5=>wP;NgCRiMMn z-Ez`m-$NTAVDnY<k^{qi8H!XDBE#C+3cGcWdKDsLHY!GIu0IV+<R#fD_xjj$N%yg2 zx_D{wt6Q2hG!~p~_c@6H{sUU91oOOKC4_oiz0%9d5p5%SF+Vg>M`i3o((3v|1-tVw zC*#+hScZ~(iK1A!PUNlz=~Oyvq&xY?(mhX-T7OHo-cH6)xcGPpqHE*Bmub;Ts>QJN zS|`i<=pJHoq}=4HsN&d5;gYV1#md(BElJz)ROJaBhl(RX{h*%jS*bl~?|*zG7c5uS zqwxcrF#Eg`=&0jgfgEh`qGPGxC(%3L2x5O5VXMh+_ta<hOJwAS@Ttx>jRpTIzR=Lb z(1Z_(7tPR+!nRgB2P6MN7J*Q&xAnT+sSSLfPD#r#XcM&JiS?h0w6!RIT|%r|N8Mku z`*Zmj3R73w)1<3%jV4B60d^#O{~Q>z&dI^hEG^Au_8S|eHJn|zsgE_7G<rChj&qy? zn^Yn9pslJAq%pqxC+U7%byZ+UXsiCre=afffx??6V1uFup%#mvOr5s*<(Am8Osi^W zYECw_AA&I$-8@1Xtu6G5PU&BZE{WA{^1Pkg^&S{&`F6!)y`24r{T+1L>`|z0;zrVv zCO=3kLGsbEiY&#nOYmXUk56EmCUnx~`xsf;hjI=Z9a5?9JbrnPpG1s?-h=u7LTp{u zbdQt$9L~u^e?Y|UymCk}L*ZG*fu=f88WS7D)$d4I4hw-3WGiy{)+dbQW2LmNOb*+z zuoDvZp_Y|Bha;@D7G?t3e}40+@{8QAx}%pZd|*Of^cR2-seS+tI5^UqjPLZ3RU==Y zMu%??v-=vnY$W_Qv+L2>OLiAQZu5Py>gwGY_PqM2L&elPKOG7fH>o0B?0+<$)8o1| zXKdX?;yPzn42SqhkRnb{HpdF2+k{Md4W`Eg0`iE3C4(UK^_3XMIxba&FiFv~KA8(y zsZlo5`*C4OmwWnww%Tp}uji><1PX0&8$xqlTn^rzwOxF`3ZI>eE|JR@0B6tbLiX1f zMjg}Zxp(Pgk*DDm$Xi^(aAS^O=5)$Ey&!gzvI^-}aL`hQ=ps?M*4nvlR{$+yr&5nO zi58RL@`+t`XyB?iiZ8MvkqRy3=Z4m+5p3kgGAy==`w(0FMgcG&kzJyQQ1rHT-;WgI zwNp&|Dn5!%>Uln0xiaoip-}r}e+N9AKww*RLe1vut$O_Nj})8E(m5SBojbK`g-XrH z4n)A6EF~6i3~^b1Lh?l>M%`4?5aT<GBi+}*WY0r`KcbvqiSvGNGBo41pXK|5FZlfN zo8R9b5+4;R8@DcthQITW#!OLqmtgZE)#f?zUWM?4lYNK*P=EWDCa$502r_6xXqqSf zF^NpcMn4oHXx~ZB-1cfJ_}Ph7brp-&I#!3<I2&@E087lTMb`I)bs|>csc;FQsp;9# z)Xu%}0<cFjy)Q|8U{aQIq0H7Thk@H5s>VXhG?~uj57#bL37&Gm4S2UVA%EBCc|4Ti zK^<Ad^j@dRXd1g@5OMxdi~+qX_P0=vzWe!)i@Td9{{6|_PvgJ5;xRnV*VP9PVF=Ll zcQ>ZLU%o!ed`TV}PIv_Kq)h(dd8(rTUc+0Kd;K2o81*K1MiVuS3=9DzlO%=H`bJs; z4;Fksr>wqr<v9=16{yG@%1={2**)rRpXq#UK?O3t1^v=L`g--;Y8i3cOo0E9rq|~; zYbL|a*SzFJ2*Iy}s7-j`?`ysNvUX-OU8R50MezJSlfUP&Q$wELB-5stZH5Y)4sI}Z zcPEp5;yGLYH3UkwW;H9tZPw=`#6~Dz^=c6KmZW19HJp$T-5X(91TfgLj<7L&UoKqv zygl|ec8c#j;ur{mZa2<uTE$wIhptyeJK`A96^+H?|H+sok0@YguiAMQ8OgpmqFk)C z#OSYR=j7i0qT!_9b-vBf{%*g_D6zS489XE>Q&eH?b9y&RG($eiKQEEgtjT>`<@K{T zv2;;L2olrq=+)T-c3yN#A7-3j1X4t<w)q5((W+MqAmlhuertt}wHFx=?U0Wnz_v`d zUW95-&^`)>y&t>zYa0ZUt%n98aEb9+=&m&Z4@h;tkN9%1^I<9BTD&aVQnhuWCe=|I z;G&xGxi-=!<eHVw2Hn#sLtJw*&h>R7FqK%PStX(e%#Wbb@uC8(jq@<EHjUqW(-!al zLZyJRFc80f^#wI6vwBo6qWgQa>b}X3uJE<mhj>RH<RT)%3nZ}cq2AKY0hXNtey13m zOGn;`M_`(t%0YskW<M)phctP{8f!OlGjuD<rcCL}h?$LgyJkU+x!{cD=+N%o1b|c+ zxY#JnJ+(SL{p-B5^Q;v)iYkU%;kwFcZnf~zB6QD&uM49cT?P08h{+9=6#TjR$WO|6 z!TlYn_YLd?K(*f98uT&g6OKZ!W4FVx3*7%FdFT7sb#Wi&=6jFCXBqL1JREK|Ae}_+ z(7KUu`^hYm)2$!^(&P?6w~ywu8G7ZW-2E~0{q6tEM4->SFMiXoc}NrQ^y`l46u`Vy zAbr&c7xy}^pL;iQ5H%SOjj=T=NA+z^f*&bZH&&Tv-<^dJ-p*0;r;Q+zUjT`1u^E&w z)nLbd$%FIuM-=rzlUdxq^7@-ny>l=gj|-_De-m}5-DbDFGSm-$#?&`d=tJ3=bDTq= zVnM_hyuZe3F~atDk<>tv-q(3!=itQDA4*d*q1uO1$siUAkQNWxkR|;;zI9TVeoPP8 zUXwqQUAX8J98hV<wuksd_b0;U&%z5JRnstFj?6+~#gmWO^1XCMkC*$`+oPY9oT{D2 z#>ecl(UByaT1+QWwZY<D4Y(5ZkqMF1*EL-d6(LHLXkO0>SfRk%Wfy$usmGukUV^y! z7QnIlO7v7WjusCznI0qJ&GI3wbCR)Pz0DpU&2jMIc|lFk{C3;Dz6+zcrKWBIJIn@2 z1kLe)uKPp)$JXwhdKXd6aA$Z&*5ths=wPYp;Mc6BL~<nlgz}X|iw^(czck-{C7zrt z0V1ZFuLDiQjg4el6>VOWeB*y6+^R_gbN$i<><u#@;>dwZY%A*d2lSDN3-DUz#kbp& zc&JA5J2#SVqwO?XHAJ#g8bD~W8Y@~Ie*;#9=Kjq*fg$0`&H;vtJx`;qX{F-VLf-22 zJMD^`Oa|XciGRou2%Q+rt3_ZXvTBepqaS||4*-lG!y`<7JhN8L-Je%;=!w!VJIQ|D zdC%=zd^i+!X0@>a-ilVw&f&*BEvk5THkZe~>HeT=^hS)9@q?qrZ=nWpn<u5J538?x zjOx~w1?q}16_#I9b}&^p3xpS)n%PbLX_O`69LW3g4>b!YPb-nrWpFrg8th<4Q8948 z4C(?V=koGQbmn=AysuIu>2Zs*Sg8N5_1LE{g?VBWLqG7qRb6C4@d9Y5aTuOBfK+;= z?UQS-0RvtM_cn6Rb$Ugk(F0SRN$1N0`0(|G<c`day<ZLJw8$qqiI?_9?_$0Zw<3AK ze9Uje?qn#%y!S_GX{o?aD-UAw{`*&0BlTDkofelgDL<j>?ZHG;f`2#30?3u4=<w#^ z&s|Uuhc}K{PbO7ZT@fb{@am)>nBnV<(-Dn`0K=VbkE?0tbep$O0*`MbOi~YV7=jIz z2KfKGBMrH<0d(k?FPTS+kqX#NbWTN(Pd+I%ogAB(w`UZcchUX_<t*|fG3i;}_pSIz z!5F3u-reK)MiU7;F&ui5iRaHx2rTh?gXe1_<#^0}pXfgs`w=yai`t3hsaNmzlVlZE zDQ|?`<l#E2n+Qup=cCNVH)%x&%M&KwvL96)20h71X2bg_xbFjkqh&(!5p&*;UbnO3 z@1A>mQER3O6yMtHau6>l!a(+2*Te#ztIWmUJ*4x!T@F@0MC0L8f;(%^^#p9%%_x(P zXuiNScJ`fUfhAvf#R=gVDP49KylJ)+dFg?qSxGS?;hcevp%ha)v}&wB|3ksQuCHf! z22f?pzW_k91EvMd0xs)m9??4+w-Zx}2pjRG{@9|1k))!U_M`%Au&I40G%r_vI1msf zF{&`_dKh;+y$|{4{!ZKY)!H(}oWOH8In7)l2@4FzwD6YZ1y0MI^K<o@==no<W!uoF zXCU3cs8W}Dog=w#sp0+Y?WZgR-v@q%)xSoow2je{*>RgLTh(<g<I-52Xp&Wrxwvf( zq2@&#oEKD&4(3xb3cFV@?~?u^lb}NWa*_8k;y=ZYXC5AVU0BlSpo?6fz3~cu;Ubs; zdH%aLzLHYCWk&iu!-Tr#CR%5^;naZ=Ntt~Kww8k|s2m9YC_qnuX@CfaqQqu@E1ed5 zG`yfUzESUe_cG%4vW7H%kq2x^B6O3@((%e;muVSN|2kN6RM0^d4IrCWP%%glEr^M9 zUny*b2up_INqlJaqdw;HNc6ruUh(fI9Gr=U0PaYTv@B~Hf`cVMp^fp<Y9!pkT(PnE zZGbl~fHu4Swr7#M$BL&<I1Z^(6;ST?Nc?tH7erMqmUv0Xw_h8x(r0)7^DJ%c*bH=B z?Kn3%xb}F~VjVv}zX<tBX}Ud73!@eh%k2qz-G$}b^~jMt`aNfIYQ~}FUEZmNuLGx0 z_r|stnka{3`z3LG?1||>XZTjx?x!aWFCv!%=jN+aNBe0cP1!J<qGRKq3BC@0<+Ev- zEi+<;F)OMX_4Gm@?C$GVg}}T=r9rPE==ae)9u|hwbH!_j))6)O^70Pk&Z*&Y{PP^? z3*ZVD(N8J!PMXM3be>=a>9DddW8wL5jv>hHvG%cXSCZRLVR}rA_q@L=?nJo0p|^l+ zbmn69Ofmye7gUe$t-2Gu(RRpCN6}2{`ta#B39r8OAwGLsW5a7N@rSYOA6tWu4IZZA zNy3lh?+;MWZFI0^S4fzg{3|x_d)00o1XAjS-+=2dz9wCZIF3ALN;Z-T+ixQq@rTLk zP$=mrb!fro80U&MIuP&Dwcz4<7G!1#eRh!<W080wx`9_!)a1uJ(5$TB2YrR@(7zyi z>H_cu_02SY*uDG<KpAG@BC{vA%2)7}$U=kqeHPp1f4RZ3Wj_jAXT>hq!fgT;za5L! z0Y2eiiEc`)Xn4AqOVGegw1zqg%~mxh6DA~(81LbMg9pyQf6+fKh%tP$=|X(J+rcWf zJAs6)jaw}TY4B41ZQn^R8y>~dcSlp_<3qwey&7iY*Lr+&-mL@2ON;TDQtfpuwvM{x zB&|2Z0vv6PquU8);EX}eA>`j0ie*9m1+`Q?L3w?2I$AfmQaZlRZ?+-*Zj-bE1m%J7 z&=bA-y1lE*y(?UlE-@-oR3BH(M|&{4pL61}i*cyM_^^30^`0iu^yFC$#*o!9OaGFp zSMuU)H4BxUr|Rn%R8Y$om|D_!j%m}ShE{NQ3tT?8ijpm5_P0+$NoZZV`|Q`g#(|iC z-gsp-b&21$54yhN;H6Bh;vbvZcRs(;Dm}0ooKYa<P9+VoRnU4!bC(HGk1x@-?%RKl z?AxB?sO1)|b`TXN4N(J$83W}wzsvLQR7%$ena=YeyyL1UX5-^hN?Td_&fA^gd`j<U zWpb3~_426#`gbg7M?Oi0sPt52Tax&1s^@fmJMYuVVjtTKS%80&4wc;8`1wkkyqE*+ zJ=zws$AVMHR*K^g8=n-j^H|%C+1Xb~hc5(pqdK;A9D6Ls5zh>0a-{I)x|!p^$ekP_ z2w#m~QW*a@gxMw8Z~d^41ae2?flX{g0mic01$<`ttMkrmran|?dJy{Mn+)6V-jn$g z`c`ewV_l=v(5tKU^ve*)&i2pv<TdV&&Fxhi%oG2}AsSTW&_UjfFg+|01f#=Pkj1P* zwQ3sj4-(vt?!CRNWhgcezt!Ixer5i7CU_vMgnZCpZK@~&<K{Lz_TDNIUy`OU3w<|c zC~69}V;K1F%X;(AxupKghwTnT(A;@FIltAO*Vh9`?N3%~iS8);rDNm!Rr!{h3$wqZ zMJPeu3AFBMvX4Sl{EHW3A9<#3u|mX*y_R?BhVg)$Pcw!RPY2Xwy9LK{UOhk4rl+6! ziL<w}4Q|#74`3F2{&SX=(zNOW`3)@b14)3%Tr<T|!#9LdCyJ$~Wm?1DdZ{zp=MTJM zg&zrswjBCF{e@;lE|V4q1%o?wvt9Vpr+9#_`%%MuvY($pRy<R#pLkDjPsrteV>wZb z+JXKT0Pa8$zg^B8d?q|hbD;s$9fl&^jUKTd?zh68d@9UFqIWUv(kQL5^kqLS_(id@ z1B{ckm~`nCIdx~Z@sH2tW8@eNp|u1o+t#&*bn`s-%DD`#<p$)|lT0`Csu}rXX@Mkk zlToV1{TY0YOFlS)Jt&o)x78r|34lTG)}OOJ(XzZ%%6%+lIA3sRH083DvaR9rjz#vd z>_kZGT2HM-k*%AJgC-<=YBm)Or&23jNoP?tW#Y5qfe{}~E1OZIy(2i50NT}_uU9j| zpO8}=D8E^y!L1#`<RhUOU~T^1^%|@B&ntMi*f|+f;>2B$Hb+$i*+DX5re6)UiFFyA z?pAR7vM^B+4@j!@b8C01N6Z|oF~7HO>0vN_wHk+=f0s9p4F3QqZRNC|UiFo&eP{9Q z{1+dShsS5$!*)Ddaj+sGjF2L^@9Wg~ODC2un!tlO%7V>iJ(!Erh4hekJbUdKO8ZPG z9jE^0rs=LQo<ZIIFa@ZNjIq3`K0JyBgj{-7nW*|^v9o3?o@a2e0QT)#<;$yjPmvh% z;@>O`{+mE1wasyTamF5QIVXOkYAb%ZIHi+x!K;a*!z5KvlxD>Mb~RYNPu6l2Ru%<o zBMn~(zsF1Zh88g~O)Iz+yHcVw`1o=#_Z5#{{8Urw(PdHb<6X_(hzE}*BnRd9WQkQ2 z%|E@)RHzX$2mY$&xON!W^Dae9fU7_)Ha8M2^r_a5)wkn9DsE*l7B-5*Rb1lZ`OY>p zPz*t{MXgiR`dS=5VKQ>@;yZGqn}O5T)t2vvPtI|seDiT}HXKT$7OT2dho!n#6#aB_ zzpRY@M>m$ttCJgI#sEjmp_(-|TVLy1cZ>aIXI?X8`0<x)2_ZunW?^YDRXU4fuz0p0 zyB~!V*+!<e&U^aHTK@nGxO{1K{{SDceRccR(s7)Y{{T<V<IWr#_Y?J_&s$7#DqvS3 zos@(+xwY$GMsr7TvH_4X{*k3?GE<#jUPmF;ar<{$bX*Tgxhz*bj^lXNvtnC~N$cxT zWv%n`k*>U@UO2{a?aQF=1GLmw>CSvB;8Bs;^RWSL0-5}UEA!~j{+;9p9Pn2jJ~3Rx zmU$8n{jFGEmFuJ4bBg{OfsYo>LMw+XH$WAqrA9f|tMWcWlbeTw_Zdz#5*B^7&}q`M znDVV^MyK%37Jf&QS3!{cYdIXq0eS&3GHY&fIey!meK#KulyQ~B#d5I#<(&s<sJZKd z-hWR20EXxBMpMXQ%t+d1PSaw*fmwYs>R$5xEb_RA9~oVxpb{~SNYbJs+shXxH;aRa z`Bw>6Lpc?0NSdkmxi4O4$@vZkH+vu<Ou!-tr0)4|k>vSJla9s%Yi2g9ZFkTnWyy`E z@-#H8V_E!;G6A_(dy0z3Rg;}K<(hGoaon1HXVpxYm*;JRa*Z4a*U;0HtQo-3C!n{j zX=zBS<S~?0-lZ6TM2MAZgL-paEoX|@AVF~;18O=wf2+ymj~fak7F{Q=rD^`oMEdzy z<9P(jB4T=;l^*c@DmfX^$QX!d{axz4Wo56YJUb^4j0Yew9XpCz%Cn^e<pYqUOkQ-- zvAJtLpW$bP<nwW|!p_17XfR;d)Z5PuF>Ug<$>Z_)xLPc%E=PKcYUIuRVdU^xaX6OT zgxJwMvfeIQ-Z}96c+tnmnC3|Dt!1{~Dc7XqbMmJZnJ|-#u^%KtlB+TGxU4LCKQE_0 zgz|<Ag9**HT$oOSY)|7v>s@m5tM2&!0BFGkmeBq}qQ>*_L(1^i50uG-2zJJqO6vvG zZXb<b4uAPFJf|6s2|YR*aa)~_A<RvL$M<M!e7HW7gcony<V$a8+D?|#R*}o}mc<5K zib}8{wH3Zxnu=V75=peyvN`vz7lgqSwF?{acOo|b0Hq&4*1v9X+#LQt4ot_J#%@wJ z9EpinA;q&ZEMv+@2XI4jy=$`;e_VE|{{U~^qxznBVq#Ktq)V80p|O$Lim4ayWwe{e zYKsqte6VJ2XdE64Ns-vIZ6He8Wx5YaOObmX1z5GsE`wicdyh+0)k9aE#YNqhC+Q!d zS8@9ao(?nlo<ro$PZtZEf826wK7eUQ7a}lu9)AZgC^os&m6;Wf(=x9*;i=|)woIoa zmY?^5v>h}evi|^9RsP!5;`ttCd`*lMN6QP9liMrkJJkOGs&!N8Z1UFe-UL9)m_h#3 zTYabc*3&4rzl{{}+t_WtV;1{X*~)+McL$A3YYcZjr?p?Jf1Fe1;`tl_?u`~S6|OK_ zy<>SK1%5S<#?UksyvJB-@H~D4;6x<O{XwhG%~Eo8zvK9dfE?Feky^|~nU(01$F5#9 zj6oC#0`ooVE%D#;$B!z%v?UK8I)`9?!<PG_x6-D3zpXvHINI=j2~@AhibGxix%ItP zq?5vCFZH|Re~cbq1<PUh-}I{i1PbSpcglCU_@52@8wNj&a+QwQB0*U_40oly^7vz~ zr-kn+;JkBW8*%)PjO`*vwCezlwT~%Jty%HM9}kZC0A<)ck*Wdd)SAa~!rklEe;EEu znem)Fg$EcV&}v`ut-gOrCo6;P@$=Z;eq(ZqCMY0{%{SPiP}APC`fJ<qo^k4@<Q{Tu z#KDAnmr*{oKD=CcKO!99<m_liQmY^CI?vLH8sp7)d>HwR*+4$jKJhEp(_7Tr9T8|? z;pfJ1JT_1vgxq$KQ`*v2cRR<PI!+<DbnYq5bXvg5`2!Vmw)Y+CtYM{IPr~PD5Jy^G zokh}<ap&B>e)RJ=i+Y@HNh<5@8XBs3(>uzu<#jnSGwo2TxRVOHD4v3e;Pri#@egAH zAk}`<%i$RSXc8w%TBnE%d6x>Xo52xdt-90Bd?)F<FN9#m-zvG77b8nj*M#DAZ;|AH zPmCRH6>~|~kHD(oY+<A8=qRk`gE8a6N{KRbHIC<pN6&tIRopHR6a-1Xr_#Bt<F-z( z<Nda5L}*T+-ly5T#Iwmf1WzByXKZ1xW-*cbQ`i3hNyPsEUH<^e)Mmg?Wx&8>a#hn& z7L6-6MAZFb`L1?FTo~A?DL(H{wLHP~--z1&C&<B@2pow&8wLOwou^9A>H6RPe%a+~ z`3@r7wDKsik0IDcZK5Oay-cpVJoSmnWPD7(%Fc$WE5062$Z?3s(lpYx&2fEj%*pYi z4f1jS0C4oJV~>6mvgO3Zfgk-y?Ok6v;lcF2RJlP&h5Oe=WO44R#=s304A~N2a~;+Z zPDNieU8`9f_NIM@>r0+Td^0iBoLR;wQpzLPY3WjH34z;6nyAph!!b9tNVMfB2;Crx zDN2WT%Z@r0v<pQ;Ne7R|43{ELLT^*mF5~f5i_U_Ox;y?EnU~wSqf>aO`cDbY{I)!Q z@vK`zIS0}!9(BC2=r}*ed|w;~Xr7bbvZ$+>;did&D9ezhH3^M%`gW~zlA&yX5Q+dD zSoQP(S4KwxpEkse&`y9_u4Syg8T_othY>rXMf=wI%5`}en6Wn@i$=E-*mbU%pA09O zx}O$C0gUVrML$;Yf5+z|kPwMc5Gd7>f9s>+n{WO-AmuN@pnE|P9=+?E*8bO_+4&FR zm7UNV8i^pqZPe#2eh-`&@}WgmMS!Z>fIHS&g}1x$erJoDkGYU0Lul6Z²@?Yig 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%0Ab}841T>lW5buZzIgsmqx`<AOa|`XF|lx<_}#a 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 YQ%FDP(<C?Qp*kt`G!QL8{{SEV*$hL9fdBvi literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/square-2.jpg b/libraries/foundation-6/docs/assets/img/generic/square-2.jpg new file mode 100755 index 0000000000000000000000000000000000000000..a5831cdcd74b492430ebceda9e0b60042897ddd1 GIT binary patch literal 44931 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 B*~kC@ literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/square-3.jpg b/libraries/foundation-6/docs/assets/img/generic/square-3.jpg new file mode 100755 index 0000000000000000000000000000000000000000..4b363e4e99fa8e0185df39dde328f7dcfad654bd GIT binary patch literal 36494 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%0AqVJAm0 zr}bLB6EUI3`^UzUbsK%QE#`K_7Y^KCG-U$){6XoT5)BRKPIITv|N4k%rbp|q2LB(M z?-wH#e5q~@k!mlnG#iPbC)i021fbFy++*L{;D%P7h#a;qclWE=DOd2hrDG}YkS4F4 zK1dhBjviq1?j7IqRdH!pA`K|@cibWM04y0^DG8Uu_RqBt7qBrg3v;nlAp^K!_JgVf zBU)OPO_7`}V)CY{$~J7R4}UjltcL$mP7#C7i7nUugB?WNI|8YJoYTFT;aUkepoQDZ z#KziPLsRaeJ1n0Xro9E^v+gs)jZ1URsFad8BXh>&0E@@qVU`5}ZN-Kx77O(`%$-rl z4>-ngG)2>RKDiiqO5^XH>y{04B5NSY42x9?leAUAL`_DhlsMa^UXkD$jd&XpyuYnB zVHovECSD|?3exzb^A18hXR)#ftb1P<EY6tWtJaB_a~jQqx{xEGXYZISJ=v5Dzir3{ zrTiP#Rsbu8@yNAy)AvqBK>JcZ^AbozrYI8|Rhme~=e^sq1~@G!;D)y^VbGZmrP<oZ zE@J<kUpiNy_+dd$R1}faZ@iQU8#S*M{h(!r89jO~zy>^W=Z88qg%0A_G0Fz+y@wWD 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 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/square-4.jpg b/libraries/foundation-6/docs/assets/img/generic/square-4.jpg new file mode 100755 index 0000000000000000000000000000000000000000..e178f82c884e505934b17be5bbd822c711ebb5ae GIT binary patch literal 15982 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 BMt}eS literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/square-5.jpg b/libraries/foundation-6/docs/assets/img/generic/square-5.jpg new file mode 100755 index 0000000000000000000000000000000000000000..5cca2171c377061b56faae98282622dc3ab5e14c GIT binary patch literal 32614 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%0DBnpsSGKWFcL9wP-m-S=RE}b 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 U|Bw0KmG<9$`F~xi|6Tn507UKK)c^nh literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/square-6.jpg b/libraries/foundation-6/docs/assets/img/generic/square-6.jpg new file mode 100755 index 0000000000000000000000000000000000000000..bde98f9c9a4e657961e1f45141deda5a578d0436 GIT binary patch literal 35787 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 U7Vl6lTBs3FG2nq9Uvdxs*$KS&ng9R* literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/generic/voyager.jpg b/libraries/foundation-6/docs/assets/img/generic/voyager.jpg new file mode 100755 index 0000000000000000000000000000000000000000..b76585bd2636dc803b2fb26fc694cf9b4affa39d GIT binary patch literal 45757 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 Z?1v89cZ+WdhzMNjP1}G)T>Rha{{eyR8nXZZ literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/gulpfile.js b/libraries/foundation-6/docs/assets/img/gulpfile.js new file mode 100755 index 00000000..56cffd65 --- /dev/null +++ b/libraries/foundation-6/docs/assets/img/gulpfile.js @@ -0,0 +1,167 @@ +var $ = require('gulp-load-plugins')(); +var argv = require('yargs').argv; +var gulp = require('gulp'); +var rimraf = require('rimraf'); +var panini = require('panini'); +var sequence = require('run-sequence'); + +// Check for --production flag +var isProduction = !!(argv.production); + +// File paths to various assets are defined here. +var paths = { + assets: [ + 'src/assets/**/*', + '!src/assets/{!img,js,scss}/**/*' + ], + downloads: [ + 'src/downloads/**/*.*' + ], + sass: [ + 'bower_components/foundation-sites/scss' + ], + javascript: [ + 'node_modules/jquery/dist/jquery.js', + 'bower_components/foundation-sites/dist/foundation.js', + 'bower_components/what-input/what-input.js', + 'src/assets/js/**/*.js', + 'bower_components/lodash/lodash.js', + 'src/assets/js/app.js' + ] +}; + +// Delete the "dist" folder +// This happens every time a build starts +gulp.task('clean', function(done) { + rimraf('./dist', done); +}); + +// Copy files out of the assets folder +// This task skips over the "img", "js", and "scss" folders, which are parsed separately +gulp.task('copy', function(done) { + gulp.src(paths.assets) + .pipe(gulp.dest('./dist/assets')); +}); +gulp.task('downloads', function(done){ + gulp.src('src/downloads/**/*.*') + .pipe(gulp.dest('./dist/downloads')); + done(); +}); + +// Copy page templates into finished HTML files +gulp.task('pages', function() { + gulp.src('./src/pages/**/*.html') + .pipe(panini({ + root: './src/pages/', + layouts: './src/layouts/', + partials: './src/partials/', + data: './src/data/' + })) + .pipe($.cacheBust({ type: 'MD5' })) + .pipe(gulp.dest('./dist')); +}); + +gulp.task('pages:reset', function() { + panini.refresh(); + gulp.run('pages'); +}); + +// Compile Sass into CSS +// In production, the CSS is compressed +gulp.task('sass', function() { + var uncss = $.if(isProduction, $.uncss({ + html: ['src/**/*.html'], + ignore: [ + new RegExp('^meta\..*'), + new RegExp('^\.is-.*') + ] + })); + + return gulp.src('./src/assets/scss/app.scss') + .pipe($.sass({ + includePaths: paths.sass, + outputStyle: isProduction ? 'compressed' : 'nested' + }) + .on('error', $.sass.logError)) + .pipe($.autoprefixer({ + browsers: ['last 2 versions', 'ie >= 9'] + })) + // .pipe(uncss) + .pipe(gulp.dest('./dist/assets/css')); +}); + +// Combine JavaScript into one file +// In production, the file is minified +gulp.task('javascript', function() { + var uglify = $.if(isProduction, $.uglify({ + mangle: false + }) + .on('error', function (e) { + console.log(e); + })); + + return gulp.src(paths.javascript) + .pipe($.concat('app.js')) + .pipe(uglify) + .pipe(gulp.dest('./dist/assets/js')); +}); + +// Compiles HTML templates into JST +gulp.task('jst', function() { + gulp.src('src/templates/*.html') + .pipe($.jstConcat('templates.js', { + renameKeys: ['^.*marketing/(src.*.html)$', '$1'] + })) + .pipe(gulp.dest('dist/assets/js')); +}); + +// Copy images to the "dist" folder +// In production, the images are compressed +gulp.task('images', function() { + var imagemin = $.if(isProduction, $.imagemin({ + progressive: true + })); + + return gulp.src('./src/assets/img/**/*') + // .pipe(imagemin) + .pipe(gulp.dest('./dist/assets/img')); +}); + +// Deploy to the live server +gulp.task('deploy', ['build'], function() { + return gulp.src('./dist/**') + .pipe($.prompt.confirm('Make sure everything looks right before you deploy.')) + .pipe($.rsync({ + root: './dist', + hostname: 'deployer@72.32.134.77', + destination: '/home/deployer/sites/foundation-sites-6-marketing' + })); +}); + +// Build the "dist" folder by running all of the above tasks +gulp.task('build', function(done) { + sequence('clean', ['pages', 'sass', 'javascript', 'images', 'jst', 'downloads'], done); +}); + +// Start a server with LiveReload to preview the site in +gulp.task('server', ['build'], function() { + return gulp.src('./dist') + .pipe($.webserver({ + host: 'localhost', + port: 8000, + livereload: true, + open: true + })); +}); + +// Build the site, run the server, and watch for file changes +gulp.task('default', ['build', 'server'], function() { + gulp.watch(paths.assets, ['copy']); + gulp.watch(['./src/pages/**/*.html'], ['pages']); + gulp.watch(['./src/{layouts,partials}/**/*.html'], ['pages:reset']); + gulp.watch(['./src/assets/scss/**/*.scss'], ['sass']); + gulp.watch(['./src/assets/js/**/*.js'], ['javascript']); + gulp.watch(['bower_components/foundation-sites/dist/foundation.js'], ['javascript']); + gulp.watch(['./src/assets/img/**/*'], ['images']); + gulp.watch(['./src/templates/**/*'], ['jst']); +}); diff --git a/libraries/foundation-6/docs/assets/img/icons/favicon.ico b/libraries/foundation-6/docs/assets/img/icons/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..0ce83eaa696c96eca8451b74b9435abcbed5bf0e GIT binary patch literal 1406 zcmeHE`!keb6n<1nS1KWwb=!+XMT)Q}p^KDj_f#rAMJ2jTmzgp(V+ol>YlX-di?AeP z%CftyWwESlF=-n5H#%<9PCxdu@15s+&+~rgIp2BC3mDKcF~QuEU<jB|<V2V~vLhJ4 zh~9I-{H_;Eb8Ru)nU1OcH&B#vF|Esox||DbQ#i)Dgpg#i@JZ|gUHfCGDm^jT{SvA& zHs$i5B(#ei@JpMGAALd$G(}*tw-AcT04NFaGFM14tnpn_gqdLxdMbI))CQrKps8|4 zeGVJl@13Ek=A$Olmg;*!Ssg|-9WkoP#Ten|z*|hHpQEk7p6W;9qsW`;i7`ExhY@)? zT8q8W@X8Xh3V(DEv~@nv)(1mY6^+hfdo<?QV5Bt$5`h)uC2X{ad?0(r$GBREo+=NF zc09zCR)pc!SWIYyP?oz>Z!TyQx=|k-(zBqh;9*c20v$mju!d3+gGogS6eS!C%U@6r zzU0#!Ekb*$k&l_7LP+y?=&f?anEVNO<Usf35q^&pQ4d`7)dgepYc_PUrx+sCWLS`{ z0L`y0@wt>wcTs>5MHX6$$V*!qY6L9OiZQOrg049f6J5_R&=7)evUtdfIgsYENau&z zOl#5>qW?n>x~c=ACe#Y3FOlcpdtZu{CZIQgy?1Tm)68}qN!gve`kuA#f#48hBY)?Z zAVk{TxwXN<-X&zY19OTwd1#)WC(dkhx)`L-la{Udho7->i!+SiY_OQiPr7>I2E%3^ zIQlH`P2A|~rYlx$_gv%`EH4M1-MVs-r^YhJn0<`-@rCcH1|GNhEZc+U7V~*Kc1CTy zwy0mX-!C!BG|_eQoZi@*31Ds}Fk#GE`XBiTUGIGVv{&5WOD5!J*6*Gz;YY8yC&$nF K)f>fsg?|76JsEKT literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/footer-expo-retina.png b/libraries/foundation-6/docs/assets/img/icons/footer-expo-retina.png new file mode 100755 index 0000000000000000000000000000000000000000..71275576fa5e64c85e8540264501c9477aeb2402 GIT binary patch literal 2137 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 H<8uBB-JoA- literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/footer-expo.png b/libraries/foundation-6/docs/assets/img/icons/footer-expo.png new file mode 100755 index 0000000000000000000000000000000000000000..548278d8e191e227c428d6838179db98b7f89986 GIT binary patch literal 1353 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6I!3HGL_ATQBQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?@QuLn2Bde0{8v^K<nQL2C3WatnaE85nHrD+&^mvr|hH zl2X$%^K6yg@7}MZkeOnu6mIHk;9KCFnvv;IRg@ZB<rk7%m7Q#vqGWHUU{hfQG$1#% zBvGLvHz%*ys=`(YY_1iM4HDK@QUEI{$+lI3I4Z(7K*2e`C{@8!&saCvz|c^^%uLVF z#MI2pP)EVYz|ctF0Eo<V4Na^}&8&>f6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}<f6=ilFa-(1(1n}N%^HE zwn{*kLcEY$05>+T7#d8#0MoBXEYLU9GXQxBrqI_HztY@Xxa#7Ppj3o=u^L<)Qdy9y zACy|0Us{w5jJPyqkW~d%&PAz-CHX}m`T04pPz=b(FUc>?$S+WE4mMNJ@J&q4%mWE% zf_3=%T6yLbmn7yTr+T{BDgn*V%gju%ay2wCcC>JIb91&ZGc<HHvaob^baOUzGIla{ zakj89h3R$4PcF?(%`1WFO@ZrmF~F%8lo)agfHu3N7G;*DrnnX5=PH0bZIy||Eskau zM#e^_W;o4*>P^Av7H3zSdi8;h(Fa8>QdGl)fawRsgeP1e2cGm(^ML8S2$--xKP`1+ zU|`(s>Eaktacj+#+uAOHBFE0pyi-&^QS+F_^eNGaQ?k8G?mY?o8E^Ahyy6pk#WE57 z#UCF9xlCTzqZr6`wmJID$F;xu{BGY!pB%dXoZaqkzrMx&j=o(cbKI!I>H=%mK}!oJ z`MU0$`A<v}WVUF2=1<_3dErv$6~}ta!JH%G$X2DSPeBGuN(&Ac_3u&2`=n&Rz!rIZ z|1sr`ol2AT$TtTDtc%>j{p|oZM<ZvzL*-4HC!g1rDZ58AoS$cDnJJvXcy@u&`CUCK z{Ye+NxlEb9Kakkd6gAI5XC{-sf`_7@4m0P5x7T94j97lvxO|%Xs?8~AThBS&dcneq zRiy%H@jA_GvbOu(E4dT!#7B?s&c=sNlvW=!hzOqCEvkM{vsU_fjEmq-Ch0$?YR_)E zDdsrq>;G#S)^~EXJu6*q-AtMOfayzvWPk9aKlhs0POeq!H;kO&tIE{-K<Z7f&%fm_ zKbOZnQ7q57XuIvk)%Op%KJ^C5uah~NVjOwChP~sGg!Z<FleKrxU37e@&gv}-q>8`n zayj&+a8i*@W0hLDN$!7BzCVi+i`J}ux8l(}^YZ76uj?1H%(?JA^YX0OZYLfuda|5> ZnPGL|1mCRVnaZHT&C}J-Wt~$(69B2)>~R19 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/footer-foundation-retina.png b/libraries/foundation-6/docs/assets/img/icons/footer-foundation-retina.png new file mode 100755 index 0000000000000000000000000000000000000000..03d7d06b022fbf980f24fc45c5fa00f75ad0387f GIT binary patch literal 1980 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 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/footer-foundation.png b/libraries/foundation-6/docs/assets/img/icons/footer-foundation.png new file mode 100755 index 0000000000000000000000000000000000000000..143f9eae3a05bba9992b430fd172f68bf2597573 GIT binary patch literal 1297 zcmeAS@N?(olHy`uVBq!ia0vp^5<o1*!3HF6)y8xHDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49qH-ArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{<S3ODsN@GWpo&B*kqDoPEm@(W3>%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XRMoSU}&gdW~OIo zVrph)sH0$HU}&Uo07PcGh9*{~W>!Y#3Q(W~w5=#5%__*n4QdyVXRDM^Qc_^0uU}qX zu2*iXmtT~wZ)j<02{OaTNEfI=x41H|B(Xv_uUHvof=g;~a#3bMNoIbY0?5R~r2Ntn zTP2`NAzsKWfE$}v3=Jk=fazBx7U&!58GyV5Q|Rl9UukYGTy=3tP%6T`SPd=?sVqp< z4@xc0FD*(2MqHXQ$f^P>=c3falKi5O{QMkPC<bKYm*f{`<QFJ72b(Eq_$DT2=79t> z!8&|>tvvIJOA_;vQ$1a5m4IgGWoD*WIht7*85@~6yE$8!85+78Sy(zdx;Yy<89N!f zI9phl!t}c2Czs}?=9R$orXcjX;M5CB47mkBn_W_iGRsm^+=}vZ6~Lah%EaOpQ%6f< zH*<40oaRCGreJXkM6ZPbPQCg-$LNEi7AdM>LcsI`V!{(HkONQpsd>QkUIa|o#!R^h z3=E9To-U3d6}PTjy{qk9C~@H9{WQPGLdExbIhv|@OZLRx*fUjHyy&rgK$rcorT-l# za(lH*SfUv;O(^@GP*jIe-}}kWugto+u1>uARq*Yfw&~|Bt<V3oJyv>`G33yn#e#t$ zPfl_wGpSeWCiHYJU_XB2SohCfEuKZ9o+Zj{vU{@qY}+obd9M2P2W!kvfeXx^UmP;w z6Lew!v#YLwWzmd-c3BtL=0DSUEEgPcHA!>*0qL+WM-;cr-aqk>&?>{GX)>1UXEZlQ z>ipU)G;d?tr{m1mKCh{N#hU+6JK@dIxM#*21RwAC7OfMYcK*;aSr6wWxne6OuiF&q z5O=2KEYtJ~omXbEhkMVO=}r&RePy<Gs_n@%#+ink?<Gw{J>I#laOlf<$SZk&eaiEx z))5C*gvFenkr8+25s&bW!)*JCzwGfy7MguyD(n0+zKdAqzPSF^u1Edv#$eg{zI}6R zt#&#^1?ats;hy@cD(1GyGtm!+E?)fEs4OXA`LAoivlFayDmI&I%lwUgY|q5Q(ED@Y U@9$@q9sw0np00i_>zopr0GT@0CjbBd literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/footer-icons-retina.png b/libraries/foundation-6/docs/assets/img/icons/footer-icons-retina.png new file mode 100755 index 0000000000000000000000000000000000000000..17fdedc867689e0cb9025fd81c8b7208b7488d47 GIT binary patch literal 6389 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 J{_XZ({|7rMSqlIF literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/footer-icons.png b/libraries/foundation-6/docs/assets/img/icons/footer-icons.png new file mode 100755 index 0000000000000000000000000000000000000000..39b48e1c08e77c4773504d1ca0b38e4555b8eb8b GIT binary patch literal 5662 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 U57zh0{A26p?CEr4>;A+40w#Z+lK=n! literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/footer-products-retina.png b/libraries/foundation-6/docs/assets/img/icons/footer-products-retina.png new file mode 100755 index 0000000000000000000000000000000000000000..04fee5d23f81e745ab9a4e178bbb8b7722c51e9b GIT binary patch literal 2187 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 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/footer-products.png b/libraries/foundation-6/docs/assets/img/icons/footer-products.png new file mode 100755 index 0000000000000000000000000000000000000000..2506878b1889f52d801cfad3ce8658b00c61902a GIT binary patch literal 1466 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoR!3HEv_nU7636!`-lmzFem6RtIr7}3C<R_&n zc;+Uirv{}arc@T5OtoQPU{=Wti71Ki^|4CM&(%u=snM&*Edc6fV6d^TC`e4sPAySL zN=?tqvsHS(d%u!GW{Ry+xT&v!Z-H}aMy5wqQEG6NUr2IQcCuxPlD(aRO@$TEfZWuQ zM1_jnoV;SI3R@+xxmG|nNLXJ<0j#7X+g1tUs0iNx1?T*tR0UH#W8Gu}Lqi2KGd)8S zQ!_I|9R(u;LnD0yATrZ6G_f)@vobPQfC43;ZAB?*RzWUqP`iLUTcwPWk^(Dz{qpj1 zy>er{{GxPyLrY6bkQqisx<D1W#g%y_i50qe#mX=fTvCgZi!uvJGV}8kKqe+8<(HP& zDgj*z@j`9^+}ONgXfOc-Our(rK;KZ$0OTc@LSJ9}N^^7Js*6j4QW5UOYH)E#WkITb zP-=00X;CsT;?k5sRuxz|7o{ea<QIkH=jXseF(4zqB)>Q#zd*q`*i1pgH!(Rg4<w)o z*5T`G<(XGpl9-pA>gi&u1T;f0Gc(1?(agfg*vQnx&Dp}t(9qS$!qVB%&Dqe&*vZ(% z*}}pUrq?AuximL5uLPzy1)<jzr(RHE$SnZc?2=lPS(cjOR+OKs0QR(1CT_PF;WQ7b zHwCv_jB)DK2RcR{6tzfE4HE*U9}p9saDg0n(of9;ruQOX!cLTpo6W$$q~q!07*cU- z$<*84A%P;t&YzJfPCIjE;U*6ieIMZy9;sg*Jn?4h%+Rl74iu<*$^R+V(`ACwtm$$} z9*(t~xlH*B1Sg7zoXL{Wp1V)={)2Y~&)($f{xE#A`TWiM_p;aK_v_C-8#QYO%eqEm z8Tkgw50@{wb9UU4(~n`{cQid7e~`x`lf`KP&y|L%4e!*17&r^~Py7*_!7%y3^y81h z9i;28-q;-5cb)Il)O61eev`%IU$8uneHNB;+;D!w=Dz7cY&-d%37%+R-Tz79nUX?b zw6eg1r1`PWmZkc+toyt|w^FR~fYUBli7y-L&L3Q7^j&bz)`%N=&#ok8d$GGZDt|DJ zb(|C^X31W4koB4YFWUj$b<>kB%XFV<n*HYkZ~14|oJNix2ann{rausv@`+`q)rquO z2aL>rg?F6r)_Q+|d*=@aWxJ<4glw4f9o8<saOu|KzW4r7=MQ|G^#1p$h(DjCwlqci zbaLoCi#}kMah~(pf4<|K?<`Ip(y!*6F;8XsXTP#VOW)LSruf>KRl2|1Xn2(S(;LGb zS-YHLJ#2ryoGNJ6;llVLjs4&Bjw=fpMVjOSc-Wp^dR!wozx`k65-t<%$G#tWUFE}i zG}T`|_*$ejk)!xscwUpDRB%#rt9?nuiFB=`;`GF_i`r5jwm;q*YOt;({LVvlf5Dw{ zdd=_8{Ga0Pb^r2=X^$4pIM*ZkKySwL(#d8o_Ibw5Q`*3Ltt74I^Z)9DR<RzsuU`DA def~tAk&QuRPgUlhP3reRrKzVYFpQlNngFSJA{+n! literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/footer-studios-retina.png b/libraries/foundation-6/docs/assets/img/icons/footer-studios-retina.png new file mode 100755 index 0000000000000000000000000000000000000000..84ff2b2ed61e36a41ff76f5fc5c95be24099a218 GIT binary patch literal 2725 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 Ur<!%5WcA|cN%khyxrL?v8*BH8M*si- literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/footer-studios.png b/libraries/foundation-6/docs/assets/img/icons/footer-studios.png new file mode 100755 index 0000000000000000000000000000000000000000..79050a8d58f0299a05c1fd93214253685322faec GIT binary patch literal 1565 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoR!3HEv_nU7636!`-lmzFem6RtIr7}3C<R_&n zc;+Uirv{}arc@T5OtoQPU{=Wti71Ki^|4CM&(%u=snM&*Edc6fV6d^TC`e4sPAySL zN=?tqvsHS(d%u!GW{Ry+xT&v!Z-H}aMy5wqQEG6NUr2IQcCuxPlD(aRO@$TEfZWuQ zM1_jnoV;SI3R@+xxmG|nNLXJ<0j#7X+g1tUs0iNx1?T*tR0UH#W8Gu}Lqi2KGd)8S zQ!_I|9R(u;LnD0yATrZ6G_f)@vobPQfC43;ZAB?*RzWUqP`iLUTcwPWk^(Dz{qpj1 zy>er{{GxPyLrY6bkQqisx<D1W#g%y_i50qe#mX=fTvCgZi!uvJGV}8kKqe+8<(HP& zDgj*z@j`9^+}ONgXfOc-Our(rK;KZ$0OTc@LSJ9}N^^7Js*6j4QW5UOYH)E#WkITb zP-=00X;CsT;?k5sRuxz|7o{ea<QIkH=jXseF(4zqB)>Q#zd*q`*i1pgH!(Rg4<w)o z*5T`G<(XGpl9-pA>gi&u1T;f0Gc(1?(agfg*vQnt&Dp}t(9qS$!qVB%&Dqe&*vZ(% z*}}pUrq?AuximL5uLPzy1)<jvr(RHE$SnZc?2=lPS(cjOR+OKs0QR(1CQi4QxZ*Sq zsy79vTTI+=>eUB2MjsTlNKp+F0;V4j6P|E^9C*@C%>$<QB4ENk(mFejfq|*t)5S5Q z;?|t0H}ic1McS+TSDQ|`eaxmc;E3s6aVKZdj|m*AiieuTIsbRoJ0^9wDLE=#TH@-Y z^{8{olz_v|g{wm}O|RZ~y#2}TlPAx;+nK5wUvz$F_WP~hqxNt0Q|o)YNhnN@D{0~k z4Y$toi!|PKFJEeQVhTr)a#=^=qWF@|_crIBG0c6`^y7=Y<Fu~1kD7Pr%&Yj{FQR>v zEw9X}=FfD6Y15n+`Ogtz*4#c<`CGR+i_{m{MT%m1PxfzCWtw3tyf&#VLZ*m=RZ>|j z=*qrL4{z%7ZPxjcZuTKh>)>vW+x$g#5+7t0i{5+=IwRvJpq)1F{%xW6`vZT>esb^C zhNv^#Zv=m`ds+DiS6j}!$^0qSZ{KH)cdVaGHSI<2J~H<@EqI`5fBDNY$7LPN7F#-W zPkbzUB(UvZBGVq><HCzhbeKLetv37cZpPPem$>f_Y9=X(z5H~sQ{i*vwq<i3JheZs z_$F=t5lgkhQPcM`b+7B#uCuExnAz@_)kWpLF8vdC)_CQp{gAyU`f{e&^mVF_R%d+Q zQs3PBy_3()Q(H4jxHO5?PIQr=s#Ue>tF<hVDz_ykyeR!Rd1K(=-6wNmj(!fyy58}m z_VjKA(K|=BOPsV5yM0t=<EhUZZ<|+}d(4te2%6@0dTB|q{>x1Y%Ofr3KD;?m=)jvr zz7sg+?%p`pZ2p`p)q!C?_u4mo>{-5FC{NuX_f%7!)!u0itgmj&-?VJr%D`Mlxx!1k zTpFFzgw~6&PyBLK<i5<|PxDMOj%+>uxzK3mI(HsLX@_sqUr63RW^{SZqgj9Zr&+#9 zdN-qF{^K`kz*6-_%cHW{MJv38FWo!BVmbNGq_%xM#Yc<Oa#dfwOnkhpW!4%_@eh_3 jP7~k$TzB8No<)M;O~QsLs^_%!g9>a<S3j3^P6<r_#1vkw literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/footer-top-icons-retina.png b/libraries/foundation-6/docs/assets/img/icons/footer-top-icons-retina.png new file mode 100755 index 0000000000000000000000000000000000000000..345027cf4cac57abbf9451d7694b634145965f24 GIT binary patch literal 3647 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 LGo2c3x2V4WB~VWS literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/footer-top-icons.png b/libraries/foundation-6/docs/assets/img/icons/footer-top-icons.png new file mode 100755 index 0000000000000000000000000000000000000000..596be27f8288917e7e014284c641eca64e2f793c GIT binary patch literal 4645 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 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/footer-university.png b/libraries/foundation-6/docs/assets/img/icons/footer-university.png new file mode 100755 index 0000000000000000000000000000000000000000..548278d8e191e227c428d6838179db98b7f89986 GIT binary patch literal 1353 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6I!3HGL_ATQBQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?@QuLn2Bde0{8v^K<nQL2C3WatnaE85nHrD+&^mvr|hH zl2X$%^K6yg@7}MZkeOnu6mIHk;9KCFnvv;IRg@ZB<rk7%m7Q#vqGWHUU{hfQG$1#% zBvGLvHz%*ys=`(YY_1iM4HDK@QUEI{$+lI3I4Z(7K*2e`C{@8!&saCvz|c^^%uLVF z#MI2pP)EVYz|ctF0Eo<V4Na^}&8&>f6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}<f6=ilFa-(1(1n}N%^HE zwn{*kLcEY$05>+T7#d8#0MoBXEYLU9GXQxBrqI_HztY@Xxa#7Ppj3o=u^L<)Qdy9y zACy|0Us{w5jJPyqkW~d%&PAz-CHX}m`T04pPz=b(FUc>?$S+WE4mMNJ@J&q4%mWE% zf_3=%T6yLbmn7yTr+T{BDgn*V%gju%ay2wCcC>JIb91&ZGc<HHvaob^baOUzGIla{ zakj89h3R$4PcF?(%`1WFO@ZrmF~F%8lo)agfHu3N7G;*DrnnX5=PH0bZIy||Eskau zM#e^_W;o4*>P^Av7H3zSdi8;h(Fa8>QdGl)fawRsgeP1e2cGm(^ML8S2$--xKP`1+ zU|`(s>Eaktacj+#+uAOHBFE0pyi-&^QS+F_^eNGaQ?k8G?mY?o8E^Ahyy6pk#WE57 z#UCF9xlCTzqZr6`wmJID$F;xu{BGY!pB%dXoZaqkzrMx&j=o(cbKI!I>H=%mK}!oJ z`MU0$`A<v}WVUF2=1<_3dErv$6~}ta!JH%G$X2DSPeBGuN(&Ac_3u&2`=n&Rz!rIZ z|1sr`ol2AT$TtTDtc%>j{p|oZM<ZvzL*-4HC!g1rDZ58AoS$cDnJJvXcy@u&`CUCK z{Ye+NxlEb9Kakkd6gAI5XC{-sf`_7@4m0P5x7T94j97lvxO|%Xs?8~AThBS&dcneq zRiy%H@jA_GvbOu(E4dT!#7B?s&c=sNlvW=!hzOqCEvkM{vsU_fjEmq-Ch0$?YR_)E zDdsrq>;G#S)^~EXJu6*q-AtMOfayzvWPk9aKlhs0POeq!H;kO&tIE{-K<Z7f&%fm_ zKbOZnQ7q57XuIvk)%Op%KJ^C5uah~NVjOwChP~sGg!Z<FleKrxU37e@&gv}-q>8`n zayj&+a8i*@W0hLDN$!7BzCVi+i`J}ux8l(}^YZ76uj?1H%(?JA^YX0OZYLfuda|5> ZnPGL|1mCRVnaZHT&C}J-Wt~$(69B2)>~R19 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/social-retina.png b/libraries/foundation-6/docs/assets/img/icons/social-retina.png new file mode 100755 index 0000000000000000000000000000000000000000..3f2e4a3fd9e69ba20d707a2eaec9ac8d1ec542be GIT binary patch literal 6847 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 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/icons/social.png b/libraries/foundation-6/docs/assets/img/icons/social.png new file mode 100755 index 0000000000000000000000000000000000000000..aa4b1896d7162650fd288c8d66fddea8bcf5f6d5 GIT binary patch literal 3815 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 V4c9xkS!=(Zj&{zrH*AhY{s&9iWyk;k literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/inky-banner-bg-boat.svg b/libraries/foundation-6/docs/assets/img/inky-banner-bg-boat.svg new file mode 100755 index 00000000..39f45364 --- /dev/null +++ b/libraries/foundation-6/docs/assets/img/inky-banner-bg-boat.svg @@ -0,0 +1,563 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 6000 120" style="enable-background:new 0 0 6000 120;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#71B9EA;} + .st1{fill:#1C86AF;} + .st2{fill:#353638;} + .st3{fill:#F7F4EB;} + .st4{fill:#EFE8D6;} + .st5{fill:#F7F4ED;} + .st6{fill:#FFFFFF;} + .st7{clip-path:url(#SVGID_2_);fill:#D5CFC0;} + .st8{fill:#E9BAA9;} + .st9{fill:#DFA696;} + .st10{fill:#CC7691;} + .st11{fill:#3A3A3A;} + .st12{fill:#B75978;} +</style> +<polyline class="st0" points="-5.5,-6.3 6004.5,-6.3 6004.5,117.8 -5.5,117.8 -5.5,-6.3 "/> +<g> + <path class="st1" d="M998.3,98.2c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0 + s-184.2,0-184.2,0s-92.2,19-192.5,0s-184.2,0-184.2,0s-92.2,19-192.5,0s-184.2,0-184.2,0s-4.2,0.9-11.8,2.1V143h1895.7V98.2 + C1190.8,98.2,1098.6,117.2,998.3,98.2z"/> + <path class="st1" d="M6703.8,105.2c-17.4-1.3-35.5-3.5-54-7c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0 + s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0 + c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0v0 + c-3.7,0.7-94.4,18.6-192.9,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0 + c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0s-184.2,0-184.2,0s-92.2,19-192.5,0 + c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0V143h753.6 + h753.6h753.6h753.4h0.1H6704v-37.8H6703.8z"/> +</g> +<g> + + <rect x="3633.5" y="59.4" transform="matrix(0.1625 -0.9867 0.9867 0.1625 3012.9478 3669.9067)" class="st2" width="69.6" height="1.5"/> + <path class="st2" d="M3663.3,90.7l-0.2,1.1c0,0.1,0,0.1,0.1,0.1l31.8,5.2c0.1,0,0.1,0,0.1-0.1l0.2-1.1c0-0.1,0-0.1-0.1-0.1 + l-31.8-5.2C3663.3,90.6,3663.3,90.7,3663.3,90.7z"/> + <polygon class="st3" points="3677.2,27.9 3672.6,28.9 3673.7,21.9 3677.8,24 "/> + <path class="st4" d="M3633.7,86.6l28,4.6c0,0,0.6-9.6,3.3-25.5l-12.3-9.3C3640.7,72.2,3633.7,86.6,3633.7,86.6"/> + <path class="st3" d="M3670.9,35.7c-6.9,6.4-13.1,13.7-18.3,20.6l12.3,9.3C3666.3,57.3,3668.2,47.1,3670.9,35.7z"/> + <polygon class="st4" points="3668.5,68.4 3665,89.9 3693.9,94.7 3691.2,86.2 "/> + <polygon class="st3" points="3674.6,31.4 3668.5,68.4 3691.2,86.2 "/> + <path class="st5" d="M3675.4,96.2l-22.8-3.7c-0.1,0-0.1,0-0.1,0.1l-0.9,5.3h0.1v0.2l22.8,3.7v-0.2h0.2l0.9-5.3 + C3675.5,96.3,3675.5,96.2,3675.4,96.2z"/> + <path class="st2" d="M3657.5,97.4l-3.7-0.7c0,0-0.1,0-0.1-0.1l0.5-2.6c0,0,0-0.1,0.1-0.1l3.7,0.7c0,0,0.1,0,0.1,0.1L3657.5,97.4 + C3657.6,97.3,3657.6,97.4,3657.5,97.4z"/> + <path class="st2" d="M3662.5,98.2l-3.7-0.7c0,0-0.1,0-0.1-0.1l0.5-2.6c0,0,0-0.1,0.1-0.1l3.7,0.7c0,0,0.1,0,0.1,0.1L3662.5,98.2 + C3662.6,98.2,3662.6,98.2,3662.5,98.2z"/> + <path class="st2" d="M3667.5,99l-3.7-0.7c0,0-0.1,0-0.1-0.1l0.5-2.6c0,0,0-0.1,0.1-0.1l3.7,0.7c0,0,0.1,0,0.1,0.1L3667.5,99 + C3667.6,99,3667.6,99,3667.5,99z"/> + <path class="st2" d="M3672.4,99.8l-3.7-0.7c0,0-0.1,0-0.1-0.1l0.5-2.6c0,0,0-0.1,0.1-0.1l3.7,0.7c0,0,0.1,0,0.1,0.1L3672.4,99.8 + C3672.6,99.8,3672.6,99.8,3672.4,99.8z"/> + <path class="st2" d="M3681.4,111.9l-35.3-5.8c0,0-10.8-2.7-12-11.2c3.7,0.6,51.4,8.5,51.4,8.5L3681.4,111.9z"/> + <path class="st4" d="M3684.2,106.3l-49-8.1c0,0,0,0,0-0.1l-0.7-1.5c0,0,0,0,0.1,0l50.5,8.4c0,0,0,0,0,0.1L3684.2,106.3 + C3684.3,106.2,3684.2,106.3,3684.2,106.3z"/> + <path class="st4" d="M3685.4,104l-54.2-8.9c0,0-0.1,0-0.1-0.1l0.1-0.6c0,0,0-0.1,0.1-0.1l54.2,8.9c0,0,0.1,0,0.1,0.1L3685.4,104 + C3685.6,104,3685.4,104.1,3685.4,104z"/> + <path class="st4" d="M3676.9,96.8l-25.5-4.2c0,0-0.1,0-0.1-0.1l0.1-0.6c0,0,0-0.1,0.1-0.1L3677,96c0,0,0.1,0,0.1,0.1L3676.9,96.8 + C3677,96.8,3676.9,96.8,3676.9,96.8z"/> + <polygon class="st6" points="3681.6,26.4 3678.8,25.1 3677,24.2 3676.2,29.2 3684.4,27.9 "/> + <g> + <defs> + <path id="SVGID_1_" d="M3656.6,87.7C3656.6,87.7,3656.6,87.8,3656.6,87.7L3656.6,87.7L3656.6,87.7 M3657.3,87.6 + c-0.1,0-0.2,0.1-0.3,0.1c0,0,0,0,0,0c-0.1,0-0.2,0.1-0.3,0.1l0,0c0,0-0.2,0-0.1,0.3c0,0,0.1,0,0.1,0c0.2,0,0.4-0.1,0.6-0.4 + C3657.2,87.8,3657.2,87.7,3657.3,87.6 M3657.7,87.3L3657.7,87.3l-0.2,0.2l0,0c0,0,0,0.1,0,0.1c0.1,0,0.2,0,0.2,0 + c0.1,0.1,0.1,0.2,0.1,0.2c0.1,0,0.1,0,0-0.1v-0.1c0,0,0,0,0-0.1C3657.8,87.4,3657.8,87.3,3657.7,87.3 M3659.7,86.2 + c0.3,0.2,0.4,0.3,0.4,0.3s0-0.1,0-0.2C3660,86.2,3659.8,86.2,3659.7,86.2 M3659.5,86h-0.1c-0.1,0.2-0.2,0.4-0.6,0.4v0 + c0,0.1,0,0.1,0,0.1c0,0.1,0,0.1,0,0.1c0,0.1,0,0.1,0,0.1c0,0.1-0.1,0.1-0.1,0.1c0,0,0,0,0,0c0,0-0.1,0.1-0.1,0.1 + c-0.2,0.1-0.3,0.1-0.3,0.1s0-0.1,0.1-0.1c0,0,0-0.1,0.1-0.1h-0.1c-0.1,0-0.1,0-0.1,0c0,0,0,0,0,0c0,0,0,0.1,0,0.1v0.1 + c0,0,0.1,0.1,0.5,0.2h0.1h0.1c0.1-0.1,0.2-0.1,0.2-0.1c0.1-0.1,0.1-0.1,0.1-0.1c0.1-0.1,0.1-0.1,0.1-0.3c0-0.2,0.1-0.5,0.2-0.6 + h0.1c0,0,0,0,0,0C3659.6,86.2,3659.6,86.1,3659.5,86 M3654.9,85c0,0.1,0.1,0.2,0.2,0.2c0.1,0.1,0.2,0.1,0.3,0.1 + c0.1,0,0.1,0,0.2,0c-0.1,0-0.2,0-0.3-0.1c-0.1,0-0.1,0-0.1,0c-0.1,0-0.1,0-0.1,0c-0.1-0.1-0.1-0.1-0.1-0.1 + C3654.9,85,3654.9,85,3654.9,85C3654.9,85,3654.9,85,3654.9,85 M3656.1,83.5C3656.1,83.5,3656.1,83.6,3656.1,83.5 + C3656.1,83.6,3656.1,83.5,3656.1,83.5 M3656.1,83.5C3656.1,83.5,3656.1,83.5,3656.1,83.5C3656.1,83.5,3656.1,83.5,3656.1,83.5 + M3656.2,83.5v0.1C3656.2,83.6,3656.1,83.6,3656.2,83.5c-0.1,0.1,0,0.1,0,0.1l0,0l0,0l0,0l0,0 + C3656.2,83.6,3656.2,83.6,3656.2,83.5 M3655,83.1c-0.3,0-0.5,0-0.6,0.1c0,0,0,0-0.1,0.1c0,0,0,0.1-0.1,0.1c0,0,0,0,0,0.1 + c0,0.1,0,0.2,0,0.2c0,0.1,0,0.3-0.1,0.5c0,0,0.2,0,0.5-0.2c0.1-0.1,0.1-0.3,0.3-0.5c0.1-0.1,0.3-0.1,0.5-0.1c0,0,0.1,0.1,0.1,0.2 + c0,0.1,0,0.2-0.2,0.3c-0.1,0-0.3,0.1-0.5,0.3c0,0,0,0,0,0.1c0,0.1,0,0.3,0,0.5c0,0,0,0.1,0.1,0.1c-0.1-0.2-0.1-0.3,0-0.5 + c0.1-0.2,0.2-0.3,0.5-0.5c0.2-0.1,0.2-0.3,0.2-0.6S3655.5,83.1,3655,83.1 M3656.2,87.6c0-0.1,0-0.2,0.1-0.3 + c0-0.1,0.1-0.2,0.1-0.3c0,0,0,0,0-0.1v0.1V87c0,0.1,0.1,0.3,0.2,0.4c0,0-0.1,0.1-0.2,0.1C3656.3,87.5,3656.3,87.6,3656.2,87.6 + M3657.5,81.3c-0.1,0-0.2,0-0.3,0.1c-0.1,0-0.1,0.1-0.2,0.1c0,0,0,0-0.1,0.1c-0.1,0.1-0.2,0.1-0.2,0.3c-0.1-0.1-0.1-0.1-0.2-0.1 + c-0.1,0-0.2,0-0.3,0.1c-0.2,0.2-0.1,0.6-0.3,0.6c0,0,0.2,0.1,0.5,0.1c0.1,0,0.1,0,0.2,0v0.1c0,0.5,0,0.6,0,0.7c0,0-0.2,0-0.2,0.2 + c0,0,0,0,0,0.1c0,0.1,0,0.2,0.1,0.2c-0.1,0-0.1,0-0.1,0.1c0,0.1,0,0.1,0.1,0.1c0,0,0,0.1,0,0.2c0,0.1-0.1,0.6-0.2,0.7 + c-0.1,0.1-0.2,0.2-0.4,0.2c0.1,0,0.2,0,0.3,0c0.1,0,0.1,0,0.1,0s-0.2,0.1-0.3,0.2c-0.1,0-0.1,0.1-0.2,0.1c0,0,0,0-0.1,0 + c-0.1,0-0.1,0-0.2,0c-0.1,0-0.1,0-0.2,0c-0.1,0-0.3-0.1-0.5-0.2c-0.2-0.1-0.3-0.1-0.6-0.1c-0.1,0-0.2,0-0.2,0.1l-0.1,0.1 + c-0.1,0.3,0,0.5,0.2,0.6c0.1,0.1,0.1,0.1,0.2,0.1s0.1,0,0.2-0.1c0.1-0.1,0-0.1,0-0.1h-0.1h-0.1c-0.1,0-0.1-0.1-0.1-0.1 + c0-0.1,0-0.3,0.2-0.3c0,0,0,0,0.1,0c0.1,0,0.2,0.1,0.3,0.2c0.1,0.1,0.2,0.2,0.5,0.2h-0.1c-0.1,0-0.1,0.1-0.1,0.1s0,0.1-0.1,0.1 + c0,0.1,0,0.3,0,0.5c0,0.1,0.1,0.2,0.1,0.3c0,0,0,0,0,0.1v0.1c0,0,0,0.1-0.1,0.1l-0.1,0.1h-0.1c-0.1,0-0.1-0.1-0.1-0.1v-0.1 + c0,0,0-0.1-0.1-0.1c0,0,0,0,0,0.1c0,0,0,0,0,0.1c0,0.1,0,0.2,0.1,0.2c0.1,0.1,0.2,0.1,0.3,0.1s0.2,0,0.3-0.1 + c0.1-0.1,0.2-0.2,0.2-0.2c0-0.1,0-0.1,0-0.2c0-0.1,0-0.2-0.1-0.3c0-0.1-0.1-0.1-0.1-0.2v-0.1c0-0.2,0.3-0.2,0.6-0.3 + c0.1,0,0.2,0,0.3-0.1c-0.1,0.1-0.2,0.6-0.2,1c-0.2,0.1-0.3,0.3-0.5,0.6c-0.1,0.3-0.1,0.7,0.1,0.9c0.1,0.1,0.1,0.1,0.2,0.1 + c0,0,0.1,0,0.1,0s0,0,0-0.1c0-0.1,0-0.2,0-0.5c0-0.1,0-0.2,0-0.3c0-0.1,0.1-0.2,0.2-0.3c0.1,0.7,0.2,0.9,0.3,0.9c0,0,0.1,0,0-0.1 + c0-0.1-0.1-0.5-0.1-0.9c0,0,0.1,0,0.1-0.1c0,0.1,0,0.3,0.1,0.5c0.1,0.1,0.2,0.1,0.4,0.1c0.2,0,0.4-0.1,0.6-0.3c0,0,0,0,0.1,0.1 + l-0.1,0.1c0,0-0.1,0.1,0,0.1c0.3-0.2,0.3-0.3,0.3-0.3h0.1c0,0.1,0,0.2-0.1,0.3c0,0,0.1,0,0.1,0c0.1,0,0.2,0,0.2-0.1 + c0-0.2,0-0.2,0-0.2h0.1c0,0,0,0,0.1,0.1l0.1-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0.1,0,0.2,0,0.3,0c0,0,0-0.1-0.1-0.1c0,0,0-0.1-0.1-0.1 + l0.1-0.1c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0.1,0.2,0.2c0.1,0.1,0,0.2-0.1,0.2h0.1h0.1c0,0,0,0,0.1,0c0.1-0.1,0.1-0.3,0-0.5 + c0,0,0.1,0,0.1,0v-0.1v-0.1c0-0.1,0-0.2,0-0.3c0-0.1,0.1-0.1,0.2-0.1c0.1,0,0.1,0,0.2,0c0.1,0,0.1,0.1,0.1,0.1V86h0 + c0-0.1,0.1-0.2,0.1-0.3c0.1-0.3-0.1-0.7-0.2-0.8c-0.1-0.1-0.2-0.2-0.2-0.3c0-0.1,0.1-0.1,0.2-0.1c0.1,0.1,0.1,0.3,0.1,0.6 + c0.1,0.1,0.1,0.1,0.1,0.1c-0.1-0.1,0-0.3,0.1-0.5c0-0.1,0-0.1,0-0.2v-0.1c0,0,0,0,0-0.1c-0.1-0.2-0.1-0.2-0.6-0.3 + c-0.1,0-0.2,0-0.3,0c-0.2,0-0.3,0.1-0.4,0.3c-0.1,0.2-0.2,0.5,0,0.7c0.1,0,0.1,0.1,0.2,0.2c0.1,0.1,0.1,0.3,0,0.6 + c-0.1,0.2-0.3,0.3-0.5,0.3c-0.1,0-0.2,0-0.3,0c-0.3-0.1-0.6-0.3-0.6-0.6c0-0.2,0.1-0.6,0.1-0.7c0.1-0.1,0.2-0.2,0.2-0.3 + c0.1,0,0.1,0,0.1-0.1c0-0.1,0-0.1-0.1-0.1l0.1-0.1c0,0,0.1,0,0.1-0.1c0,0,0,0.1-0.1,0.1c0,0,0,0,0-0.1c0,0,0.1,0,0.1-0.1 + c0,0,0,0-0.1,0c0,0,0.1-0.1,0-0.2c0-0.1,0.1-0.3-0.1-0.7c-0.2-0.3-0.2-0.6-0.2-0.6h0.1c0.1,0,0.2-0.1,0.5-0.2l0.1-0.1 + c0-0.1,0-0.2-0.1-0.3C3657.7,81.3,3657.6,81.3,3657.5,81.3"/> + </defs> + <clipPath id="SVGID_2_"> + <use xlink:href="#SVGID_1_" style="overflow:visible;"/> + </clipPath> + <rect x="3653.5" y="81.3" class="st7" width="6.7" height="7.3"/> + </g> +</g> +<g> + <path class="st8" d="M2231.6,79.2c0.1,0.1,0.2,0.2,0.2,0.2C2231.8,79.3,2231.8,79.2,2231.6,79.2z"/> + <path class="st8" d="M2214.4,122L2214.4,122h1.6c0.2-3,0.6-5.4,1.3-8c-1.6,1.7-3,3.8-4.2,5.8C2213.8,120.2,2214.3,121.1,2214.4,122 + z"/> + <path class="st8" d="M2210.5,111.4c0.2-0.7,0.3-1.4,0.5-2C2210.9,110.1,2210.8,110.7,2210.5,111.4z"/> + <path class="st8" d="M2209.8,115.8c0.1-0.5,0.2-1,0.3-1.6C2209.8,114.8,2209.8,115.3,2209.8,115.8z"/> + <path class="st8" d="M2231.4,78.9c-0.2-0.1-0.3-0.3-0.5-0.4C2231.1,78.6,2231.2,78.8,2231.4,78.9z"/> + <path class="st8" d="M2210,113.5c0.1-0.5,0.2-1,0.3-1.5C2210.3,112.5,2210.1,113,2210,113.5z"/> + <path class="st8" d="M2209.1,121.3c0,0.3,0,0.6,0,0.8C2209.1,121.8,2209.1,121.5,2209.1,121.3z"/> + <path class="st8" d="M2209.1,120.7c0-0.6,0.1-1.2,0.1-1.8C2209.2,119.5,2209.2,120.1,2209.1,120.7z"/> + <path class="st8" d="M2209.3,118.2c0.1-0.6,0.1-1.1,0.2-1.7C2209.5,117.1,2209.4,117.6,2209.3,118.2z"/> + <path class="st9" d="M2209.1,121.3c0-0.2,0-0.4,0-0.5C2209.1,120.9,2209.1,121.1,2209.1,121.3z"/> + <path class="st9" d="M2210.4,112c0-0.2,0.1-0.4,0.1-0.6C2210.5,111.6,2210.4,111.8,2210.4,112z"/> + <path class="st9" d="M2209.6,116.5c0-0.2,0.1-0.5,0.1-0.7C2209.6,116.1,2209.6,116.3,2209.6,116.5z"/> + <path class="st9" d="M2225.9,76.7h0.1c-0.3,0-0.6-0.1-1-0.1c0,0,4.6,2.9,5.8,6.3C2229.6,79.5,2225.9,76.7,2225.9,76.7z"/> + <path class="st9" d="M2209.9,114.3c0-0.2,0.1-0.5,0.1-0.7C2210,113.8,2210,114,2209.9,114.3z"/> + <path class="st9" d="M2209.3,118.9c0-0.2,0-0.4,0.1-0.7C2209.3,118.4,2209.3,118.6,2209.3,118.9z"/> + <path class="st9" d="M2209.8,122c0-1,1-2.4,2.3-2.4c0.4,0,0.7,0.1,1,0.3c1.2-2.1,2.6-4.1,4.2-5.8c1.3-4.6,3.6-8.5,7.3-10.5 + c9.9-5,11.4-9.4,10.9-13.4c0-0.2,0-0.3,0-0.5c-0.5,0.9-1.8,1.5-2.5,1.3c-0.8-0.1-0.5-1.2-0.3-2.5c0.2-1.2,0.4-2.1,1.2-1.9 + c0.4,0.1,0.9,0.4,1.3,1c0.1,0.4,0.1,0.7,0.2,1.1c0-0.1,0-0.2,0-0.3c-0.4-2.2-1-4.9-2.3-7c-0.3-0.7-0.7-1.3-1.2-1.9 + c-0.1-0.1-0.2-0.2-0.2-0.2c-0.1-0.1-0.2-0.2-0.3-0.2c-0.2-0.1-0.3-0.3-0.5-0.4c-0.6-0.5-1.3-0.9-2.2-1.2c-0.4-0.2-0.9-0.3-1.4-0.4 + c-0.2,0-0.4-0.1-0.6-0.1c-0.2,0-0.3-0.1-0.5-0.1c-0.1,0-0.2,0-0.3,0h-0.1c0,0,3.7,2.8,4.9,6.2c1.2,3.4,0.5,9.1-5.3,12.4 + c-3.2,1.8-11.5,4.4-14.4,14c-0.2,0.6-0.4,1.3-0.5,2c0,0.2-0.1,0.4-0.1,0.6c-0.1,0.5-0.2,1-0.3,1.5c0,0.2-0.1,0.5-0.1,0.7 + c-0.1,0.5-0.2,1-0.3,1.6c0,0.2-0.1,0.5-0.1,0.7c-0.1,0.6-0.1,1.1-0.2,1.7c0,0.2,0,0.4-0.1,0.7c-0.1,0.6-0.1,1.2-0.1,1.8 + c0,0.2,0,0.3,0,0.5c0,0.3,0,0.8,0,0.8L2209.8,122L2209.8,122z M2229.4,93c0.7-1,1.7-1.4,2.5-0.8c0.8,0.6,0.9,1.9,0.2,2.9 + c-0.7,1-1.9,1.4-2.7,0.8C2228.6,95.3,2228.8,94,2229.4,93z M2224.6,96.9c1.1-0.8,2.5-0.6,3.2,0.4c0.7,1,0.4,2.5-0.7,3.2 + c-1.1,0.8-2.5,0.6-3.2-0.4C2223.2,99.2,2223.6,97.7,2224.6,96.9z M2218.8,100.9c1.1-0.8,2.5-0.6,3.3,0.5c0.8,1.1,0.4,2.6-0.7,3.3 + c-1.1,0.8-2.5,0.6-3.3-0.5C2217.5,103.2,2217.8,101.7,2218.8,100.9z M2213.6,107.3c0.6-1.2,2-1.7,3.1-1s1.5,2.1,0.8,3.3 + c-0.6,1.2-2,1.7-3.1,1S2212.9,108.5,2213.6,107.3z M2210.8,114.6c0.3-1.3,1.5-2.1,2.7-1.9c1.2,0.3,1.9,1.6,1.6,2.9 + s-1.5,2.1-2.7,1.9C2211.2,117.2,2210.5,115.9,2210.8,114.6z"/> + <path class="st9" d="M2235.4,88.8c0,0.3,0,0.6,0.1,0.8C2235.4,89.4,2235.4,89.1,2235.4,88.8z"/> + <path class="st9" d="M2353.6,91.5c0.2,1.2,0.5,2.3-0.3,2.4c-0.2,0-0.3,0-0.5,0c-0.1,0.6-0.1,1.1-0.1,1.6c-0.6,4,0.9,8.4,10.9,13.4 + c0.8,0.4,2.8,1.9,3.7,4.3c1.5,2.6,2.5,4.8,2.6,8.8h3c0.4,0,0.8-0.5,1.4-0.5c0.5,0,0.9,0.5,1.3,0.5h2.1c-0.8-12-8.4-20.2-13.2-22.4 + c-5.3-2.5-10.2-7.1-10.4-10.6c-0.2,0.6-0.4,1.2-0.5,1.8C2353.5,90.9,2353.6,91.2,2353.6,91.5z M2375.5,116.8 + c0.3,1.3-0.5,2.5-1.6,2.8c-1.2,0.3-2.4-0.5-2.7-1.8c-0.3-1.3,0.5-2.5,1.6-2.8S2375.2,115.5,2375.5,116.8z M2369.5,108.7 + c1.1-0.6,2.5-0.1,3.1,1c0.6,1.2,0.3,2.6-0.8,3.2s-2.5,0.1-3.1-1C2368,110.7,2368.4,109.3,2369.5,108.7z M2364.1,104 + c0.7-1,2.2-1.2,3.3-0.5c1.1,0.8,1.4,2.2,0.7,3.2c-0.7,1-2.2,1.2-3.3,0.5S2363.4,105,2364.1,104z M2358.4,100c0.7-1,2.1-1.2,3.2-0.4 + c1.1,0.8,1.4,2.2,0.7,3.1c-0.7,1-2.1,1.2-3.2,0.4C2358,102.4,2357.8,101,2358.4,100z M2354.3,95c0.8-0.6,1.8-0.2,2.5,0.8 + c0.7,1,0.8,2.2,0,2.8c-0.8,0.6-2,0.3-2.7-0.7C2353.5,96.9,2353.5,95.6,2354.3,95z"/> + <path class="st8" d="M2257.2,14.5c0-5.9,1.4-13.3,4.6-18.8c1.3,0.3,2.5,0.6,3.4,0.9c-4.6-1.5-15.2-3.6-20.4,5.4 + c-6.7,11.6-1.4,22.2-10.9,25.1c0,0,13.2,6.6,27.2-0.1c-0.8,0.4-1.5,0.7-2.3,1C2257.8,23.7,2257.2,18.9,2257.2,14.5z"/> + <path class="st9" d="M2261.2,26.9c0.1-0.1,0.2-0.1,0.4-0.2C2261.4,26.8,2261.3,26.9,2261.2,26.9z"/> + <path class="st9" d="M2265.3-3.4c-0.9-0.3-2.1-0.6-3.4-0.9c-3.2,5.5-4.6,12.9-4.6,18.8c0,4.4,0.5,9.1,1.6,13.3 + c0.8-0.3,1.5-0.6,2.3-1c0.1-0.1,0.2-0.1,0.4-0.2C2260.4,14.3,2262.2,4.4,2265.3-3.4z"/> + <path class="st8" d="M2353.3,93.9c0.8-0.1,0.5-1.2,0.3-2.4c-0.1-0.3-0.1-0.5-0.2-0.8c-0.3,1-0.5,2-0.6,2.9c0,0.1,0,0.2,0,0.3 + C2353,93.9,2353.2,93.9,2353.3,93.9z"/> + <path class="st10" d="M2395,115.7c-0.3-0.2-0.5-0.5-0.8-0.8C2394.4,115.2,2394.8,115.4,2395,115.7z"/> + <path class="st10" d="M2392.6,113.2c-0.2-0.3-0.5-0.6-0.7-0.9C2392.1,112.6,2392.3,112.9,2392.6,113.2z"/> + <path class="st10" d="M2393.8,114.5c-0.2-0.3-0.5-0.5-0.7-0.8C2393.3,114,2393.5,114.2,2393.8,114.5z"/> + <path class="st10" d="M2390.4,110.2c-0.3-0.5-0.7-1.1-1-1.7C2389.8,109.1,2390,109.7,2390.4,110.2z"/> + <path class="st10" d="M2391.4,111.8c-0.2-0.3-0.5-0.7-0.7-1C2391,111.1,2391.2,111.4,2391.4,111.8z"/> + <path class="st10" d="M2396.2,116.7c-0.3-0.2-0.6-0.5-0.9-0.8C2395.6,116.2,2395.9,116.5,2396.2,116.7z"/> + <path class="st10" d="M2265.4-3.6c0,0.1-0.1,0.1-0.1,0.2C2265.3-3.5,2265.3-3.5,2265.4-3.6z"/> + <path class="st10" d="M2266,69.5c0.2-0.2,0.4-0.4,0.6-0.5c-0.6-0.4-2.6-1.9-1.8-5.3c0,0,0.5,3.4,3.9,3.8c0.4-0.2,0.8-0.5,1.3-0.7 + h0.1c0.4-0.2,0.8-0.3,1.2-0.5c0.1,0,0.1-0.1,0.2-0.1c0.4-0.1,0.8-0.2,1.2-0.3c0.1,0,0.2-0.1,0.3-0.1c0.5-0.1,1-0.2,1.5-0.2 + s1-0.1,1.5,0c0.2,0,0.3,0,0.5,0c0.4,0,0.7,0,1.1,0.1c0.2,0,0.3,0,0.5,0.1c0.4,0.1,0.7,0.1,1.1,0.2c0.1,0,0.3,0.1,0.4,0.1 + c0.4,0.1,0.9,0.3,1.3,0.4h0.1c1,0.4,1.9,0.9,2.7,1.4c0,0,0.1,0,0.1,0.1c0.4,0.3,0.7,0.5,1.1,0.8l0.1,0.1c0.4,0.3,0.7,0.7,1,1 + c1.6-0.7,6.9-2.6,12.1,0c0.3-0.4,0.7-0.7,1-1c0.1-0.1,0.2-0.2,0.3-0.3c0.3-0.2,0.5-0.4,0.8-0.6c0.1-0.1,0.3-0.2,0.4-0.3 + c0.3-0.2,0.6-0.4,0.9-0.5c0.1-0.1,0.3-0.4,0.4-0.4c0.4-0.2,0.9,0.2,1.3-0.8c0.5,0,0.9-0.1,1.4-0.2c0.1,0,0.3,0,0.4,0 + c0.3-0.1,0.7-0.1,1.1-0.1c0.2,0,0.3,0,0.5,0c0.4,0,0.7,0,1.1-0.1c0.2,0,0.4,0,0.6,0c0.5,0,0.7,0.2,1.7,0.3V66h-0.2 + c0.5,0,1,0,1.4,0.1c0.1,0,0.1,0,0.2,0c0.4,0.1,0.8,0.2,1.2,0.3l0.1,0.1c0.4,0.1,0.8,0.6,1.2,0.6s0.8,0.3,1.2,0.5 + c3.3-0.5,3.8-3.8,3.8-3.8c0.7,3.3-1.1,4.8-1.7,5.3c0.1,0.1,0.2,0.2,0.3,0.3c0.1,0.1,0.2,0.2,0.4,0.3c0.8,0,1.4-0.1,2-0.4 + c1.1-2.4,2.3-7-2.8-9.6c0,0-8.3-4-18.9,0.2c0,0,0.4-0.8,1.6-1.8c5.4-3.1,12.2-3.7,17.8-1.4c0,0.3,0,0.6-0.1,1 + c0.5-4.2,0.5-14.3-9.7-25.3c-10.5-11.6-10.3-19.1-10.2-19.7c-0.1-0.8-1.5-19.4,3.3-24.8c0,0-4.2,10.8,3.2,22.5c0,0-1.2,0.6-3.2,1.3 + c3.9-1.4,10.3-4.5,14-10.7c1.4-2.3,2.6-4.7,3.4-7c-3.2,0.5-7.2-0.1-7.2-0.1c5.3-0.4,7.5-5.7,8.2-7.7c-0.5-4.3-2.8-8.5-7.9-12.5 + c-10.9-8.6-18.5-4.2-27.9,1.2c-2.3,1.3-5,3.3-7.7,6.1c4.1,0.1,5.2,4.5,5.2,4.5s-2.9-1.6-7.9-1.6c-2.8,3.3-5.4,7.5-7.5,12.7 + c0.3-0.7,0.6-1.4,0.9-2.1c10.2-2.5,15.1,3,15.1,3s-7.5-1.1-13.8,0.4c0.2,0.4,0.8,1.5,1.3,2.9c0.1,0.2,0.2,0.5,0.3,0.8 + c0.3,0.8,0.6,1.7,0.9,2.7c0.2,0.6,0.3,1.2,0.5,1.8c8.3-1.3,13.2,4.2,13.2,4.2c-5.4-0.7-9.4-0.3-12.5,0.6c0,0.7,0,1.5,0,2.2 + c0,0.8-0.1,1.6-0.3,2.4c-0.1,0.4-0.2,0.8-0.3,1.2c-0.3,1.2-0.7,2.3-1.3,3.4c-1.2,2.2-3.1,4.2-5.9,5.9c-0.4,0.2-0.8,0.5-1.3,0.7 + c-0.3,0.1-0.5,0.3-0.8,0.4c0.2,1.8,0.4,3.7,0.7,5.6c2.6,15.3,4.8,22.1,6.5,26.1l-0.7-1.9c3.5-1.5,7.3-2.3,10.8-1.7 + c5.3,1.5,6.9,4.3,6.9,4.3c-5.8-2.8-17-0.7-17-0.7s-7.2,3.4-5.6,10.1C2263.8,69.1,2264.8,69.6,2266,69.5z M2313.9,2 + c-1.4,1.9-3,3.5-4.6,4.8c-4.1-1.8-6.4-6-6.4-6C2307.8,3.5,2312.8,2.3,2313.9,2z M2266.2,32.7c0,0-2.5-8.5,5.8-11.8 + c9.8-3.9,17.2,2.9,17.2,2.9C2271.3,20.8,2266.2,32.7,2266.2,32.7z M2270.1,50.1c0,0-0.8-9.1,10.1-12.3c12.3-3.6,20.2,4,20.2,4 + C2275.9,39.4,2270.1,50.1,2270.1,50.1z"/> + <path class="st10" d="M2397.4,117.7c-0.3-0.2-0.6-0.5-1-0.8C2396.8,117.2,2397.1,117.5,2397.4,117.7z"/> + <path class="st10" d="M2312.8,110c4.4-4.2,5.3-9.8,4.5-14.8c0.2,0,0.5,0.1,0.7,0.1c2.7,0,4.9-2.2,4.9-4.9c0-2.2-1.5-4.1-3.5-4.7 + c-0.3,0.4-0.6,0.8-0.9,1.1c-0.6,0.6-1.2,1.2-1.9,1.7c-0.7,0.5-1.4,0.9-2.2,1.3c-0.8,0.4-1.6,0.7-2.4,0.9c-0.8,0.2-1.7,0.4-2.6,0.4 + c-0.9,0-1.8,0.1-2.7-0.1c-0.9-0.1-1.8-0.3-2.7-0.6c-0.4-0.1-0.8-0.3-1.2-0.5c-0.8-0.3-1.6-0.8-2.3-1.2c-0.7-0.5-1.4-1-2-1.6 + c-2.7-2.7-4.2-6.4-3.7-10.4c0.1-0.4,0.1-0.8,0.2-1.3c0.1-0.3,0.2-0.7,0.3-1c0-0.1,0-0.1,0.1-0.2c0.3-0.8,0.6-1.5,1-2.2 + c-0.9-0.6-3.6-1.8-9.1-0.2c0.2,0.4,0.4,0.8,0.6,1.2c0.2,0.4,0.3,0.8,0.5,1.2v0.1c0.1,0.4,0.2,0.7,0.3,1.1c0,0.1,0,0.2,0.1,0.2 + c0.1,0.5,0.2,0.9,0.2,1.4c0.4,4.4-1.6,8.5-5,11.1c-0.7,0.5-1.4,1-2.2,1.4c-1.5,0.8-3.3,1.3-5.1,1.5c-3.7,0.3-7.1-0.8-9.8-2.8 + c-0.1,0-0.3,0-0.4,0c-2.8,0-5.1,2.3-5.1,5.1s2.3,5.1,5.1,5.1c0.3,0,0.6,0,0.8-0.1c0,1.9,0.4,5.4,2.6,8.9c0.1,2.3,0.3,8.7-0.3,14.7 + h41.7C2311.8,117,2312.4,111.6,2312.8,110z M2283.4,104.8c0,0,8.9,4.1,19.2,0.4C2302.6,105.2,2296.3,115,2283.4,104.8z M2302.8,95 + c-0.1,0.6-0.3,0-0.6,1l-0.1,0.4c-0.1,0.1-0.2,0.5-0.3,0.6c-0.2,0.1-0.5,0.3-0.7,0.4c-0.5,0.2-0.9,0.3-0.9,0.3 + c-5.7,1.1-9.1-1.2-9.1-1.2c5.2,1,9,0.1,9.9-0.3c0.3-0.1,0.7-0.4,0.7-1.2v-0.2c-1.1-0.5-2-0.8-2-0.8c4.5-1.3,4.8,3,4.8,3 + C2304,96,2303.4,95.4,2302.8,95z"/> + <path class="st10" d="M2398.6,118.5c-0.3-0.2-0.7-0.5-1.1-0.7C2397.9,118,2398.2,118.3,2398.6,118.5z"/> + <path class="st10" d="M2380.1,89.6c-0.3-0.3-0.5-0.5-0.8-0.8C2379.6,89.1,2379.8,89.3,2380.1,89.6z"/> + <path class="st10" d="M2264.2,71.3c0,0.1,0.1,0.1,0.1,0.2c0,0,0,0,0,0.1c0-0.1,0.1-0.1,0.1-0.2 + C2264.4,71.4,2264.3,71.3,2264.2,71.3z"/> + <path class="st10" d="M2369.6,82.9c-0.1,0-0.1,0-0.2-0.1C2369.5,82.9,2369.6,82.9,2369.6,82.9z"/> + <path class="st10" d="M2368.5,82.6c-0.1,0-0.1,0-0.2,0C2368.4,82.5,2368.5,82.6,2368.5,82.6z"/> + <path class="st10" d="M2370.8,83.3c-0.1,0-0.1-0.1-0.2-0.1C2370.6,83.3,2370.8,83.3,2370.8,83.3z"/> + <path class="st10" d="M2367.4,82.3h-0.1H2367.4z"/> + <path class="st10" d="M2379,88.5c-0.2-0.2-0.3-0.3-0.5-0.5C2378.6,88.2,2378.8,88.4,2379,88.5z"/> + <path class="st10" d="M2371.9,83.8c-0.1,0-0.2-0.1-0.2-0.1C2371.8,83.7,2371.8,83.8,2371.9,83.8z"/> + <path class="st10" d="M2366.3,82.1C2366.2,82.1,2366.2,82.1,2366.3,82.1C2366.2,82.1,2366.2,82.1,2366.3,82.1z"/> + <path class="st10" d="M2365.1,82L2365.1,82z"/> + <path class="st10" d="M2377.1,86.9c-0.1-0.1-0.3-0.2-0.4-0.3C2376.8,86.7,2376.9,86.8,2377.1,86.9z"/> + <path class="st10" d="M2378,87.7c-0.2-0.1-0.3-0.3-0.5-0.4C2377.8,87.5,2377.9,87.6,2378,87.7z"/> + <path class="st10" d="M2376.1,86.2c-0.1-0.1-0.3-0.2-0.4-0.3C2375.8,86.1,2376,86.1,2376.1,86.2z"/> + <path class="st10" d="M2372.9,84.3c-0.1,0-0.2-0.1-0.3-0.1C2372.8,84.2,2372.9,84.3,2372.9,84.3z"/> + <path class="st10" d="M2374,84.9c-0.1-0.1-0.2-0.1-0.3-0.2C2373.8,84.8,2373.9,84.9,2374,84.9z"/> + <path class="st10" d="M2375.1,85.6c-0.1-0.1-0.2-0.1-0.3-0.2C2374.8,85.4,2374.9,85.5,2375.1,85.6z"/> + <path class="st10" d="M2363.8,113.4c-1-1.6-2.3-3-3.8-4.3c-0.4-0.3-0.7-0.6-1.1-0.9c0,0,0,0-0.1-0.1c-0.4-0.3-0.8-0.6-1.2-0.8 + l-0.1-0.1c-0.4-0.3-0.8-0.5-1.2-0.8c-0.1,0-0.1-0.1-0.2-0.1c-0.5-0.3-1-0.6-1.5-0.9c-8.2-4.8-6.6-24.6,4-23c0,0-4.5,2.9-4.5,6.5 + c0,0.1,0,0.1,0,0.2c0.3-0.8,0.7-1.7,1.1-2.4c1.3-3,4-4.4,8.1-4.7c0.3,0,0.6,0,0.9,0c7.9-1.1,16.8,1.3,21.5,6.5 + c2.2,2.4,3.1,5.7,4,8.7c1.1,3.4,1.9,6.9,3,10.4c1.3,4.1,3.2,8.1,6,11.1c2.6,1.8,4.7,2.5,4.7,2.5c-3.9-3.5-2.3-14.3-0.9-19.1 + c1.4-4.8,0.7-12.3-3.2-20.6c-0.3-0.6-0.5-1.1-0.8-1.6c-4.7-1.3-11.4-1-11.4-1c4.3-3,7.8-2.8,9.4-2.5c0.7,1,1.3,2.1,2,3.4 + c-3.5-7-6.8-9.7-23.2-10.7c-17.6-1.1-20.5,4.4-24,14.1s-5.3,19.4,3.2,24.2c2.8,1.6,6.1,4.5,7.9,6.3c1.7,2.3,2.9,5.4,3.3,8.4h1.5 + C2366.3,119,2365.2,115.7,2363.8,113.4z"/> + <path class="st10" d="M2319.1-11c0,0.2,0,0.4-0.1,0.6C2319.1-10.6,2319.1-10.8,2319.1-11z"/> + <path class="st10" d="M2318.4-7.2c-0.1,0.3-0.2,0.6-0.3,0.9C2318.2-6.6,2318.3-6.9,2318.4-7.2z"/> + <path class="st10" d="M2319.1-14.1c0,0.3,0.1,0.6,0.1,1C2319.2-13.5,2319.2-13.8,2319.1-14.1z"/> + <path class="st10" d="M2318.9-9.1c0,0.2-0.1,0.4-0.1,0.6C2318.8-8.7,2318.8-8.9,2318.9-9.1z"/> + <path class="st10" d="M2318.8-8.1c-0.1,0.2-0.1,0.4-0.2,0.7C2318.6-7.7,2318.6-7.9,2318.8-8.1z"/> + <path class="st10" d="M2319-10c0,0.2-0.1,0.4-0.1,0.6C2319-9.6,2319-9.8,2319-10z"/> + <path class="st10" d="M2272.9-16.3c0.9-1.1,1.8-2,2.7-2.9C2274.8-18.4,2273.8-17.4,2272.9-16.3z"/> + <path class="st10" d="M2319.2-11.9c0,0.2,0,0.4,0,0.7C2319.2-11.5,2319.2-11.7,2319.2-11.9z"/> + <path class="st10" d="M2185.5,86.9c0.1-0.4,0.1-0.8,0.2-1.3C2185.8,86.1,2185.6,86.5,2185.5,86.9z"/> + <path class="st10" d="M2185.8,85.6c0.1-0.4,0.2-0.9,0.3-1.3C2185.9,84.7,2185.8,85.2,2185.8,85.6z"/> + <path class="st10" d="M2202.5,81.8c5.5-7.9,16.7-8.2,25-5.4c0.1,0.1,0.2,0.2,0.4,0.3c6.7,1,10.1,12.9,9.6,17.7 + c-0.5,5.3-11.4,9-15.3,14.8c-0.4,0.6-0.8,0.7-1.1,1.7c-1.8,3-3.3,6-3.5,11h3.4c0.7-11,4.4-15.3,12.9-20c8.5-4.8,6.7-14.4,3.2-24.1 + s-6.4-15.2-24-14.1c-13.4,0.8-18,2.7-21.2,7.2c1.5-0.3,5-0.6,9.4,2.5c0,0-6.7-0.3-11.4,1c-0.3,0.5-0.5,1.1-0.8,1.6 + c-0.2,0.5-0.5,1-0.7,1.5c1.5-0.2,3.8-0.1,6.5,1.2c0,0-4.1,0.5-7.7,1.8c-0.4,1.3-0.8,2.5-1.1,3.8c1.3-0.4,3.2-0.6,5.7,0.2 + c0,0-3.4,0.9-6.3,2.4c-0.6,3.9-0.5,7.2,0.3,9.8c1.4,4.6,2.9,14.7-0.5,18.6C2197.8,108.9,2195.3,92.1,2202.5,81.8z"/> + <path class="st10" d="M2187.8,79c0.2-0.5,0.4-1,0.6-1.5C2188.1,78,2187.9,78.5,2187.8,79z"/> + <path class="st10" d="M2187.2,80.5c0.2-0.5,0.3-1,0.5-1.5C2187.5,79.5,2187.3,80,2187.2,80.5z"/> + <path class="st10" d="M2189.8,74.4c0.7-1.3,1.3-2.5,2-3.5C2191,72,2190.4,73.1,2189.8,74.4z"/> + <path class="st10" d="M2319.2-13c0,0.3,0,0.5,0,0.8C2319.2-12.5,2319.2-12.7,2319.2-13z"/> + <path class="st10" d="M2237.5,94.5c0.5-4.8-2.9-16.7-9.6-17.7c0.1,0,0.1,0.1,0.2,0.1c1,0.3,2,0.9,2.8,1.6c0.2,0.1,0.3,0.3,0.5,0.4 + c0.1,0.1,0.2,0.2,0.3,0.2c0.1,0.1,0.2,0.2,0.2,0.2C2235.8,83.5,2237.9,90.9,2237.5,94.5z"/> + <path class="st10" d="M2217.5,122c0.1-5,1.7-8.2,3.5-11c-0.1,0-0.2,0-0.3,0.1c-1.3,0.8-2.4,1.8-3.4,2.9c-0.7,2.6-1.1,5-1.3,8 + H2217.5z"/> + <path class="st10" d="M2226,76.7c-0.3,0-0.7-0.1-1-0.1C2225.3,76.6,2225.8,76.7,2226,76.7z"/> + <path class="st10" d="M2221,111c0.4-0.6,0.8-1.2,1.1-1.7C2221.8,109.8,2221.4,110.4,2221,111z"/> + <path class="st10" d="M2220.8,111.1c0.1-0.1,0.2-0.1,0.3-0.1c0.4-0.6,0.8-1.2,1.1-1.7c4-5.8,14.8-9.5,15.3-14.8 + c0.4-3.6-1.8-11-5.6-15.1c0.5,0.5,0.9,1.2,1.2,1.9c1.3,2.1,1.9,4.8,2.3,7c0,0.1,0,0.2,0,0.3c0,0,0,0,0,0.1v0.1 + c0,0.3,0.1,0.6,0.1,0.8c0,0.2,0,0.3,0,0.5c0.6,4-0.9,8.4-10.9,13.4c-3.8,1.9-6,5.9-7.3,10.5 + C2218.3,112.9,2219.4,111.9,2220.8,111.1z"/> + <path class="st10" d="M2231.4,78.9c0.1,0.1,0.2,0.2,0.3,0.2C2231.6,79.1,2231.5,79,2231.4,78.9z"/> + <path class="st10" d="M2226,76.7c0.1,0,0.2,0,0.3,0C2226.2,76.7,2226.1,76.7,2226,76.7z"/> + <path class="st10" d="M2228.8,77.3L2228.8,77.3c0.8,0.3,1.5,0.7,2.2,1.2c-0.9-0.7-1.8-1.3-2.8-1.6 + C2228.3,77,2228.5,77.2,2228.8,77.3z"/> + <path class="st10" d="M2227.4,76.9c-0.2,0-0.4-0.1-0.6-0.1C2227,76.9,2227.2,76.9,2227.4,76.9z"/> + <path class="st10" d="M2358.8,108.2C2358.8,108.1,2358.8,108.1,2358.8,108.2C2358.8,108.1,2358.8,108.1,2358.8,108.2z"/> + <path class="st10" d="M2359.9,109.1L2359.9,109.1z"/> + <path class="st10" d="M2357.5,107.3l-0.1-0.1C2357.4,107.2,2357.5,107.2,2357.5,107.3z"/> + <path class="st10" d="M2356.2,106.4c-0.1,0-0.1-0.1-0.2-0.1C2356.1,106.3,2356.1,106.3,2356.2,106.4z"/> + <path class="st10" d="M2364.2,113.5c-0.1-0.1-0.3-0.1-0.3-0.1c1,2.4,2.4,5.6,3.2,8.6h2.7C2368.8,119,2367.3,115.4,2364.2,113.5z"/> + <path class="st10" d="M2359.9,109.1c1.5,1.3,2.8,2.7,3.8,4.3C2362.8,111.8,2361.4,110.4,2359.9,109.1z"/> + <path class="st10" d="M2357.4,107.2c-0.4-0.3-0.8-0.5-1.2-0.8C2356.6,106.6,2357,106.9,2357.4,107.2z"/> + <path class="st10" d="M2359.9,109.1c-0.4-0.3-0.7-0.6-1.1-0.9C2359.2,108.5,2359.5,108.8,2359.9,109.1z"/> + <path class="st10" d="M2356,106.2c-0.5-0.3-1-0.6-1.5-0.9C2355,105.6,2355.5,105.9,2356,106.2z"/> + <path class="st10" d="M2358.8,108.1c-0.4-0.3-0.8-0.6-1.2-0.8C2357.9,107.5,2358.3,107.8,2358.8,108.1z"/> + <path class="st10" d="M2358.5,82.3c-10.6-1.6-12.2,18.3-4,23c0.5,0.3,1,0.6,1.5,0.9c0.1,0,0.1,0.1,0.2,0.1c0.4,0.3,0.8,0.5,1.2,0.8 + l0.1,0.1c0.4,0.3,0.8,0.6,1.2,0.8c0,0,0,0,0.1,0.1c0.4,0.3,0.8,0.6,1.1,0.9c1.5,1.3,2.8,2.7,3.8,4.3c0.1,0,0.2-0.1,0.4,0 + c3.1,2,4.6,5.5,5.7,8.5h0.1c-0.1-4-1.1-6.3-2.6-8.8c-1-2.4-2.9-3.9-3.7-4.3c-9.9-5-11.4-9.4-10.9-13.4c0-0.5,0-1,0.1-1.6 + c-0.9-0.1-2-0.7-2.2-1.7c-0.2-1.2,1-2.4,1.8-2.5c0.6-0.1,0.9,0.3,1.1,1.1c0.2-0.6,0.3-1.2,0.5-1.7c0-0.1,0-0.1,0-0.2 + C2354,85.2,2358.5,82.3,2358.5,82.3z"/> + <path class="st10" d="M2262.3,26.3c-0.3,0.1-0.5,0.3-0.8,0.4C2261.8,26.6,2262.1,26.5,2262.3,26.3z"/> + <path class="st10" d="M2265.2-3.4L2265.2-3.4z"/> + <path class="st10" d="M2269.2,1.3c0.3,0.8,0.6,1.7,0.9,2.7C2269.9,3,2269.6,2.1,2269.2,1.3z"/> + <path class="st10" d="M2271.3,12.8c0,0.8-0.1,1.6-0.3,2.4C2271.2,14.4,2271.3,13.6,2271.3,12.8z"/> + <path class="st10" d="M2261.5,26.7L2261.5,26.7z"/> + <path class="st10" d="M2268.9,0.6c-0.6-1.4-1.1-2.5-1.3-2.9C2267.8-1.9,2268.4-0.9,2268.9,0.6z"/> + <path class="st10" d="M2270.6,5.8c-0.1-0.6-0.3-1.2-0.5-1.8C2270.3,4.6,2270.5,5.2,2270.6,5.8z"/> + <path class="st10" d="M2263.6,25.6c-0.4,0.2-0.8,0.5-1.3,0.7C2262.8,26.1,2263.2,25.9,2263.6,25.6z"/> + <path class="st10" d="M2271.3,12.8c0-0.7,0-1.5,0-2.2C2271.4,11.3,2271.4,12.1,2271.3,12.8z"/> + <path class="st10" d="M2270.8,16.3c-0.3,1.2-0.7,2.3-1.3,3.4C2270.1,18.6,2270.5,17.5,2270.8,16.3z"/> + <path class="st10" d="M2264.5-1.2c0.2-0.7,0.5-1.8,0.8-1.8c-3.1,7-4.9,17.5-3.8,29.9v-0.1c0.3-0.1,0.5-0.3,0.8-0.5 + c0.4-0.2,0.8-0.5,1.3-0.7c2.8-1.7,4.7-3.7,5.9-5.9c0.6-1.1,1-2.3,1.3-3.4c0.1-0.4,0.2-0.8,0.3-1.2c0.1-0.8,0.2-1.6,0.3-2.4 + c0-0.7,0-1.5,0-2.2c-6.3,1.8-8.3,5.6-8.5,5.5c0,0-1.6-7.5,5.2-9.7c0.9-0.3,1.8-0.5,2.7-0.6c-0.1-0.6-0.3-1.2-0.5-1.8 + c-0.3-1-0.6-1.9-0.9-2.7c-0.1-0.3-0.2-0.5-0.3-0.8c-0.6-1.4-1.1-2.4-1.3-2.8C2266.5-2,2265.5-1.6,2264.5-1.2z"/> + <path class="st10" d="M2353.4,90.7c-0.2-0.7-0.5-1.2-1.1-1.1c-0.8,0.1-2,1.3-1.8,2.5c0.2,1,1.3,1.6,2.2,1.7c0-0.1,0-0.2,0-0.3 + C2353,92.7,2353.2,91.7,2353.4,90.7z"/> + <path class="st6" d="M2262.2,78c0-0.4,0-0.8,0.1-1.2C2262.2,77.3,2262.2,77.6,2262.2,78z"/> + <path class="st6" d="M2262.3,76.8c0.1-0.9,0.3-1.7,0.6-2.5C2262.6,75.1,2262.4,75.9,2262.3,76.8z"/> + <path class="st6" d="M2267.1,73.6c-1,1.7-1.6,3.6-1.4,5.7c0.3,3.1,2.2,5.9,4.8,7.5l0.2-12.2C2269.3,74.3,2268.1,74,2267.1,73.6z"/> + <path class="st6" d="M2262.2,78.2c0,0.4,0,0.9,0,1.4c0.1,0.9,0.3,1.7,0.5,2.5c-0.3-0.8-0.4-1.7-0.5-2.5 + C2262.2,79.1,2262.2,78.7,2262.2,78.2z"/> + <path class="st6" d="M2264.3,71.5L2264.3,71.5c-0.1,0.2-0.2,0.3-0.3,0.5C2264.1,71.9,2264.2,71.7,2264.3,71.5z"/> + <path class="st6" d="M2287.9,73.1c0.2,0.4,0.3,0.8,0.5,1.2C2288.3,73.9,2288.1,73.5,2287.9,73.1z"/> + <path class="st6" d="M2287.3,71.9c0.2,0.4,0.4,0.8,0.6,1.2C2287.8,72.7,2287.5,72.3,2287.3,71.9z"/> + <path class="st6" d="M2288.5,74.4c0.1,0.4,0.2,0.7,0.3,1.1C2288.8,75.2,2288.6,74.8,2288.5,74.4z"/> + <path class="st6" d="M2280.9,66.5c1,0.4,1.9,0.9,2.7,1.4C2282.8,67.4,2281.8,66.9,2280.9,66.5z"/> + <path class="st6" d="M2264.4,71.4L2264.4,71.4c0,0-0.1,0.1-0.1,0.2C2264.4,71.5,2264.4,71.4,2264.4,71.4z"/> + <path class="st6" d="M2283.8,68c0.4,0.3,0.7,0.5,1.1,0.8C2284.4,68.6,2284,68.3,2283.8,68z"/> + <path class="st6" d="M2284.9,69c0.4,0.3,0.7,0.7,1,1C2285.6,69.6,2285.2,69.3,2284.9,69z"/> + <path class="st6" d="M2279.5,66.1c0.4,0.1,0.9,0.3,1.3,0.4C2280.4,66.3,2279.9,66.2,2279.5,66.1z"/> + <path class="st6" d="M2276.5,88.2c2.1-0.2,4-1,5.5-2.3c-0.6,0.2-1.3,0.3-2,0.3c-4,0-7.3-3-7.3-6.7c0-2.5,1.5-4.7,3.7-5.9 + c0.3,2.1,2.1,3.7,4.3,3.7c1.9,0,3.5-1.2,4.1-3c-1.7-3.5-5.6-5.8-9.9-5.4c-3.3,0.3-6.1,2.1-7.7,4.7c1,0.4,2.2,0.7,3.6,1l-0.2,12.2 + C2272.2,87.8,2274.3,88.4,2276.5,88.2z"/> + <path class="st6" d="M2278.1,65.8c0.4,0.1,0.7,0.1,1.1,0.2C2278.8,65.9,2278.4,65.8,2278.1,65.8z"/> + <path class="st6" d="M2276,65.6c-0.5,0-1,0-1.5,0s-1,0.1-1.5,0.2c0.5-0.1,1-0.2,1.5-0.2S2275.5,65.6,2276,65.6z"/> + <path class="st6" d="M2270,66.8c-0.4,0.2-0.9,0.4-1.3,0.7C2269.1,67.2,2269.6,67,2270,66.8z"/> + <path class="st6" d="M2288.8,75.8c0.1,0.4,0.2,0.9,0.2,1.4C2289,76.7,2288.9,76.2,2288.8,75.8z"/> + <path class="st6" d="M2271.5,66.2c0.4-0.1,0.8-0.2,1.2-0.3C2272.3,66,2271.9,66.1,2271.5,66.2z"/> + <path class="st6" d="M2276.5,65.6c0.4,0,0.7,0,1.1,0.1C2277.2,65.6,2276.9,65.6,2276.5,65.6z"/> + <path class="st6" d="M2270.1,66.8c0.4-0.2,0.8-0.3,1.2-0.5C2270.9,66.4,2270.5,66.6,2270.1,66.8z"/> + <path class="st6" d="M2266,69.5c0.2-0.2,0.4-0.4,0.6-0.5C2266.4,69.1,2266.2,69.3,2266,69.5z"/> + <path class="st6" d="M2321.3,75.7c0.1,0.4,0.2,0.8,0.2,1.2C2321.5,76.5,2321.4,76.1,2321.3,75.7z"/> + <path class="st6" d="M2319.4,85.7c0.2-0.3,0.4-0.6,0.6-0.9C2319.8,85.1,2319.6,85.4,2319.4,85.7z"/> + <path class="st6" d="M2321.3,75.6c-0.1-0.4-0.2-0.9-0.4-1.3C2321.1,74.7,2321.2,75.2,2321.3,75.6z"/> + <path class="st6" d="M2321.6,77.1c0,0.4,0.1,0.8,0.1,1.2C2321.8,77.9,2321.6,77.5,2321.6,77.1z"/> + <path class="st6" d="M2319.9,72.1L2319.9,72.1c-0.1-0.2-0.3-0.5-0.5-0.7C2319.6,71.6,2319.8,71.8,2319.9,72.1z"/> + <path class="st6" d="M2321.8,78.5c0,0.5,0,0.9-0.1,1.4C2321.8,79.5,2321.8,79,2321.8,78.5z"/> + <path class="st6" d="M2321.6,79.9c-0.1,0.9-0.3,1.7-0.6,2.5C2321.3,81.6,2321.5,80.8,2321.6,79.9z"/> + <path class="st6" d="M2314.2,86.2c2.2-1.6,3.7-4,4-6.7c0.4-3.2-1-6.2-3.3-8.2c-0.1,0-0.3,0-0.4,0.1 + C2314.4,75.2,2314.3,81.8,2314.2,86.2z"/> + <path class="st6" d="M2299.3,68.7c0.3-0.2,0.5-0.4,0.8-0.6C2299.9,68.3,2299.6,68.5,2299.3,68.7z"/> + <path class="st6" d="M2300.5,67.8c0.3-0.2,0.6-0.4,0.9-0.5C2301.1,67.4,2300.8,67.6,2300.5,67.8z"/> + <path class="st6" d="M2298,70c0.3-0.4,0.7-0.7,1-1C2298.6,69.3,2298.3,69.6,2298,70z"/> + <path class="st6" d="M2318.5,86.8c0.3-0.3,0.6-0.7,0.9-1.1C2319.1,86,2318.8,86.4,2318.5,86.8z"/> + <path class="st6" d="M2314.5,89.8c-0.8,0.4-1.6,0.7-2.4,0.9C2312.9,90.4,2313.8,90.1,2314.5,89.8z"/> + <path class="st6" d="M2312.6,66.3c0.4,0.1,0.8,0.3,1.2,0.5C2313.5,66.6,2313.1,66.5,2312.6,66.3z"/> + <path class="st6" d="M2303.2,66.5c0.5-0.2,0.9-0.3,1.4-0.4C2304.1,66.1,2303.6,66.3,2303.2,66.5z"/> + <path class="st6" d="M2295.1,75.5c0.1-0.3,0.2-0.7,0.3-1C2295.3,74.9,2295.2,75.2,2295.1,75.5z"/> + <path class="st6" d="M2299.6,73.5c0.9,2.1,3.2,3.3,5.5,2.7c2-0.5,3.4-2.3,3.6-4.3c2,0.9,3.5,2.6,4.1,4.7c1,4-1.7,8-6,9.1 + c-1.9,0.5-3.7,0.3-5.3-0.4c1.5,1.4,3.5,2.4,5.7,2.7c2.6,0.3,5.1-0.5,7.1-1.9c0.1-4.4,0.2-11.1,0.3-14.8c0.1,0,0.3,0,0.4-0.1 + c-1.5-1.3-3.4-2.2-5.5-2.4C2305.3,68.5,2301.5,70.4,2299.6,73.5z"/> + <path class="st6" d="M2306.6,65.7c0.4,0,0.7-0.1,1.1-0.1C2307.3,65.6,2306.9,65.6,2306.6,65.7z"/> + <path class="st6" d="M2305,65.9c0.3-0.1,0.7-0.1,1.1-0.2C2305.8,65.8,2305.4,65.8,2305,65.9z"/> + <path class="st6" d="M2309.8,65.7c0.5,0.1,1,0.1,1.4,0.2C2310.8,65.8,2310.2,65.7,2309.8,65.7z"/> + <path class="st6" d="M2311.4,66c0.4,0.1,0.8,0.2,1.2,0.3C2312.1,66.2,2311.8,66.1,2311.4,66z"/> + <path class="st6" d="M2316.6,88.5c0.7-0.5,1.3-1.1,1.9-1.7C2317.9,87.4,2317.3,87.9,2316.6,88.5z"/> + <path class="st6" d="M2308.1,65.6c0.5,0,1,0,1.6,0.1C2309.2,65.6,2308.8,65.6,2308.1,65.6z"/> + <path class="st6" d="M2295.4,74.3c0.3-0.8,0.6-1.5,1-2.2C2296,72.8,2295.8,73.6,2295.4,74.3z"/> + <path class="st6" d="M2315.1,67.5c-0.4-0.2-0.8-0.4-1.2-0.6C2314.3,67,2314.8,67.2,2315.1,67.5z"/> + <path class="st6" d="M2317.5,69.2c-0.1-0.1-0.2-0.2-0.3-0.3C2317.3,69,2317.4,69.1,2317.5,69.2z"/> + <path class="st6" d="M2301.8,67.1c0.4-0.2,0.9-0.4,1.3-0.6C2302.8,66.6,2302.2,66.8,2301.8,67.1z"/> + <path class="st11" d="M2280.6,77.3c-2.2,0-4-1.6-4.3-3.7c-2.2,1.2-3.7,3.3-3.7,5.9c0,3.7,3.3,6.7,7.3,6.7c0.7,0,1.4-0.1,2-0.3 + c2.5-2,3.9-5.2,3.6-8.4c-0.1-1.1-0.4-2.2-0.9-3.1C2284.1,76.1,2282.5,77.3,2280.6,77.3z"/> + <path class="st11" d="M2306.8,85.8c4.3-1.1,7-5.1,6-9.1c-0.5-2.2-2.1-3.8-4.1-4.7c-0.1,2-1.5,3.7-3.6,4.3c-2.3,0.6-4.6-0.6-5.5-2.7 + c-0.7,1.1-1.1,2.3-1.3,3.7c-0.4,3.1,0.9,6.2,3.1,8.3C2303,86.1,2304.8,86.3,2306.8,85.8z"/> + <path class="st11" d="M2324.8,70.3c0,0-1.9,2.7-5,1.7c0.4,0.7,0.8,1.4,1.1,2.2C2321.8,74.2,2324,73.7,2324.8,70.3z"/> + <path class="st11" d="M2321.3,75.6L2321.3,75.6z"/> + <path class="st11" d="M2261.6,66.6c0,3.1,1.7,4.3,2.6,4.7c-0.5-1-0.9-1.9-1.1-2.7C2262,67.7,2261.6,66.6,2261.6,66.6z"/> + <path class="st11" d="M2267,88.2C2267,88.2,2267,88.3,2267,88.2C2267,88.3,2267,88.2,2267,88.2z"/> + <path class="st11" d="M2318.8,70.6c0.2,0.2,0.4,0.5,0.6,0.7c0.7-0.3,2.8-1.4,2.7-4.8c0,0-0.6,1.7-2.3,2.5c-0.4,0.9-0.8,1.5-0.8,1.5 + S2318.9,70.6,2318.8,70.6z"/> + <path class="st11" d="M2262.2,78.2c0-0.1,0-0.1,0-0.2C2262.2,78.1,2262.2,78.2,2262.2,78.2z"/> + <path class="st11" d="M2262.3,76.9C2262.3,76.8,2262.3,76.8,2262.3,76.9C2262.3,76.8,2262.3,76.8,2262.3,76.9z"/> + <path class="st11" d="M2321.6,76.9c0,0.1,0,0.1,0,0.2C2321.6,77,2321.6,77,2321.6,76.9z"/> + <path class="st11" d="M2258.9,70.3c0.9,3.5,3.4,3.9,4,4c0.3-0.8,0.6-1.5,1.1-2.3C2260.8,73.1,2258.9,70.3,2258.9,70.3z"/> + <path class="st11" d="M2321.8,78.2c0,0.1,0,0.2,0,0.3C2321.8,78.4,2321.8,78.3,2321.8,78.2z"/> + <path class="st11" d="M2302.8,90c-0.8-0.3-1.6-0.8-2.3-1.2C2301.3,89.3,2302,89.7,2302.8,90z"/> + <path class="st11" d="M2300.6,88.8c-0.7-0.5-1.4-1-2-1.6C2299.2,87.8,2299.8,88.3,2300.6,88.8z"/> + <path class="st11" d="M2288.4,74.3L2288.4,74.3C2288.5,74.4,2288.4,74.3,2288.4,74.3z"/> + <path class="st11" d="M2295.4,74.5c0-0.1,0-0.1,0.1-0.2C2295.4,74.4,2295.4,74.5,2295.4,74.5z"/> + <path class="st11" d="M2294.9,76.8c0.1-0.4,0.1-0.8,0.2-1.3C2295,76,2294.9,76.4,2294.9,76.8z"/> + <path class="st11" d="M2287.9,73.1L2287.9,73.1z"/> + <path class="st11" d="M2271.3,66.3c0.1,0,0.1-0.1,0.2-0.1C2271.5,66.2,2271.4,66.3,2271.3,66.3z"/> + <path class="st11" d="M2303.2,66L2303.2,66z"/> + <path class="st11" d="M2301.4,67.3c0.1-0.1,0.3-0.1,0.4-0.2C2301.8,67.1,2301.6,67.2,2301.4,67.3z"/> + <path class="st11" d="M2300.1,68.1c0.1-0.1,0.3-0.2,0.4-0.3C2300.4,67.9,2300.3,68,2300.1,68.1z"/> + <path class="st11" d="M2299,69c0.1-0.1,0.2-0.2,0.3-0.3C2299.2,68.8,2299.1,68.9,2299,69z"/> + <path class="st11" d="M2304.6,66c0.1,0,0.3-0.1,0.4-0.1C2304.9,65.9,2304.8,66,2304.6,66z"/> + <path class="st11" d="M2311.1,65.9c0.1,0,0.1,0,0.2,0.1C2311.3,65.9,2311.2,65.9,2311.1,65.9z"/> + <path class="st11" d="M2298,70c-5.2-2.6-10.4-0.7-12.1,0c0.5,0.6,1,1.2,1.4,1.9c5.6-1.6,8.3-0.4,9.1,0.2 + C2296.9,71.3,2297.4,70.6,2298,70z"/> + <path class="st11" d="M2307.8,65.6c0.2,0,0.3,0,0.5,0C2308,65.6,2307.8,65.6,2307.8,65.6z"/> + <path class="st11" d="M2306.1,65.7c0.2,0,0.3,0,0.5-0.1C2306.4,65.7,2306.2,65.7,2306.1,65.7z"/> + <path class="st11" d="M2276,65.6c0.2,0,0.3,0,0.5,0C2276.3,65.6,2276.2,65.6,2276,65.6z"/> + <path class="st11" d="M2270,66.8C2270,66.8,2270.1,66.8,2270,66.8C2270.1,66.8,2270,66.8,2270,66.8z"/> + <path class="st11" d="M2312.5,66.3C2312.6,66.3,2312.6,66.3,2312.5,66.3C2312.6,66.3,2312.6,66.3,2312.5,66.3z"/> + <path class="st11" d="M2272.8,65.9c0.1,0,0.2-0.1,0.3-0.1C2272.9,65.9,2272.8,65.9,2272.8,65.9z"/> + <path class="st11" d="M2284.8,68.9l0.1,0.1C2284.8,68.9,2284.8,68.9,2284.8,68.9z"/> + <path class="st11" d="M2264.8,63.7c-0.8,3.4,1.2,4.9,1.8,5.3c0.6-0.6,1.3-1.1,2.1-1.5C2265.3,67,2264.8,63.7,2264.8,63.7z"/> + <path class="st11" d="M2288.8,75.5c0,0.1,0,0.2,0.1,0.2C2288.8,75.7,2288.8,75.6,2288.8,75.5z"/> + <path class="st11" d="M2283.6,68c0,0,0.1,0,0.1,0.1C2283.6,68,2283.6,68,2283.6,68z"/> + <path class="st11" d="M2280.8,66.5L2280.8,66.5z"/> + <path class="st11" d="M2279.1,66c0.1,0,0.3,0.1,0.4,0.1C2279.4,66,2279.2,66,2279.1,66z"/> + <path class="st11" d="M2277.6,65.7c0.2,0,0.3,0,0.5,0.1C2277.9,65.7,2277.8,65.7,2277.6,65.7z"/> + <path class="st11" d="M2266,69.5L2266,69.5c-1.3,0.1-2.2-0.4-2.9-0.9c0.2,0.9,0.6,1.8,1.1,2.7c0.1,0,0.2,0.1,0.2,0.1 + C2264.9,70.7,2265.4,70.1,2266,69.5z"/> + <path class="st11" d="M2317.5,69.2c0.5,0.4,1,0.9,1.4,1.4c0.1,0,0.1,0,0.1,0s0.4-0.6,0.8-1.5c-0.5,0.3-1.2,0.4-2,0.4 + C2317.8,69.4,2317.6,69.3,2317.5,69.2z"/> + <path class="st11" d="M2306.8,91.1c-0.9-0.1-1.8-0.3-2.7-0.6C2304.9,90.8,2305.8,91,2306.8,91.1c0.9,0.1,1.8,0.1,2.7,0.1 + C2308.6,91.2,2307.8,91.2,2306.8,91.1z"/> + <path class="st11" d="M2284.1,88.2c-0.7,0.5-1.4,1-2.2,1.4C2282.8,89.2,2283.4,88.8,2284.1,88.2z"/> + <path class="st11" d="M2276.8,91.1c1.9-0.2,3.6-0.7,5.1-1.5C2280.4,90.4,2278.6,90.9,2276.8,91.1c-3.7,0.3-7.1-0.8-9.8-2.8 + C2269.8,90.3,2273.1,91.4,2276.8,91.1z"/> + <path class="st11" d="M2309.8,65.8L2309.8,65.8z"/> + <path class="st11" d="M2313.9,67L2313.9,67z"/> + <path class="st11" d="M2318.9,63.7c0,0-0.5,3.3-3.8,3.8c0.7,0.4,1.4,0.9,2.1,1.5C2317.8,68.5,2319.8,67,2318.9,63.7z"/> + <path class="st11" d="M2270.4,90l0.1-3.2c-2.6-1.6-4.5-4.4-4.8-7.5c-0.2-2.1,0.3-4,1.4-5.7c-1.3-0.5-2.2-1.2-2.7-2 + c-0.1,0.2-0.2,0.3-0.3,0.5c-0.4,0.7-0.8,1.5-1.1,2.3c-0.3,0.8-0.5,1.6-0.6,2.5V77c-0.1,0.4-0.1,0.8-0.1,1.2c0,0.1,0,0.1,0,0.2 + c0,0.4,0,0.9,0,1.4c0.1,0.9,0.3,1.7,0.5,2.5c0.8,2.4,2.3,4.5,4.2,6.1c0,0,0,0,0.1,0C2268.4,88.4,2269.6,89,2270.4,90z"/> + <path class="st11" d="M2284.9,69l-0.1-0.1c-0.3-0.3-0.7-0.6-1.1-0.8l-0.1-0.1c-0.8-0.6-1.7-1.1-2.7-1.4h-0.1 + c-0.4-0.2-0.8-0.3-1.3-0.4c-0.1,0-0.3-0.1-0.4-0.1c-0.3-0.1-0.7-0.2-1.1-0.2c-0.2,0-0.3-0.1-0.5-0.1c-0.4,0-0.7-0.1-1.1-0.1 + c-0.2,0-0.3,0-0.5,0c-0.5,0-1,0-1.5,0s-1,0.1-1.5,0.2c-0.1,0-0.2,0-0.3,0.1c-0.4,0.1-0.8,0.2-1.2,0.3c-0.1,0-0.1,0.1-0.2,0.1 + c-0.4,0.1-0.8,0.3-1.2,0.5h-0.1c-0.4,0.2-0.9,0.4-1.3,0.7c-0.8,0.4-1.5,0.9-2.1,1.5c-0.2,0.2-0.4,0.4-0.6,0.5 + c-0.6,0.6-1.1,1.2-1.6,1.9c0,0-0.1,0.1-0.1,0.2c0.5,0.8,1.5,1.5,2.7,2c1.6-2.5,4.4-4.4,7.7-4.7c4.3-0.4,8.2,1.9,9.9,5.4 + c1.6,1.2,2.5,3.1,2.5,5.1c0,3.1-2.2,5.7-5.3,6.5c-1.5,1.3-3.4,2.1-5.5,2.3c-2.2,0.2-4.3-0.4-6-1.4l-0.1,3.2c-0.8-1-2-1.6-3.4-1.7 + c2.6,2.1,6.1,3.2,9.8,2.8c1.9-0.2,3.6-0.7,5.1-1.5c0.8-0.4,1.5-0.9,2.2-1.4c3.4-2.6,5.4-6.7,5-11.1c0-0.5-0.1-0.9-0.2-1.4 + c0-0.1,0-0.2-0.1-0.2c-0.1-0.4-0.2-0.8-0.3-1.1v-0.1c-0.1-0.4-0.3-0.8-0.5-1.2c-0.2-0.4-0.4-0.8-0.6-1.2c-0.4-0.7-0.9-1.3-1.4-1.9 + C2285.6,69.6,2285.2,69.3,2284.9,69z"/> + <path class="st11" d="M2314.9,71.3c2.3,2,3.7,5,3.3,8.2c-0.3,2.7-1.8,5.1-4,6.7c0,0.3,0,0.7,0,1c0.9-1.1,2.3-1.8,3.8-1.8 + c0.5,0,1,0.1,1.4,0.2c0.2-0.3,0.4-0.6,0.6-0.9c0.4-0.7,0.8-1.5,1.1-2.3c0.3-0.8,0.5-1.7,0.6-2.5c0.1-0.5,0.1-0.9,0.1-1.4 + c0-0.1,0-0.2,0-0.3c0-0.4,0-0.8-0.1-1.2c0-0.1,0-0.1,0-0.2c-0.1-0.4-0.1-0.8-0.2-1.2c0,0,0,0,0-0.1c-0.1-0.4-0.2-0.9-0.4-1.3 + c-0.3-0.8-0.6-1.5-1.1-2.2c-0.1-0.2-0.3-0.5-0.5-0.7c-0.2-0.3-0.4-0.5-0.6-0.7C2318.4,70.7,2317,71,2314.9,71.3z"/> + <path class="st11" d="M2317.9,85.4c-1.5,0-2.9,0.7-3.8,1.8c0-0.3,0-0.7,0-1c-2,1.4-4.5,2.2-7.1,1.9c-2.2-0.3-4.2-1.3-5.7-2.7 + c-2.1-0.9-3.7-2.6-4.3-4.8c-0.7-2.7,0.3-5.4,2.4-7.2c0,0,0,0.1,0.1,0.1c1.9-3.1,5.7-5.1,9.7-4.6c2.1,0.2,4,1.1,5.5,2.4 + c2.1-0.4,3.6-0.6,4-0.7c-0.4-0.5-0.9-1-1.4-1.4c-0.1-0.1-0.2-0.2-0.3-0.3c-0.6-0.6-1.3-1-2.1-1.4c-0.4-0.2-0.8-0.5-1.2-0.5 + s-0.8-0.4-1.2-0.6l-0.1-0.1c-0.4-0.1-0.8-0.3-1.2-0.4c-0.1,0-0.1,0.1-0.2,0.1c-0.5-0.1-0.9-0.1-1.4-0.1h0.2v-0.2 + c-1-0.1-1.1-0.2-1.7-0.2c-0.2,0-0.4,0-0.5,0c-0.4,0-0.7,0-1.1,0c-0.2,0-0.4,0-0.5,0.1c-0.4,0.1-0.7,0.1-1.1,0.2 + c-0.1,0-0.3-0.2-0.4-0.1c-0.5,0.1-1,0.2-1.4,0.2c-0.5,1-0.9,0.6-1.3,0.8c-0.1,0.1-0.3,0.3-0.4,0.3c-0.3,0.2-0.6,0.4-0.9,0.6 + c-0.1,0.1-0.3,0.2-0.4,0.3c-0.3,0.2-0.6,0.4-0.8,0.7c-0.1,0.1-0.2,0.2-0.3,0.3c-0.4,0.3-0.7,0.7-1,1c-0.6,0.7-1.1,1.4-1.5,2.1 + s-0.7,1.4-1,2.2c0,0.1,0,0.1-0.1,0.2c-0.1,0.3-0.2,0.7-0.3,1c-0.1,0.4-0.2,0.8-0.2,1.3c-0.5,3.9,1,7.7,3.7,10.4 + c0.6,0.6,1.3,1.1,2,1.6c0.7,0.5,1.5,0.9,2.3,1.2c0.4,0.2,0.8,0.3,1.2,0.5c0.9,0.3,1.7,0.5,2.7,0.6c0.9,0.1,1.8,0.1,2.7,0.1 + c0.9-0.1,1.8-0.2,2.6-0.4c0.8-0.2,1.6-0.5,2.4-0.9s1.5-0.8,2.2-1.3c0.7-0.5,1.3-1.1,1.9-1.7c0.3-0.3,0.6-0.7,0.9-1.1 + C2318.9,85.5,2318.4,85.4,2317.9,85.4z"/> + <path class="st11" d="M2282,85.9c3.1-0.8,5.3-3.4,5.3-6.5c0-2-1-3.9-2.5-5.1c0.5,1,0.8,2,0.9,3.1 + C2285.9,80.7,2284.4,83.8,2282,85.9z"/> + <path class="st11" d="M2298.3,77.2c0.2-1.3,0.6-2.6,1.3-3.7c0,0,0-0.1-0.1-0.1c-2.1,1.8-3.1,4.5-2.4,7.2c0.6,2.2,2.2,4,4.3,4.8 + C2299.2,83.4,2297.9,80.3,2298.3,77.2z"/> + <path class="st12" d="M2283.4,104.8c12.8,10.2,19.2,0.4,19.2,0.4C2292.3,108.9,2283.4,104.8,2283.4,104.8z"/> + <path class="st12" d="M2285.8,59.1c0,0-1.6-2.8-6.9-4.3c-3.5-0.6-7.3,0.2-10.8,1.7l0.7,1.9C2268.8,58.4,2279.9,56.4,2285.8,59.1z" + /> + <path class="st12" d="M2317.4,57.5c-0.2,1.3-0.4,2-0.4,2C2317.2,59.1,2317.4,58.3,2317.4,57.5z"/> + <path class="st12" d="M2299.8,57.9c-1.2,1-1.6,1.8-1.6,1.8c10.7-4.2,18.9-0.2,18.9-0.2s0.2-0.7,0.4-2c0-0.3,0.1-0.7,0.1-1 + C2311.9,54.1,2305.1,54.7,2299.8,57.9z"/> + <path class="st12" d="M2185.3,115.3c-0.1,0.2-0.3,0.3-0.4,0.5C2185.1,115.6,2185.2,115.5,2185.3,115.3z"/> + <path class="st12" d="M2226.8,76.8c-0.2,0-0.3-0.1-0.5-0.1C2226.4,76.8,2226.6,76.8,2226.8,76.8z"/> + <path class="st12" d="M2228.8,77.3c-0.4-0.2-0.9-0.3-1.4-0.4C2227.8,77,2228.3,77.2,2228.8,77.3z"/> + <path class="st12" d="M2227.3,76.7c0.2,0,0.4,0,0.6,0.1c-0.1-0.1-0.2-0.2-0.4-0.3c-8.3-2.8-19.5-2.5-25,5.4 + c-7.1,10.3-4.8,27-17.2,33.5c-0.1,0.2-0.3,0.3-0.4,0.5c0,0,9-3.4,13.8-12.5c2.9-6.6,4-13.6,9.3-19c4.2-4.2,10.8-8,17-7.6 + C2225.8,76.5,2226.6,76.5,2227.3,76.7z"/> + <path class="st12" d="M2227.9,76.7c-0.2,0-0.4-0.1-0.6-0.1c0.3,0.1,0.5,0.1,0.8,0.2C2228,76.8,2228,76.8,2227.9,76.7z"/> + <path class="st12" d="M2227.3,76.7c-0.7-0.1-1.5-0.2-2.3,0c0.4,0,0.7,0.1,1,0.1C2226.5,76.7,2226.9,76.6,2227.3,76.7z"/> + <path class="st12" d="M2228.1,76.9c-0.3-0.1-0.5-0.2-0.8-0.2c-0.4,0-0.8,0-1.2,0.1c0.1,0,0.1,0,0.2,0c0.2,0,0.3,0,0.5,0.1 + c0.2,0,0.4,0.1,0.6,0.1c0.5,0.1,1,0.2,1.4,0.4C2228.5,77.2,2228.3,77,2228.1,76.9z"/> + <path class="st12" d="M2393,113.7c-0.1-0.2-0.3-0.3-0.4-0.5C2392.8,113.4,2392.9,113.5,2393,113.7z"/> + <path class="st12" d="M2374.8,85.3c-0.2-0.1-0.5-0.3-0.7-0.4C2374.2,85.1,2374.5,85.2,2374.8,85.3z"/> + <path class="st12" d="M2367.3,82.3c-0.3-0.1-0.7-0.1-1-0.2C2366.6,82.1,2366.9,82.2,2367.3,82.3z"/> + <path class="st12" d="M2366.2,82.1c-0.3-0.1-0.7-0.1-1-0.1C2365.5,82,2365.8,82,2366.2,82.1z"/> + <path class="st12" d="M2390.8,110.7c-0.1-0.2-0.2-0.3-0.4-0.5C2390.5,110.4,2390.6,110.6,2390.8,110.7z"/> + <path class="st12" d="M2375.8,86c-0.2-0.1-0.4-0.3-0.6-0.4C2375.3,85.7,2375.5,85.8,2375.8,86z"/> + <path class="st12" d="M2379.3,88.8c-0.1-0.1-0.2-0.2-0.3-0.3C2379.1,88.6,2379.2,88.7,2379.3,88.8z"/> + <path class="st12" d="M2376.8,86.6c-0.2-0.1-0.4-0.3-0.6-0.4C2376.3,86.4,2376.5,86.5,2376.8,86.6z"/> + <path class="st12" d="M2364,81.9L2364,81.9c0.4,0,0.7,0,1.1,0C2364.8,81.9,2364.4,81.9,2364,81.9z"/> + <path class="st12" d="M2377.6,87.3c-0.2-0.1-0.3-0.3-0.5-0.4C2377.2,87.1,2377.4,87.2,2377.6,87.3z"/> + <path class="st12" d="M2378.5,88.1c-0.1-0.1-0.3-0.2-0.4-0.3C2378.2,87.8,2378.3,87.9,2378.5,88.1z"/> + <path class="st12" d="M2391.9,112.3c-0.1-0.2-0.3-0.4-0.4-0.6C2391.6,112,2391.8,112.1,2391.9,112.3z"/> + <path class="st12" d="M2371.6,83.7c-0.3-0.1-0.6-0.2-0.9-0.4C2371,83.5,2371.3,83.6,2371.6,83.7z"/> + <path class="st12" d="M2369.5,82.9c-0.3-0.1-0.6-0.2-0.9-0.3C2368.8,82.7,2369.1,82.8,2369.5,82.9z"/> + <path class="st12" d="M2398.6,118.5L2398.6,118.5z"/> + <path class="st12" d="M2370.5,83.3c-0.3-0.1-0.6-0.2-0.9-0.3C2369.9,83,2370.2,83.1,2370.5,83.3z"/> + <path class="st12" d="M2373.8,84.7c-0.2-0.1-0.5-0.3-0.8-0.4C2373.2,84.5,2373.5,84.6,2373.8,84.7z"/> + <path class="st12" d="M2394.2,114.9c-0.1-0.1-0.3-0.3-0.4-0.4C2393.9,114.6,2394,114.8,2394.2,114.9z"/> + <path class="st12" d="M2372.8,84.2c-0.3-0.1-0.5-0.3-0.8-0.4C2372.1,83.9,2372.4,84.1,2372.8,84.2z"/> + <path class="st12" d="M2396.4,116.9c-0.1-0.1-0.2-0.1-0.2-0.2C2396.3,116.8,2396.3,116.9,2396.4,116.9z"/> + <path class="st12" d="M2397.5,117.8l-0.1-0.1L2397.5,117.8z"/> + <path class="st12" d="M2395.3,116c-0.1-0.1-0.2-0.2-0.3-0.3C2395.1,115.8,2395.2,115.9,2395.3,116z"/> + <path class="st12" d="M2368.4,82.5c-0.3-0.1-0.6-0.2-1-0.2C2367.8,82.4,2368,82.4,2368.4,82.5z"/> + <path class="st12" d="M2389.5,97.1c-0.9-3-1.9-6.3-4-8.7c-4.7-5.2-13.6-7.6-21.5-6.5c0.4,0,0.7,0,1.1,0c0.3,0,0.7,0.1,1,0.1h0.1 + c0.3,0.1,0.7,0.1,1,0.2h0.1c0.3,0.1,0.6,0.2,1,0.2c0.1,0,0.1,0,0.2,0c0.3,0.1,0.6,0.2,0.9,0.3c0.1,0,0.1,0,0.2,0.1 + c0.3,0.1,0.6,0.2,0.9,0.3c0.1,0,0.1,0.1,0.2,0.1c0.3,0.1,0.6,0.2,0.9,0.4c0.1,0,0.2,0.1,0.2,0.1c0.3,0.1,0.5,0.3,0.8,0.4 + c0.1,0,0.2,0.1,0.3,0.1c0.3,0.1,0.5,0.3,0.8,0.4c0.1,0.1,0.2,0.1,0.3,0.2c0.2,0.1,0.5,0.3,0.7,0.4c0.1,0.1,0.2,0.1,0.3,0.2 + c0.2,0.1,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.2,0.4,0.3c0.2,0.1,0.4,0.3,0.6,0.4c0.1,0.1,0.3,0.2,0.4,0.3c0.2,0.1,0.3,0.3,0.5,0.4 + c0.2,0.1,0.3,0.3,0.5,0.4c0.1,0.1,0.3,0.2,0.4,0.3c0.2,0.2,0.4,0.3,0.5,0.5c0.1,0.1,0.2,0.2,0.3,0.3c0.3,0.3,0.5,0.5,0.8,0.8 + c5.3,5.3,6.4,12.4,9.3,19c0.3,0.6,0.6,1.2,1,1.7c0.1,0.2,0.2,0.3,0.4,0.5c0.2,0.4,0.5,0.7,0.7,1c0.1,0.2,0.3,0.4,0.4,0.6 + c0.2,0.3,0.5,0.6,0.7,0.9c0.1,0.2,0.3,0.3,0.4,0.5c0.2,0.3,0.5,0.6,0.7,0.8c0.1,0.1,0.3,0.3,0.4,0.4c0.3,0.3,0.5,0.5,0.8,0.8 + c0.1,0.1,0.2,0.2,0.3,0.3c0.3,0.3,0.6,0.5,0.9,0.8c0.1,0.1,0.2,0.1,0.2,0.2c0.3,0.3,0.7,0.5,1,0.8l0.1,0.1c0.4,0.3,0.7,0.5,1.1,0.7 + c-2.9-3-4.7-7-6-11.1C2391.4,104,2390.6,100.5,2389.5,97.1z"/> + <path class="st8" d="M2300.5,41.8c0,0-7.9-7.6-20.2-4c-11,3.2-10.1,12.3-10.1,12.3S2275.9,39.4,2300.5,41.8z"/> + <path class="st8" d="M2289.3,23.8c0,0-7.4-6.8-17.2-2.9c-8.3,3.3-5.8,11.8-5.8,11.8S2271.3,20.8,2289.3,23.8z"/> + <path class="st8" d="M2271.2,9.3c0,0.4,0.1,0.9,0.1,1.3c3.1-0.9,7.1-1.3,12.5-0.6c0,0-4.9-5.5-13.2-4.2c0,0.1,0,0.1,0,0.2 + C2270.9,7.1,2271.1,8.2,2271.2,9.3z"/> + <path class="st8" d="M2271.3,10.6L2271.3,10.6c0-0.4-0.1-0.9-0.1-1.3C2271.3,9.7,2271.3,10.2,2271.3,10.6z"/> + <path class="st8" d="M2270.8,6c0-0.1,0-0.1,0-0.2C2270.6,5.9,2270.8,6,2270.8,6z"/> + <path class="st8" d="M2270.8,6c0.2,1.1,0.4,2.2,0.6,3.3C2271.1,8.2,2270.9,7.1,2270.8,6z"/> + <path class="st8" d="M2270.8,6c0-0.1,0-0.1,0-0.2c-0.9,0.1-1.7,0.3-2.7,0.6c-6.7,2.1-5.2,9.7-5.2,9.7c0.3,0.1,2.3-3.7,8.5-5.5 + c0-0.4-0.1-0.9-0.1-1.3C2271.1,8.2,2270.9,7.1,2270.8,6z"/> + <path class="st8" d="M2265.4-3.6L2265.4-3.6z"/> + <path class="st8" d="M2267.4-2.7L2267.4-2.7c0.1,0,0.1,0,0.1,0s0.1,0.1,0.1,0.3c6.3-1.5,13.8-0.4,13.8-0.4s-4.9-5.5-15.1-3 + c-0.3,0.7-0.6,1.4-0.9,2.1c0,0,0,0,0,0.1s0,0.1-0.1,0.2C2266.4-3.1,2267.1-2.8,2267.4-2.7z"/> + <path class="st8" d="M2267.4-2.7C2267.4-2.6,2267.5-2.6,2267.4-2.7C2267.5-2.6,2267.4-2.6,2267.4-2.7z"/> + <path class="st8" d="M2265.3-3.4L2265.3-3.4c1.1,0.3,1.8,0.6,2.1,0.7C2267.1-2.8,2266.4-3.1,2265.3-3.4z"/> + <path class="st8" d="M2267.4-2.7L2267.4-2.7z"/> + <path class="st8" d="M2267.5-2.6L2267.5-2.6c0,0,0.1,0.1,0.1,0.3C2267.5-2.5,2267.5-2.6,2267.5-2.6z"/> + <path class="st8" d="M2267.6-2.4c-0.1-0.2-0.1-0.3-0.1-0.3s0,0-0.1,0c-0.3-0.1-1-0.4-2.1-0.7c-0.3,0.7-0.5,1.3-0.8,2 + C2265.5-1.8,2266.5-2.1,2267.6-2.4z"/> + <path class="st8" d="M2275.6-19.3L2275.6-19.3z"/> + <path class="st8" d="M2272.9-16.3L2272.9-16.3z"/> + <path class="st8" d="M2275.6-19.3L2275.6-19.3c-0.9,0.9-1.8,1.9-2.7,2.9c4.9,0,7.9,1.6,7.9,1.6S2279.8-19.2,2275.6-19.3z"/> + <path class="st8" d="M2319.2-12.2c0,0.1,0,0.2,0,0.3C2319.2-12,2319.2-12.1,2319.2-12.2z"/> + <path class="st8" d="M2318.5-7.5c0,0.1,0,0.2-0.1,0.3C2318.4-7.3,2318.5-7.4,2318.5-7.5z"/> + <path class="st8" d="M2319.2-13.1v0.1C2319.2-13.1,2319.2-13.1,2319.2-13.1z"/> + <path class="st8" d="M2318.1-6.3L2318.1-6.3z"/> + <path class="st8" d="M2319.1-10.4c0,0.1,0,0.2,0,0.3C2319.1-10.1,2319.1-10.2,2319.1-10.4z"/> + <path class="st8" d="M2318.9-9.4c0,0.1,0,0.2-0.1,0.3C2318.9-9.2,2318.9-9.3,2318.9-9.4z"/> + <path class="st8" d="M2319.2-11.3c0,0.1,0,0.2,0,0.3C2319.2-11.1,2319.2-11.2,2319.2-11.3z"/> + <path class="st8" d="M2318.8-8.5c0,0.1,0,0.2-0.1,0.3C2318.8-8.3,2318.8-8.4,2318.8-8.5z"/> + <path class="st8" d="M2319.1-14.1L2319.1-14.1z"/> + <path class="st8" d="M2311-6.4c0,0,4,0.6,7.2,0.1c0.1-0.3,0.2-0.6,0.3-0.9c0-0.1,0-0.2,0.1-0.3c0.1-0.2,0.1-0.4,0.2-0.7 + c0-0.1,0.1-0.2,0.1-0.3c0-0.2,0.1-0.4,0.1-0.6c0-0.1,0-0.2,0.1-0.3c0-0.2,0.1-0.4,0.1-0.6c0-0.1,0-0.2,0-0.3c0-0.2,0-0.4,0.1-0.6 + c0-0.1,0-0.2,0-0.3c0-0.2,0-0.4,0-0.7c0-0.1,0-0.2,0-0.3c0-0.3,0-0.5,0-0.8v-0.1c0-0.3,0-0.6-0.1-1 + C2318.5-12.1,2316.2-6.8,2311-6.4z"/> + <path class="st8" d="M2309.3,6.8c1.7-1.3,3.3-2.9,4.6-4.8c-1.2,0.4-6.2,1.5-11-1.2C2302.9,0.7,2305.2,5,2309.3,6.8z"/> + <path class="st12" d="M2297.5,12.4C2297.5,12.5,2297.5,12.5,2297.5,12.4c1.2-0.3,2.3-0.7,3.3-1 + C2298.8,12.1,2297.5,12.4,2297.5,12.4z"/> + <path class="st12" d="M2300.8-12.4c-4.7,5.5-3.3,24-3.3,24.8c0,0,1.3-0.3,3.3-1c1.9-0.7,3.2-1.3,3.2-1.3 + C2296.5-1.6,2300.8-12.4,2300.8-12.4z"/> + <path class="st8" d="M2191.8,70.9L2191.8,70.9z"/> + <path class="st8" d="M2189.8,74.4L2189.8,74.4z"/> + <path class="st8" d="M2201.1,73.4c-4.3-3-7.8-2.8-9.4-2.5c-0.7,1-1.4,2.2-2,3.5C2194.5,73.1,2201.1,73.4,2201.1,73.4z"/> + <path class="st8" d="M2187.8,79.1C2187.8,79,2187.8,79,2187.8,79.1C2187.8,79,2187.8,79,2187.8,79.1z"/> + <path class="st8" d="M2188.3,77.6L2188.3,77.6z"/> + <path class="st8" d="M2187.1,80.5L2187.1,80.5C2187.1,80.5,2187.2,80.5,2187.1,80.5C2187.2,80.5,2187.1,80.5,2187.1,80.5z"/> + <path class="st8" d="M2187.9,77.6L2187.9,77.6c0,0.5-0.2,1-0.4,1.5h0.1c-0.2,0.5-0.3,1-0.5,1.5c3.6-1.3,7.5-1.8,7.5-1.8 + C2191.9,77.4,2189.9,77.3,2187.9,77.6z"/> + <path class="st8" d="M2185.8,85.6L2185.8,85.6z"/> + <path class="st8" d="M2185.5,86.9L2185.5,86.9z"/> + <path class="st8" d="M2186,84.3L2186,84.3z"/> + <path class="st8" d="M2185.9,84.3L2185.9,84.3c0,0.4-0.1,0.9-0.2,1.3h0.2c-0.1,0.4,0,0.9,0,1.3c2-1.5,6-2.4,6-2.4 + C2189.4,83.7,2186.9,83.9,2185.9,84.3z"/> + <path class="st8" d="M2398.4,79.8C2398.4,79.7,2398.4,79.7,2398.4,79.8C2398.4,79.7,2398.4,79.7,2398.4,79.8z"/> + <path class="st8" d="M2387,78.8c0,0,6.7-0.3,11.4,1v-0.1c-0.6-1.3-1.3-2.4-2-3.4C2394.9,76,2391.4,75.7,2387,78.8z"/> + <path class="st11" d="M2299.6,93.9c0,0,0.9,0.3,2,0.8v0.2c0,0.7-0.4,1-0.7,1.2c-0.9,0.4-4.7,1.3-9.9,0.3c0,0,3.4,2.3,9.1,1.2 + c0,0,0.5-0.1,0.9-0.3c0.3-0.1,0.5-0.2,0.7-0.4c0.1-0.1,0.2-0.5,0.3-0.6l0.1-0.4c0.3-1,0.5-0.4,0.6-1c0.6,0.4,1.2,1.1,1.6,1.9 + C2304.4,96.8,2304.2,92.6,2299.6,93.9z"/> + <path class="st8" d="M2374.2,121.5c-0.5,0-1,0.5-1.4,0.5h2.7C2375.1,122,2374.8,121.5,2374.2,121.5z"/> + + <ellipse transform="matrix(0.9755 -0.2201 0.2201 0.9755 32.4092 525.3669)" class="st8" cx="2373.4" cy="117.3" rx="2.2" ry="2.3"/> + <ellipse transform="matrix(0.8773 -0.48 0.48 0.8773 237.796 1151.5271)" class="st8" cx="2370.8" cy="110.7" rx="2.3" ry="2.4"/> + + <ellipse transform="matrix(0.5744 -0.8186 0.8186 0.5744 920.8434 1981.6462)" class="st8" cx="2366.1" cy="105.3" rx="2.3" ry="2.4"/> + + <ellipse transform="matrix(0.5745 -0.8185 0.8185 0.5745 921.3823 1975.3059)" class="st8" cx="2360.5" cy="101.5" rx="2.2" ry="2.4"/> + <path class="st8" d="M2354.2,97.9c0.7,1,1.9,1.3,2.7,0.7c0.8-0.6,0.7-1.8,0-2.8c-0.7-1-1.7-1.4-2.5-0.8 + C2353.5,95.6,2353.5,96.9,2354.2,97.9z"/> + <path class="st8" d="M2235.6,88.8c0-0.1-0.1-0.1-0.1-0.2c-0.1-0.4-0.2-0.7-0.2-1.1c-0.4-0.5-0.9-0.9-1.3-1c-0.8-0.1-1,0.7-1.3,1.9 + c-0.2,1.2-0.3,2.3,0.5,2.5c0.7,0.1,1.8-0.4,2.8-1.3C2234.9,89.4,2235.6,89.1,2235.6,88.8z"/> + <path class="st8" d="M2235.4,89.6C2235.4,89.6,2235.4,89.7,2235.4,89.6C2235.4,89.7,2235.4,89.7,2235.4,89.6 + C2235.4,89.7,2235.4,89.6,2235.4,89.6z"/> + <path class="st8" d="M2235.4,88.7C2235.4,88.7,2235.3,88.7,2235.4,88.7C2235.4,88.8,2235.4,88.7,2235.4,88.7z"/> + <path class="st8" d="M2214.4,122L2214.4,122c0-0.9-0.5-1.8-1.3-2.2c-0.4,0.7-0.8,1.2-1.2,2.2H2214.4z"/> + <path class="st8" d="M2213.1,119.8c-0.3-0.2-0.7-0.3-1-0.3c-1.3,0-2.3,1.5-2.3,2.5h2.1C2212.3,121,2212.8,120.6,2213.1,119.8z"/> + <path class="st8" d="M2212.4,117.4c1.2,0.3,2.4-0.6,2.7-1.9c0.3-1.3-0.5-2.6-1.6-2.9c-1.2-0.3-2.4,0.6-2.7,1.9 + C2210.5,115.9,2211.2,117.2,2212.4,117.4z"/> + <path class="st8" d="M2214.4,110.6c1.1,0.6,2.5,0.2,3.1-1s0.3-2.7-0.8-3.3s-2.5-0.2-3.1,1S2213.3,110,2214.4,110.6z"/> + <path class="st8" d="M2221.5,104.8c1.1-0.8,1.4-2.3,0.7-3.3c-0.7-1-2.2-1.3-3.3-0.5s-1.4,2.3-0.7,3.3 + C2218.9,105.3,2220.4,105.6,2221.5,104.8z"/> + <path class="st8" d="M2227.1,100.6c1.1-0.8,1.4-2.2,0.7-3.2c-0.7-1-2.1-1.2-3.2-0.4c-1.1,0.8-1.4,2.2-0.7,3.2 + C2224.6,101.2,2226,101.4,2227.1,100.6z"/> + <path class="st8" d="M2229.3,95.8c0.8,0.6,2,0.3,2.7-0.8c0.7-1.1,0.6-2.3-0.2-2.9c-0.8-0.6-1.8-0.2-2.5,0.8 + C2228.6,93.9,2228.5,95.2,2229.3,95.8z"/> + <path class="st1" d="M2369.9,122.1L2369.9,122.1c0,0.1,0,0.2,0,0.2C2369.9,122.3,2369.9,122.2,2369.9,122.1z"/> +</g> +</svg> diff --git a/libraries/foundation-6/docs/assets/img/inky-banner-bg-clear.svg b/libraries/foundation-6/docs/assets/img/inky-banner-bg-clear.svg new file mode 100755 index 00000000..d526c775 --- /dev/null +++ b/libraries/foundation-6/docs/assets/img/inky-banner-bg-clear.svg @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 6000 120" style="enable-background:new 0 0 6000 120;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#71B9EA;} + .st1{fill:#1C86AF;} +</style> +<polyline class="st0" points="-5.5,-6.3 6004.5,-6.3 6004.5,117.8 -5.5,117.8 -5.5,-6.3 "/> +<g> + <path class="st1" d="M998.3,98.2c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0 + s-184.2,0-184.2,0s-92.2,19-192.5,0s-184.2,0-184.2,0s-92.2,19-192.5,0s-184.2,0-184.2,0s-4.2,0.9-11.8,2.1V143h1895.7V98.2 + C1190.8,98.2,1098.6,117.2,998.3,98.2z"/> + <path class="st1" d="M6703.8,105.2c-17.4-1.3-35.5-3.5-54-7c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0 + s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0 + c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0v0 + c-3.7,0.7-94.4,18.6-192.9,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0 + c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0s-184.2,0-184.2,0s-92.2,19-192.5,0 + c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0s-92.2,19-192.5,0c-100.3-19-184.2,0-184.2,0V143h753.6 + h753.6h753.6h753.4h0.1H6704v-37.8H6703.8z"/> +</g> +</svg> diff --git a/libraries/foundation-6/docs/assets/img/interchange/large.jpg b/libraries/foundation-6/docs/assets/img/interchange/large.jpg new file mode 100755 index 0000000000000000000000000000000000000000..e933c979bfa4dc506bbc3b147eaa65b25061fa74 GIT binary patch literal 56157 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ð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 RP7kV${{UHW_xrtZ|Jk66?V11p literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/interchange/map-medium.png b/libraries/foundation-6/docs/assets/img/interchange/map-medium.png new file mode 100755 index 0000000000000000000000000000000000000000..2b64f34df857ebd09c34c18e34c5774ba1a9e433 GIT binary patch literal 543557 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⩔Xgpm-m)<9@M^33bWg6w)n^jNE3u-Q>1E_R*?E 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�{!uSSxK-MN`y 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 BiuwQm literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/interchange/map-small.png b/libraries/foundation-6/docs/assets/img/interchange/map-small.png new file mode 100755 index 0000000000000000000000000000000000000000..07841eb5279544a08f12d233dc2548d7e4ee18bb GIT binary patch literal 475516 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 z%0A}?I|D$z9U>yvEIU6lIa0QLAIXND8(A*5;&lUM2o{7^im0>Y4zPjhdsDGp4m!-^ zv{^l`c`Y;Jfk&QZkqqPKvkzj}7MEOjK7=MWHerk~0?6!#>(jcsJr*up$Oc~&JGN|$ z&wcTRIQjS`@xJ%GJuR?1@4YWRd;M49Pe1a9F?-&EXon;Fna_O%J+h<XnycTEz}Y?b zJrMtL-527o|NLXo(AXU70H)V{;Tv)8nJ2`VXPwJ?M&jXz5nZ+KPM}&~y=%voxc-Y@ zjz9eU_W{lqA=cUx*MIqI@q-`V8&_X-RRTj@)O%11d-_{T<eP538NxadAOEvIPJSg7 z>FwU#med>s_C|dA)^~43#61vy|K}eD@D`*fU0=T8#`x$Te*o)Ye8n<O(>OpKDkTX5 zeN=)mkRyJu@v-*>y^4#ScP5%dfAM{CY|=$OoY#u;OF<8|qaT7Thi$r>ifRmUcJ~2T z%fb)kv`Xd|R^kF~P@!BG@#{1IZw~V(Gn@H!&_wM3y}8o}qT!4OkY&oxWZs|Ci?NH` zKpwF=?S0HkKwmLy$a<UnEua@qB+fQ%@$Ynxk0es$Z(-8pBk5lDL-^t0VKeF^O{}Sz zN@}>4R3Lcg%ZcPH(@lPmeqOnA7~i$Iv9LY^Chcx(QchTE-P?7+MYk=2-qzmC*va|z zz)@eC0YZ*}T&X;avGR&>r$!%*(l{8YaJG<4OyHZCGL4+Z83Qh65nNJgj5<nhziSZh z7KrB2+le1P{JnU5>;3V83qKrn<ul{{pWPR0TAzul&wDrXBQN&!zzySoTQrW}aROrW z4&}t%EAEI*d)CEOXI{hMy(aE`_D8XyZFBtYMZX7dogTM8^)+zq&ba2h_XEc9zl=oU z`CTjGn~&ZUTiVvf6{o%<PF{KzZGw()aLR&=8~}vF;&^4o6O|7Rg+;h}OPsOf=hWUJ z@ymYDQ$tlHQ6hVwdqj5YL-iqpMJZ%5xmLSTz%Ju(Fp`5$;O?$?Y}37Q`?EieMtrP( z@VpPP&SoINAeh4-Dm8NTsKgK;UM}zq+`{eJGlc34v{>de<CO4}mGp;K34mF?X?}I> zVGc?xNq#C7vQ925n8%(MVm-#5svy*|rm)kDoFP0X$R1~%7}Uol>F7I-orIU}L+`f$ zsYxo3YX>HZ{*_Icp2$=$vldye%*}c{CM;imOsrV720zuy<Nn8<iu2DnDViJV)83Q@ z`K4M#!S-cZKnLV=ZtP3!S<Wr@Na>quDEp_(y2@VL_oVsxQN>~B=FRctFMTOV;C}zT z?~0}d^xdJc&u`cipZd)8NF`NCWA0G?3?jkRpLJ3kfAr!c;ak0KQ{3^xyW{bnt&VHo z`8L!w7RH!+At2DXsbQpaU=kB%tMME8+dbyM0h4K<*vZ4C%!yaiuTBpfxKa*UGr2f= zVwj80+1z~GnZVm0frttIB!qfnAj`gW>e?Jbp>7AjXbWzu`sIj0A{*e+6oV2ZdL{{n zWe5;=;19P1>NyYKtD1ug(*ku_CI`!B1g_R)>W?7Tq>Hc(=q34A3!#Dqq*<V=Z%0YM z4#YhAXYk}{GOwKC8GtZ1Cf{LsnG!SY$$qcIP)&W^BFZw4T&#S=rq)yLUq+`AVo$&5 z?nwPoMaKPXHhrGJX-7@<48;1qs0{QFB6eF8!vSq>oJr)W=Gd@lJK(b;I{0aBA`+5% zzSLPAFjXGTI`hn^B}hO$T-i$qGn>yLWaX;oQl2NDc#@52JTATXyqJNzn5x<tarRkf zvDb{pLk~Vkd#1%^^n#6&cIKI9rErr?O^tEV@yEmMs)T4}M#PY#LvZtFqU%)+7kM#} zem?wx_hOWAR4U&-Qf)!vo5L9G+PWz=u3s1Do=14v#yL?zS?8U7I>3Go*70nnuvXgu zzxO@#cwBP9d5DYa2(?>*SBT?ccY9}Yb3+3F2u{PynE3a>lH=gWWXI#6dAR98JL$SY zarLs`t}O9AXrdj197YT;Z8+E%>tZ$tFsx7JAx4)X^eqgK;WI}cOdMFoaD_FVvxl-_ zwY^N;y{|!=d8bV);|DZ&Kua>97tUlp?$0Ixy3<rn?{0wNUUU>Dr)_GAwUd_GR@;~5 zY^zTw=x3M?ctd(@@*{IFEo4rX0^kMCmYr395S(UOKlPc+cdtv(`(TH!ZbgKRM~fpG z0G~W>J@}Q9%d!fNE}Adt`sC$w-+9!}^9TsibLRDh&O!lZ7wS77{pR~))6U1!x)cMb zzHraaZjMjh^jB~#0j<oLA=cyG-aYZpxBN}q@bJH<gJbtF5yp@jl;FR37>UsnEANhH z+n-3U7a&Y<uo~ddD~C}I*Z|1;u`Q3rj=nXhHWZ=rJ{V6vcUNrbf0lVkC$cs+qibI> zQX17tEa>zdUEAX?ZvV^Z<`8$)neUB74M#9gNSb)QssgV8<;8>sM(>`EP0}AaN3M?n zUMfos{1LHc{k`$YAAUIg{*K>`zq<V$@i(`<Cq8@6N8_<|cc*&iVdY<mIJq3DSyf4X zRF#+TgW3W=s<~9*?M3dM#+grUeI!2h@U?L=F4-<x_FBA*Q~^HlO$)fyDU1iZY657? zsl&KxE`dRapxN3pgd4UJKq~J^<(6RhL|AtYaaDL{aIPD~q?-EHV3g;3%~xZ)p!puE z9BaqU@f76a<b=Q=bOnDGqKcA>`cFMZo-Hy&>`VG%RDEM~CHmF5nL44<2>p6|*zRnS zbZKbThqQA#Yw47ePKecOx5Pt4M%=h*OB}y^DSERm0_cbRlzs3}ztduP@lEM_0TKtn zs*=B4Bn3Tq&Dqo0oAhY+f5HW2;%$6&ztSIY84^jyO8biL?ru~e+T)F{yEKkDdKr6D zC9VML(!QgFg8}9F93*{v<DUC|8k;t(iz<TRG_t>3bk6B8R^A*Nwro$5$sFjs?MiLq zUAEI^WNTqfew&i*mPU$OR6}_+{p$3<OLBO#)l3taKODL;IJxr>7aBaG9i3VQx>|d~ zlt?q)$*vou?YP_Ogd^qx)9<Y!NjbfZs6VU&1ZFv<mg&Ukgv&M^o!dINyMk4dFtrOX zB6uvqz#?0ZbaTpwWq41ZU}(xJIEJb;$Qg7K-2vb<YEQBV&q2qG*~m7Z+G8HQE>z|c zT?x*x?r$`rGxD2BwT?PY)Pma*Q3O?!Q<4e5;YOT!w+me0Z$+xp={VEwU2MAL=oc0u zimfNKtUz(c&K<F<bw@M-c4r_S%0rz%&hDPhb_~`w<ECbAB0LjBgW9%z2Sf${3MX_3 zE9?pSO3>JhE1YfHw<n{o?KnJdnKhHKKnIImNBzT5Hk>1{sNKTz>gBfX-W}!DwNX-D zh3?=G1TYi8Ao<~?4RQ)v&^x>A;`8H+U;AbpjpePtcgYb8(I-AKA*gf+A#dt$>amkD zHBggFJHX+_ek;f5O%9=;c$_h9#TTT+_Mt}}kDosDSeg%lVg14GZo{J8jw6vh5y|w& zf8Zn4jpvitAK)gjm)kBl%)BX6xa~IhfZPa0;(LbMm@^tfDbgcq5&GHF;U{KXjM0{H z_2h(J&NN}L1^WGPlL%BDQV$I1Rm<H=v&ZMNH7ib0ug384ycdV=ijG}BNxcEkn^&RH zlJh+C&Z%wfXHM!$M~<%=^I(^Kr5;#A=WGpYM7?*{ntx}LoMORqmOJ4}%+}6467nuM zt7}__V_q%c$jgwR@J`c#z2URfsDXGuWy+;7&gK)8dk}Ul+Q#g|LM?TvZ(M&@TyxU9 z&CYzvjqa|t_`+jff@8TMdi$;cL{#JFH{!YB4e_sAz7~(3^FBb>SX_4En*h=SfXkBT z8Q2q>Cf3LCO(#)rz`_JTlu)}RfV?VcOqv6D=jh%O%Vr;k*Mh3p-L*5;kFAMwXS^ZR z$sjTBJoP<zhrk8^JxVM@W7Xz0M1%ZU{Nr1`6!UAEdG8?JHZ=OojRmtZo*6Wz>to#+ zO|Pv-0O6X*&@}j+@pRWyv3p=uTyyLvsH^(hxPQWH#MSp)6<->;K2BMDDS;*`q7DG9 z&*VI<!AKrX$8iZ)f`@`3b>oS0`NXz6@k9K<xcZC_;I9?;RYYSOLp^B*>JDYa9Pt^? zDmcH5_(tB@g)iw6+_v#|K4Fk`*=C<BX&XVhmgD52E<J=8biG#)Zcv}gSq`J^GUDHs z-Q9@NnZq<HJ3m}wP6dH)Kl?)`hng<jz|E<`m>G4H8dewz#F4{6$Y+!c{W_&IzthJH zwbnL5yMgKSnKX3ntOi1C&%%w@ZFp;#A5F7nLDvAQ&Nt|c_7C=VHpxJcE4nYypM@Hk zIax>^J<YQVM###Qt6@?sN5YX8o$c-MV}R(a#+u|N(wshH`L37D!_W`PE&|~8<B`W` zixnjt-l>PcS)JYyXxJb$FpuBc*R6{?e|#V9$z{D{>SUC-8@_dGG|y^EVa{u-Yj~c$ zv|r``OdSqpeT?-GOdduzjca01B_>#A&Sxs~+x6+pmR7pxv$WJ9o!stHXP9Slxk-v% zO}~U5I4r<BwH_`&ITb}({Bwfe&E}#}naKh5v?~WA2lqYfya~*9;go+D8-lvH<(y0# z@oB0*MY(ZVlIQYnW8r9IRs&!Zh?*=}u<7q?UawD0J}dWCFAp0r)_5LW(-y>@a*TaS zV&kSOan_w!2OPQv^!u_&&{c(qv<%{3$tm5)KASOckuxj+H(HtjGiIWPSp_)OQabtj zrGTt@hTLSYWdTwv+@J0E0JUy<O6Wn4ZYHPW22Rnda8u*PwQ$}XXdna$F38fw3*h>0 zk7rgs7pEL|G-6L2dP8h<8KkrN>8u{zQd!=(+VdO$3{&h0atHvaZ&nSk3fb(^#zRKM zUgIt}Hm3f)y_5lnb7e6$a-;=RZfX)>-AB#9VCTQQ^X>8Uv#W?4v^D|M+kbdhy#2~I z#PSnQO5Nr7Cm=>!eXn3q@R$}eA3f*>=(bGI>*lu?-AL~@%xFl47ZO>Cu;FqS0I&tg z-Eih};J#Pjjl$$R{-eo$${2M~4=OTFeZ00WrFJ8!KqaAXq!XnDTx2m%<s{1CEl#~+ zUFfgmSzoa0Mq=IeD`{VmFa5>mcplK3(dR9L_z{qUYlb5YxX8|)3GP?q<IQ1$jbvDF z9&Tg;S=I-jw;nG8>_-_wIpu`{e7T9L8o&TNtR8fJAFQX-+<+2i%6s9kKo=&k+liXO z5i{Th!U>cce5l^AYyotco-Y7FQ<KjiP)PTZ3dLkaT#Ihn=QJJ@oA+#wWvmmULH%sw zV~FTCbD)|PorwC6n^gi=tuG#Y?w<HB&2NdLT9$#fIC<j>v;^hgB2*#v0?eQ4d@SC2 z%v;efMPC<3iI}jmS+~b_$|x*0I7mMRT<hSbp3B-Xlmel9yB>;b>;4pQoR5)bH;2dG zB>K%`{d9M?BEH`cONuW6uwgJnXy0lq)${SVu^A9D&}YB_xVdn9ON+}`yZIRHwWE50 zmj(iq<f3+=Azdr}e-~Ar7t80LgohC8HW5emFOIfN8{?6kkH*<cF9nzv;S-p^8ZZ|2 zbnZ-mDxbDBRW~I4%^d2!sdGm>x93Sh3%?Pa`mQwoxCa2(w(%WMOC4kw)N(Lcw|f^H z-LhE3;dqDv8RXD8GQ5Ywww`z77?(xw7+znXaZMQ0a$+S+G)9DQ(T4=X&=W(^mSDs> zyJ32)-?lr|$@yt=2>t3j@%sQOaNE)8B@9E%uPZ{01A{&2{{&oXGrSbuwH(X%RY}%I zaHuVWt`7Bp;YPP*du#Gd>l{}1x(tKj<Bweu|MZpb#TzcY09Sf7aO@4TQkW!lyLN8p zF{MR-en4SIdmDi(Dl95Px1o=>Kl*fB`<@pTjQMKFbLTzx#{)>qjHI}J!-m+jy)EAN z&fg*8;Y>P<V-z%W`;ON1P6xt0rjTf-OBT1pZFk-u|N6Nv$FZnfoO{7VDe~jd%a+F1 zZuojUw|W)N;#H`-BWmhqrr<1wKKFoMgRRFqu6lEP^IPAJPyX}&iKUAc0G|7ClePjW z;>mF=%#c3Xr=c%rnamupv*;to&#%9&$@YtJToBSpCBcbl1dVeihqR{-;!k#;!?&OK zZSBurM7v)x;Ps^f8HNsV6;`@fm$w6`<UEc+1QhMm;IgIyrTQ*7WP%q5vjZY5s4QUy z=vBeczIy=@o)R5*lXFAPs$f{aYdBx{87bg{9vsY>&6^(JBXQdJEho<q#dA?-5cIAG zM9pT?sRRgD^JCohZMZ|L1UOd1v4w{0OMWE>9IwpstN{4V;u`cBRf*wb1SfG;|F{_N z?L-w!nYsX^;Cc+{G9i-H+Z_>91DXZc)_IsR&=^GISr`iu_doIUO1vKwCl@ed^n<R# zPJl?>{=@qK8Mrb79MWt=Sj2|M0_6GU*C%dK34TN^uNRS1`<^bWf9I2@6qhxX@!Xo# zEGEDKU_sE}!jc1g^s;416j_f2`lb!*IjHbHz<_R*y0Ls$>@R?_^S5r@lJs(yAAM9D z4<}(S+^Mg9^G19#elO-NT%3SNhAU&+0bjT@Q`DyJqMQ!jD*)CiTw-fo>IsKB2uJ_4 zlaG%&xY85Mm88PJ;_rp~ojC8fz8e_a9fNsT|K?W!*d|q4c+1a~GSy3uGTfxhDci#d zdv;1nn)(^Jj*&eHfRwNyIflByvyU<D$mC;YWX$BI6q+gG=lV=@7(L;foGPAIr&qwM zQKqU4_yAKttiO;=37z)>J=5mmzKWSM33@%y;7uxl-uy|>JNZD`EXkhwU#_(PS+IHF zddcSZ_aX0bLoSWwCAVdiBcSfw%iN<|H1yNpjB}0C<|UJJLgNi^PU3V}tjXW%@xn+% z1>uEjnVa5+^MqtbQTb5cVBEL*!8oSjG^7`d85~)IVe|nu|8C7c#}CfG6@Xce1O2t} zx3_&L-g)}(#|71IAVOV#tidnttm;L~c>+kV4j*6jNc`jde;+q@-4m~^JR^>)KQ8+7 zdZW1-ODpO)0*z>8uWzX)6f|^dXWRPt=$-G4e|Y`pncs8c4WGXR(BBc&IWuG77w5#Y zSFJ$Ie^jhm|9E`*C;t%lwWF_2Bd%_|Cf<JX2axK_idg{9&8-CBNnW&o)b!iN&gbHi z1@GaN0`tAe6<R4AVuBiT@J4C^eHcel)&X$+!RoKZ_tyW9M2}{boDhF-+9%@lrDw-I zD{qg#d-yH*xjr*KvHIiD+qx@0aOq#g{p;_GZ?F4o{Nb7Z2R-RpeEH_ZicOp1)LV~_ zP48L-=xqcO?~SL{-yNTR^b@gjXhkf}Ju6<j<f?e0{oZ)}va4fW!-de9_W0R`$Kq>G zeU5ededut+HAj3bE<N^LjK8Wmj+V1%|5=coSFXJwbQyOuZ(8bc<A_VYK~z6HC`nKE zf6B5l$?GyGq~~<iuSTL$M(~tbpTlG>O<=Mhu6_5LvCk+?`$4ANIRu$l8ejRJe?|a^ zd5m?2CXR5hUj{91ZfrmjzyXK93)r77f8!OnlEbx^lY(_?i0^Ox)87$PVm4jtVKM`< z_1XMZ7!RAF(Ob7}#lynlxJp0m3+B<0&`b6kjgPN+2lat_pV@ir;~e&YW8$NKSO^ni z4cuY!Lazm~Z+`3B;+bcjO*R)Z>uch|b5AEEd0k?})K%mD3}4kFM48eMc~(PBtbA@= zw6y`ykubjZoma&XFlpR-x^Z3B3qyrdUm7c_Eyhcdg{*Pcuf`z$@@wIoNKk<e(U6!e zCeb$Ot9|5LcP~;(mJa^E{3`xdz40XhuYfI`NDk-{2g!l-Cm&;xd^WBTh;u6(%_??6 zU<G0|1`uDoLSDw0Q}I}A#n@wh4k8sE^x1<Yv6sZq$)L~3GB%y(aalHjc&rJoZ2}CF z51OwH>wY<|WpE`Vj;N~vdW&Kc8<)U0W4s3U79ctgD{L5<iQ_l*{St1uTG?w(z6#1~ zC18NwDI~n+QP)_@<01$QI1wG?0n|D&z(_!yT24k`c`|~dJ_5>W)Fg7?>a=kJZ-Tq> z{U6?qNOlf-Q#Jd5VRKV+Y}&Rnj#@kyRfic|hZD-PdRe&X`#(wk9nU)bR7#!}Pe1io z>;%ld{jF~TI7J+D+zD~x_il-mD^|pbC!L%?!s?aJ;sm`le)oOXLJtdK!MwR~<4w0= zXz*m5a^eYa8wPNTwhmp|jtl^$+*PYq#|_{9Ui`Pe{4kv8#stLWR4EeEP(|*>3u!!B zaIfY9e&*??aPw3LK*)=AYgbXXZLws@kyrwcA#$saBNr`<JMO$I-h9Pn^kZHMc(HlQ z)+lYNPY(KRr?X@a7WL}W*5_k!kLdW&v*d+ZO#SAZ(TDB;NUTDib_}Rv3N}iCB9i4d z8?b{p#JIH$wWWDEo$(yN0MlguRsy&)2QlU_+*kZJq&b{29P)#WiKpnLG)E7aEwdU} z19EyRcmky$4B93pdU(W@l1ZxPlqJwB=SUrMddT(xdUuf(waTO-#HG|m524mwkRe!f zqxHa+HD=3}d$_;tH{T~$&-Ktb2xp6njpgvadB@>^UEif{@^pN{qH><m*_~1W>A+sP zy}VHA2*y<O#sme+;hkSGH#!Mdnuo;Y+09SK(`^sLpI!2oao?)@W4DH9OuQ#IKNXAF zV_W7fprSdky>D0C-F{d6(e#h|=Gfe^l};ieSB3tp^Wv!u5679`I6tmC^%L>gEB+b7 z(f;`SUH=x(4Xwgs1F8r-vt<v@P-aCL0GPC6a3?^&9lmfm>!Bn*dGV*?6L)<qj%_$I zt~=$+s2wy>?&I-}@17Tb)bc;$FV6o&0+S!U>AkUZ`-5@CthXUOz%Q=S3+8@_;^_X) z*tqwRXsP{^sKS+7Kfxd>3dZBH6_3Yfy1o(*p7Q`4+>+SUxi!A<)6Z}yTOFUc@LqIs zE92%zz7k)3<oY<K<%Bq9=_&D-`QM2ve{f~oc)@pK>Ad42ucRm*-Sub`jMc(D&*N}J zkRN;luSExQHuGUG?%xLSesRyUkHqiXaaCM@#^+<{tdnWuuK4<6{|q>7iy3D%F>ZL@ zc=plwiwE8ie{;<Bam1oe#1@QfKl+o)VnN+<bb-&E+#8&M2T#r+Ib8bD)^D!*z-@4h zE0T_I<{9UJN&1@k4M64~tSXysE;VF6*dCP0{Y(6$o~kX#9FS=sJud*bo`2riPI5Tq zdYXY!z$vY(sfmluw}03#pfl5GztVtZM=fQVvYyNb6F@Z;Z7NETxY-X%ziMl0<FeNx zJ)mh>l@AYnO6eL<F<W%x!We)NkyI(5%a)^xi*CsDiF^L})Q6|7&p1*>jX{f%WSn-& ziEww1N-8WPsKN}hS2s2hnz*3}BjiEm2_8@q-58GxEdu~PLR&^hdy_%${P_zAIx#QN zZY7S^J^6x%k(G;7AVpZ3G8|$DnNY8$Ob-Zpjo9eGPVE)HCrLLnRY|0tbzbeZ|97+I zkbu_#>SDqNi=#rF`>CTueHb4$LO?EhrV^+AF&t8J^7Y5VYA?I3Vmj%Vj|w3ASkRq_ zeI#Or0F}sPi_PX!H9+U$swa4_5HQk$qw)1{K|Hm}>Gdf&yZwmVTH&yc5Ds@1+*AFt zx+!Nky?|aeQ~kHfVXB6^oJ-m2(@afHF54<d#oG_uTP{#BH}yI;4AmJ_v#@@ZfbRn8 zt{A=pbp!Jkv5^i?4~a5lCvgL9tBKo5ox<k>Zd7?CZe$v91qKmXy5tBB#5&PO=aPQW z;A_$R7Ptk)Dg2`+b|Wttul(I_dkWM(;s5|Z07*naRAbz7$B*JC4?YSAf%An9-J9R? zrf8hif^H<7^SXw3&wJhzKl;HP7)v~s`n4b5xbJ`OJ7dnQW={V@L{n>tD=xnn{oL=w zT|apM5P~bYx+?CY`wIc4(Q)!AC*$5sE8Q>PXR#^)9d&K5x&rYkz8Cl4wLva&N{pY} zh|4d#JZ`$_yKo9t0A7Iw_y=y7QBAur-b24df4f(|`Soy#Z;ikG<frlJTNd3!>Z!zn z?h4wK3wL8?NhJ~aKtv?V_gRy@xc_LS%ZL1M=rls=8gQm$K(E&<#4(=6#}I&V8mbF@ zM7bMe{ubaVz>UQx@|bHwlkd*F#G{*pI|GIf`QmiLGMw|u3iSQ@ay7Sg$S=k__-%V# zQTwN9)TInLq3gt84gyfWtH#m_=+!}gC4ep&VDY-_eb<JZ6@lsyKhA&ey<Cm<e|zRH z`)`<jay=9?L>_RwMscqwSy%mVoAz>eO?BnFVPti4TMVHuXHJf=`S)|kXe?-nHuMDd zqPFnJ#`|M=^I37i5$DJKtDj)g)yu_L{AlHm;+lnj7ISK5rp67!X;OE;VMZf=kH)5s zwXqx!V8pB8;okVlBVUgXE&M>d<Gl9)GRDwRFO5q&x5v$Qe+{=wvl))jSl_-T&a7FK z4tUnJ2P4xNMN3$p=)>aEy1Aw?ezy0ac*pDy#*r;c5byTIb$5R{u4s5)yyc?HQ46Tx zFhF2{=F?+0diwd$r&3gwO2#mFLp`bp<FTFS30LN|#B~q<YkYU*zr*1HEJ16x@7)?d ze9d>_q{YkASUtG<{<v@VXX100+#QWIfF%rm=QST6&p!Io=xp5{Eent2kh~@h#=K^@ za5G!baqf%f+c(E+8&8KzU5UyCx|M*m!MsgzRQWQ1G$Cj^TH|{UULXH;@$bhuM_h=j z>Ef7E-yA#IFN<4Od_9^f8wn@e9@jtiKjK|;KO4s$@jCq8GCs5GVsXi9;W}@pegHZ8 zT7CDIn+?)dL2vP-H<9c-^Z=@Uu{6!(oN%5EF~M{#xsgMbptm%srll<ZX&=^EgT(~a zRdE_6Xbwl2VeC$<y<l+!siHvC>jP{KO0ovof5wnl<}-H&kPv2U23*qun@msW?L~37 zQd0My5uTNKki2~}CzI67@{w*B>RaZDi*Rr+2W9$c6u<bnFbMSO)5qGd?4*m&+EE>1 zf)LZABN^S^acI3>MmiDI<S-xg!ese97^k8Akk&R^j}4+-9QZkO4znJ6nMZ}RO_ez5 z<v^c4o-_L76YMXw?9174b&z<Rlo8!i+gFplF|~uH^oW<0KI-~Vk13hHo08$xufMP! zcoE>0=*StuV-4Fjj_*0rI`yY+;4Ua|Yi#9Y*bNx)nO<V2m5mp3N<j>V-sV<BX0Rv| zFm*sPL;(<u{_HRYRU^3T$_9e4HG*R|>IOid1`azpfo8x4feJ7<nGNXO0C6!ja^La{ zh%w5dGoO05s!Ygb&A^9gF%u#{WO!T+0c7ADB@SOI;f0UH{i8h;lZdTtOX6Iz0FeRG z#RSFJn?U+3xSidcXjPZcfX#Zg!i}&l0^Ukg6Lj;`$>}<yqYS{J;5vv`Et|P2A7uc^ z5B>4`WB$yhB$k~3)OtYBE5m!PeiM_O(g1(zV;MSl8tp#iq~nu;n}%m{*2=4Dqp7J0 zK!bl_fScCjXW;aFQA-nsU~Mcc)D7UcHaEkmfynA>R6S9-4vQDe$K_EU20w){f9|a4 zz|nXi?~p@KPE6Hzy!Cegy;~3m4?sk7Q=Iq)^!dhUQxV+ztKWJhp)Dbxa26nk==PpU zO#4}gy4oSuBQbmSoWwoQ>w(-3y`avUKR-SI_};vAd$Me=0Dx#9HwM_%0I-O5NJzUz zjOv$z`Ui&@tm%`X5&e<*ml?A|(2R7`d*g|KPeXj_oFf_(fH7U?o+oHG)G<1757E4) zp;e&jg&Vi;D4s?bS2(X-Y|e#n7F`_P1usy>3oF1OIvDX%{}WR<a=%n^`?oAMAl~K7 z&#aCEpCKR8kV16L^@G~RTI$0ms`Yoh*(UX+S!(!W<zT2=F8)s?n8|Ypo0HN8Ils<p zpF7;-JVGTEDGo+(a3|D56Kt#AaM;PZGG~n>CO9|jwsTz7C)=UWU^jkTIp?7piX?`9 zsbk}=FRcey^+X4Hr(az64{^h#cSJqLX4OTwD1-PsyXmR8cjuk)FGpOLyemwMW0={s zK9-eT9QBoTc0{!Ibi|xu^x*+b9q1=sx8=IH<u$h;eZuWmABJCq&~58$i{%BU5u&!9 zdXDl;d(0_YfUYSB9pJj9Yey_7n~T^PuMZqdcO%o@%3)(}O$+O9EH-aiAJ3q3dtB8S z@s*!^5n#u9gtC2U({=F&bN)ZN$@bFg{3IC=ZQg~Ng28C6J?@==%M3SlTleO;?wNm4 z&nD5cL4rnX*tiPr+5C9u>3gDm{9XW2ajfZn7~i?b&5&RSrZ(<a6_*2Ul_n1Zu6sK> z;@P&J#<j=49i{_xL<2sM%u3v>Ev-F^=x!CUW#`uTx6WJRwsUSpx1Bi;)1tF?T5LcE zc}~sZs3@(8XV(5G9_xQ3>idq5f4d*OUes{pwtv6<#<=vz^Qj9H>R^lDAQMCSoERL; zQGr-LV_)Jyj=YL-y(Tx%c_K~IYmTOLtpF**2rtCTgMi?b%-w@j;}>$tIy0cqzkZ~S z>~YkSKT})0H^jcB?_=3D9_)J1V^;mGXt+C386!JplD~a|cI(ZA>1H`{fNkjnVa~NB zP(otV$3e<9H@%MWau3((ENDm42WBkB;PUz-!-#2_)~x0Ej*$Vvqr;d<@8g;w)BB)* zBY<{w{vi*EKFmaV!<*APQh0C5O7s|7+{1biP^TfcTxg^mY}c|smY!`HUsLiRGXc$* z_A1vh+a-tm?Q$|)eO8s{kQraS@gM4e{Q$3%Syw><UbzAl07yA7YcY-(M<u~|UWUG* zKv1Xm8k3a+5_$o>2A0?kVCftsR45Bk!!~S-Q@CMWmlYx!-3nmsWfL(*lI9`VBv_Q| zYjA-|-q{P#)0b|QMkFj6iDA;KohT%Fnw}r<oRGXJWa`A903-~!*yQp!g{mu~ftPP6 zXQ3<J&2pQw@AS7P_5=#}ZW-AXn_ajrenSKcWDO_mW^FzHfA-!y$kOCE?5n=-?wRhM zo_l6zXBT^534kDp5D4*rNDvT2Q&Nx+C_@pV2+J_32p`m8o0Lc^Xo~-cq#d^8upuJM zpiPG*1?eyqpaf8`7-1R^&J}<K7Q4Xi>@ho6Pv7_H-!JQ{*I&PRea*~5U|?#d-}_#D zb!25_Wo2b$Woafc!nW&eghcDix5j}FYP4NyyhCuMNZY2sz6sN~y*Ps@!(e*o@yAj> z{)yYjyN*Uio7YZ!kY2iQo*dwxmHZaY#W$*(k~+94?V*bo(xuCnI0)kHU~Y+lM+9$~ z-`Vj|`l~x##O~{%OP7MLZL^a1YD=}dZf$k2McM<-G&KmR3Ans({UQfYWS$$qA)Yj0 zc*|Qj03<>{gq{{;xCwIu+xZ3rX45agfLAbC(SGd0rAN}GM;?Q@Z6NG&0L_fN(ogRy z3j%ZjZ1at$V|b+4WWm$NB&!{n+NkSnp-v%`YqNcGeTD;z!+3B*8)hjM1042;H{#hJ zYU=ZpAf|Q)s$_?O#S~>Pb2{AH?l32h^l`X~1aa7q33Y627+XtDu+tA~XahI+gJi?> zWeR3K2b{+{hJnjtY|@#6uN38k!bAW~M<aKG(DGMIU?L>`6rq{U88_MUL#r&g><;XT z6>t?)#|LuV%sbIFmZse4!t*A+dYv#8?)Bo}J4-MqOxPbAjAQ0b7BPI3mpMtxPrKiV zQ>_mujlK|f3eRe(^0=|4!v?m4Np5>is8t6B1p?b3II~<*v5wH%gP=J;r9;D*GGTJ_ z^uPODde5m3q&J><1mSOs3m-<(Gq1dmKJmH#H@#u#sr07HxXgpr7eLIjFX8Zi{9*{^ z9SD>!py~Y1i62Cm9!7YcPHPCN4;@1rOy6#?s9b~}y)^qgmnK|h{2?(Cp1<`%dTRV_ z<QYlxb2I6c8{bH0CQgD=Cx7T_`DUa$H8=`xJJKr)uOM(U1}>aq?2NIvJ|1-R58n0< z(;Lq|9%e!Efan#{`#p(C#))(R?dlJ3HSakF3iP-6J?YiC*V3<k@>kQJddv5-5L`~r zEIggw`^XRDM|&)Fa2@i>#$0;)*pq2u_`PVHCm2g;u~%PaL4BHoZ&`hC1v}o&j!DiQ zbcgUbie2z6F2i_s^11ZmPkeyB<iPOki?PlcA9yG_wjKVov^tAP2)4YZ9>Mm$4RfDK z+=+cxx-@Z?@o}5-y}Y75{nE(aNtaGO4h|(W+9gr#6>K*Bz0FwUhM$D92XL5o(jb8t z+uDeW6KUK&n?X^MFPP~~523JFmk<dS^(_^Et7xVnOUy)|XLgTJz=l#nL0)q<>04X% z@I}w~)T5C~3;BsHGmU(7d@u`}K`O+@IR|k<0sq0Ddspz_9(D>cEulGuhO_2ZzF>xo zr&t&;Msp4E23mL56)r}+=yvRS0m?Ld%%r9krd1R&Se@iuu&Pgd*9U!cVhgy*+#R(T zDf~)lRfwqagKyIbQh?I@vX<__W5$5}ZojBdpey36$pf_Af9hxmyb`B^t^%*V8?{w( zLVA_0d$pkR2muP7iwFs(m7o<obW7I91U`UkmVUH|ooH_rmdo}?9@cqsK7~kl4UG|^ zT;z4|$}}dJ<h&Q%Lqm4A!i{xl&ae^;5e*Ub=`w7E_-hEgUhf+hJOG1(T!Co@Az9B1 z!X&W>V}9bHDY%7H4xagnVs{0H@)Q%%73_dL_=a+WvOJvDmd@$N5E#7`E^C8xJ2Y)j z1MJp>bsMNAT%{Q|#qCK<Z3tC8aeEloMj;d;jAAz8R{km)JMp#6q_BZ7Z6h{TSj|)J z7F$yKF4ZMe9OOZJx{Bs`47X1SL2(U7`g(3?R2=Pr$su&g<<=2=JD73WIrUvhlFU~w z5?rOLo8)Q@1lDc5Z+N?s_^~Yhlbrg^&pS+}(OP@p40@m+x+rsvTb&eqOIo!b!RW}l zw9M&r@-6ed)s6=av>9z&6rlESdy|Vcm{@12U0SjqN4omi-u4ie*v`SeuykYg5_U~# zlUY}x@kFD-q^*Fg35(l=P8<qskq-QBw=Jh0gx$_A4&K4Y6?pAS6{T(^D)9EQz1~CG z>(JE}X~$WBZ7z4GS8uncM^CLI7_f{AJV&v6ejrNoPJK9oi&kvYPi^?+rQ`V9nKUYF zM_fmT_X4^NnY+uKiwQKO$X3t*6J>>9n<NMxrop-e4IaWT-I490^Si(;?N?a!;LUy- z+Q5)yQfMp)DZ8{$>U7Mg6?YOxK8Xqa5GbIOJQk&I^XYBE19%Pd25>KpOfBG#yXSa% zc<ABuvH3qrbFbV^zxso}%vLhC|MbJy(24Y=#oxoO|GD&+-t-san$s<K&KhIj`L(Zd z2<>~pM>_|>mePw{Ch>h2|0<-(O^+=8ME@}5=o+vK#I9}O<pAOD^4L?10R#^gkYAtr zYWnj}{up$@4U;QZ(-)Thb$aWupJO+MIv6WgW?xB<Veadevtbi^&iU=Hrgy#ZFQmuM zy#>K!5l=LXe{kqRG1EEPIV0>WB>qW+??-TF){hs6RknuZd205KVcOH)4V)xnbfxFk z{#E*m=Rcg@|Bk<mD=^&nEwCNUAaEq~u^qhz?|5PIO8TzuH^EskkK*6V=F9lp<-jkd zMaMCpn1)}>%-u{km;MlY;lBYrv3-qjtL)vyg37V)?#c!{=J~~cn%>p(;aD7bU~r&) zG`;&xKb}q;A4|(@X%}}_8}!4v2MTRdj7q=n4AO;7b{FC{zJD*;Gx8efN6jUq6arsK zC$+LH!c+~HXL!cYXZsk}r*C0*tinRtYhBZwb>D4_<wvuc3J4l6giazKJ#e`KPgc-% z?3G~t+)sH#JHo}mGQN>Pbw(Lqr8x81@-oiM6{ZL%0@SKLdimi1O25c)1$JmwEvR*n zX9Rx$UoOt&I;NJV2Ok8!9zA8mF4#^P!ejgGGtHrP4xFjnlAj(v<gzjkmQ}UF>ETQJ z_DCu2?K^j(WB&d2X!bX?m5ov3U_)jNO_4}<EAu+`n|fln#J0Y-shvb9byc5NnRE=y z&dsL_to|>e864yEzxKXG*tI1wkoi<q@8PY7*_IrFJ!_*o%%t%UWuIZoQDMi_x(%B} zm<?|S<ni#?D+pHbl^C>|JX|1890=gOg0a`5YUjI3K201BVvDZ6-KO0yIAC?#q+@;$ zu6gU5!nwKBZfiR%9x~LKQ6So-Ntl#v-ic@X76vuNgd%M1XqARA^54dPX865CQ1n2@ zESlQc)w%QvPW7*$36}fCghHL02#{;oQr*J*U<QZbbGVFI@ybxzpc8s!!ws~!8{}6& zjz69iNTVFus}^FNayGe=HK&`!_IW-8?saUyw&-h53TxlBMj6(($@e;cmZRO4g6t|9 z+*#~{H}LDoo;w;{wA>45&*pEXRsPn2T{k>)oJN|R_sUtOXKdK!(3UOCEO6-thak9$ zX#;gz2lb6|KrPm^fiNZx>QP9j2Y;z$mwtA?si(@%=Ivop^*UaO+dl=o#^Q#06rLB* zpx@@AiJL4!R(N)C<(nS7CyaLDxF2Dl11)R^_Pz=jooIBo5v*=4bfs68y3vxc&*2Hk z1A?xw+S?Ii_-o^~w#1))cpI}`P>O{p1URkh(#-=TYIk>9>yy-{Fn?xP4Naba3ItA4 z3irA$yM-XBeR-K=A}{a7gXy&E6~#R63Z~bsAPT|8yB!F$3C0Eyj~b4!uo0xM9M_G+ zyGqOTmpUv*AxD}fTQK$s+A)F<?{9;n#xzSC>>z2_2#LMr*qhT6=N}CkS5Ue*ewwkv zA*|Uir+090tKEf`Hn7nDGjpFwkDhoUyo2cW>&E64gi3LZaITci|37~IQ_!U5Hf!nA zPd}ah?e&kQHy(S6clbJ;y~*O{3%D!8zJjpA4#*!bTuGNF9-;ttirB&W`i(EA9~}Ql z#vaQT2Gym}htlWR+5XbYUqs8t*ukXh<;k1rb6@{7ZLt$vyke(7yF1_|YEoaC{YJVt z{3xCoj?rcoLey>AS8iWTPma7f`fZFG=iW8;v+3i{eggB0sW4eN-h;cu8=t3MwxX?{ z`d*y;R62d`F>FNpLXaF{G5#5b{Q!cvR}fEf&G%<9iFg`;tDg%HI>6WIp$jZv6K>R= z33^)rzE6GQU#CyPb|%Iy(*K*7W<8WXKKJqT%FU-q>w<49y?WzD`s%A+pqEOo2AU4_ zA#F)2+?^1@pmZkf+J1#A|M<^1#C!(6YaL!?uT8h+FpgujUlpkws?MV(vQ_eS7YVoU zEHMN9%~pRN7S&w9MdLD)k>l+89QY-j!mjNrf7V+tBy9_`rUUWbm$gQiPNj@xmpqXK ze6Pd9SFvMX!%lpCX#qaG80HC{0ogC85V1V3K(|g8`tm>LSn(*{9lyd<K=E5a%TRVb z8Ey@jO1emJ$PeWR>wA5B?U2Cy2}mZ6U68;6W5HtIJqY&~0}TzY#Rh)CI){ei?+k9S z24t)Zo)NYHJxq2QP2zO~7=^$d?wG%bpox3QJn@w>TEJ-8mV->3E^&RPgFpc?G<U=s zJlJrJveoKpBc}b9mqi#}MI(0}lLrUwINRFCnSgGiWw?o;=C#KP&u%$8W}E56NnS0r zEX9?RgYcjrM4B%s$X`M8>g5^z;6j_+H72@6glpl?kmovGRU=Y1>i3;>t&(1tJb*Fg zqJd!h)hJG)1=7?*;o4x^O{@8UZL|ypbYw@izStJ5F)0r;Igdx1DeKOb6J?+f-zuPn zTvvcLE<(J`Pn4s}C(T0C{KPE98&hlp$09aqx=RYXMB}YD>W=L3;TE{UniE6tP|K{+ zC`{d6(5)338~^ah+>6iI4JNlu2D=E8S&NN&u@#9#`2j5-QMQ<j_ShG|29q{k+cqc4 zyrti0hVn<i+|`L|AT;#bnB&Y-+bVX9QbrGg)=1|_I@`&~{s`Ua3@(_oExdKRBVC=f zEeH!Z3K*uLquAG$1z?q-@zvI@i?trwDqWIpi^Efxws;LGJ<OjiiIGqVx%RcfmL5kG ze50lO-U+r<{Hh`CXA+)4meQ=jlqMGy^I_ZTO<M>L+DaPl3xboMIMBqyi7m*kdS@CZ zd$%?1*OJFl6^b@C7ueyzWCXfYp>+&?U^&PkL5ER6?Zfe486nt2r@#YjFEALdHvJeE zmAIgoV^<;ilkpXKFd4#uYkJRPKSWzk(LWr%q8-Nu&!&&Belq>H=l(ug%(KCF*mppH zUBz~FhQnuPX;)XeI`vZe^xO+9e6qlMdTb(n<X!(Tz3&hIT6+I8e=eOIIK@(=H+>0D zEE67bqg_`fUrf((P-+-owT2aTckr!<2?6hcQVsLxZ~lMj?ZbbD_Htf<yr)JlrQdwV zhtvP~M?aN5_S`?`1pi?A`rOm$eV6}odh+a(2&OPc@lWH_;?B*?r?1R@Ha&R;A)EFy znD_uE;CpKIHeMlK2B%&de1cot{!03VfBy67CqDB2^e|p4rdF<F_BEdVtM{VuW*hEh z?DhZc`nB|{6UPyrIbXmc^xVi}=|7$LVEVxCzbn0c{KwN++c2g*Q|V9Bq*0U&8{qNG zF%G#t^1k%JKl}^n-6wt&jqnNl5pzz0K{q^n3jA+#k<An7mvBM$-~5}OOmF&kKM~hy zzc~9$`iVFEN9i$qB<~uWv|ztr|I6PLW7RAl@5lWgbhET>pR*W8Fq>zue-rbw9u|?u zxB#RBJ7tv|E<Bw#6a<ur!->B%%+LECD052Jd+=Jvk{qQ3>oZQ;jBZmH<hT5{r1D)o z^f8X2%?vniuj@fU;XHH$LAenqgQ<iu3@>-npizcng!ZzF=i<h?b0EP1jW=oV4w5>? z3tXjWf6GJMiRJcb(#kJ^0e-U0cr?g27499KjjH3#!5^l#F53m$6p=Of56=H>ox;AU za4)^LnghPA@pF%jZ=1XNWfv6UHkgkSv(I?Ti7lHMn7ZRDYcrji(5NyQ#W2`H1BzOB zuL*xI*sQMv2Sy2TEiZ%2Yl}5mSY))Q6*Z0DPxK9?LF$$PGDc(ID-d@h94b7Pa$TwF zG~eK-gSQ(4!ZPsV#UVb-Yq^?EXxiZ6uObKt!(PERx>-_~7d|h(P>ZbqTX3ZSsBhxe z&`hbJ*29FhYm@vLG~ZA_woUSkTi9tT$jJ9;9_`UZl)_hOwYl~V!gScl!lrG&0p0d3 zrAs8s^vB`~cn*r$yDs0DPr+3)4B;*1_|Ec$#~>rO7R08shKay1!piZ!j?e_PLa}j{ z7vC1Z56e<(hge2g{$dhEGuy+?Lw5&0F6p;=kh$MN!#ur#qkj5E-x~RH3E|Qv8*dz} z3|yA=#kMb(1+dsy#M8z)w`#58n{s}o8`^J6XODBxjuZcCCUeLfUSYQr(+qb_N-%}} zzkx=13w!jfEloQ#=<xJ2+BcBV&SG#A`^XNqKOJSZrd5dA`0$$8FmX_B;&;UJSa3JQ zMC)Z;y_7B945o36JE2M6PTKZ^yE<yJ#xbxgX-&PxVqkq8_jQ`g0FkHqU&Ej3C|dV% zXgbVB$gePM73S3*+>vYFI-xr8Ie{y<L~lew(vgoY2-==RYc@K9CzIiE4u?(RR_ulJ zrt@#Wlta%4?67d-n0AI=yz;qp=J?rkYT`1BD$JPLxj12YI(_k_XVOy-|EV;L@7b%j zo=ewmTuG0fd?JmVJQ+YOF5SW(?N`z?R~Pr=VdRNZ52sgdVWM#1O$eBy>8016P1kQ- zMWg&?ZY3P$s_(1mt1o{!eb*!3lLmONw(Yau_(JL%I-M?zU1DN#yBKX6ID78Om(q0( zz{wv*@XPun_PfW?6n8)`YaAM~kv#)rX?}JweeL>l+=4cqE{t+;lkxAN(`|Ub^Vgnd zLAjXTc;U^slEQ8Rv#A$f`bK*G_BVhZK8Cj7F>IMnVTas_|Lt42Eqm_j*V6ehZuH{X za?Omc%^)Z)-r&NB7jQAQM&F;rbHpGA11HmCCmu;BaBa253h4@Md-29|;pJsw^aS{N zHU0YMe=7a<kAFEmdhQbWId8#*6VKiJ8aLbJE8CBcaA}1abjH;Rg4oxu-VQpFp7si| zCuD5=iMOYxPD10=II;W9=eGxnK?3I!P$r<g*M?g@C%p`?!>Bo!Jlyn}-Nj<OGFg%r zNk8`^sAaxB2Nwa}sJ~XIa7N&v!0zwztRNe6kYkB>$ACMXLzoVD6I-xp;v9E3=J7-V zn|I6^EMsD*orPA;7m?M6FoBvVyB>d-XUAn3-_}tN)~)Tohv>?jqB80f2iJ-a@1jK9 zTE<a=V_j2<=rCJH_HLQLgK%gJ$iMA-hl@LN_CRwV9=fmx2^$y)f!9fC3TEjg0H^UX zpbf8fNiU;$)C+@H_b`^))ooVbJxutIa^p@{rvhn3*Nr0Y{=rTy0-P5BSoQ|OukOs| z8AWF?XXs~g$RcpACksni=qWX;S-L~u4F*|K9R6D(bHEG3OW?zk+6Bh_O0g}Y9E6dV zk0PY2fmTQ^ZB*EO2_br%rS^HW<O=Qneiah|FWk`EgLYG9&|dPjSq}~58fB&@u-!d| zJ*>}%4YB=984jR>vdQd(Rj#~>(7KLf5<-48VI8JU^Y10}-kG1&0Hx-50)b2IL-cbU zQ1B79z2I@3g%}pz6qA{O8c}NFSIH32W2=U?2qDtaN-)JV<{7h_(+Er*oIvhP6UW&y zELkZ-T#a#9V+4+m^&+&-2ta#hsoU5WhHYH*CkHvAs(8a&G+CH0bRq0^)Jzge-F^$P z?a<uAlhWRDr_i%So7%D6wLn+-2L-jxVFG}rY?;9#%}Xm8o}3#HL#s4`=0<Y}-x+7{ zOQve09NV|iZs~SO?N3P)>G-jV3C<>m%7ne61J`oE{t7hwFc-ayV%uyv78R2{s8*Aw zkYez&v0Ykk7cUC^nr51VYisO6408Q-H)Eg!{A(|&4SCllHl3JNX-x0!Wp3-Pv6$4R zQQct|yg~a^4=k>;cu-R){x{)i`Cyc!3=eaMg~@lGounQr?{-`wP;FCgrwb$d1zc>i z;L+D=_)P_dO%_3Fc(?GBfLw+UhqoC_bHqnCmtJ&ZYgueu74}!LdEdt1ePe;^v-$R5 zTOT&M-Rx4uB`x&bI%VV&^jv$~ho4_yu!D?`E&}geEPOrG8i7bXw`|aMPu;fzt7Um0 zNgI9LL$S;QR(8PRZs~Renl<pMJ1hilwEew|{V4=k7hZj6zx6o1ga?6N`@_GDGNC*D z^!NWFzJiBX_&|%`zmIlx_OM9frc7yejk5)-?7ZEaoQ}no-5IcE2zPx-Yrb4!E;-A! z*l)ccjwlEG#k(qXIRq)a$XkVN4o$oCcxp&{>ntcrl-yl`A_k=kigVrBxx3-w-@t3i z*M6VArtj@e7f5#m;Bt=eufV}$2<Gx@pIZgvZLb2N0&X7*Ub>ZM51z@Bq=p=n?|NCZ z`rENk7K7%sUAMWdkSQr}=eY4KhJWIw9)!_`={4b~!Dhs5iE5U4_IC-kdlm)CZG_%N zAnp`O6c5-{)yBAOn1eME?tUO!ZU?Yucr$+N3!CEsas}Rk>)p8@{Mru#@=a+%T$Y8% ze(4{)+aCkLNhNu;nA04jVJC@+t2=}{^g3zW$%6qiu#K?Ex6Ee_8Cd&W#&ctUH&-KZ z%Ycp&Os;@rP&+C^&|$n@4kjw5Ru^_n*ZkYKdawvX$Z1D}$9(3O0T06Av^Q4MtF3Sd z|0ZY=%%gCq*~6tun6->(4v10M)m%e1u|~X_Hm1}Ns`XNF4$ZC_IkmkK`atEQmZZTn zEJwyafN*n^LEwQq`%MO`5WgQfWX#KqwAB?RC`=d(VZIPghx@R6@udG&Cn=fe-XX7M zX>QP07ZcVHa;lSHBO7I{VQ<_Hoyx#7o6VmUgv8~i{H>rijoF0e6AHb#BvTBw<7tD* z{4>`Pd?2*mj&<BPp&_P@5bFHq4+7+$I71tYkkZ{Xju3VX?JaN6(5j6!O%4jK9O2wY z*fpKYGt1V7uC09_G=%nZPiH?9xLTFchN{@6FW-iy3rK}sSo&a!9#orUY!=r?0X-j( zA#T{f1s!lqp@%$T!uL*QGE_D31IU8S!md>dYfslO6PMcFITm6a>`HW}apUbD3Ugw! zP-#o&=|PuPlB1*VZC4f5cp(fWc-U?pd#VNOy}eFYJSn6ubK*zA_0(}(6tWOp!rndl zhKe__IdAjeB&H&32&68U5Nk0lf<KYhLs`0OGIZjpL@y%NIgdRu$PW#z?<^0|nzq<C zE~9A<&yHJ7lGJ>2qKs1Kc^@wkRxy_LQEx5MSHoV21e)lus9HxN^Thos!u&Ee<H!3+ zSJklv44Vk4U^U`4NLT9LWEa3aqD>B`8CQZB+@h^~AxI(kBh?A}mIq5Q@9OMc4O(B~ zastB!E1)j$GLM&pc6j(Ua6bFW*V6BN@t4zgkN>sQ10j83^8ZdRZ@iHH?)Uu$T1gf& zoDaBq?H2CI`cgNS^~9NsE*28(?kwW(@76pEP5M$i1Zd);DHyMYQLiDVhB1X3Q80Hw z;(~j3V#k~5K{MBUYf_MfM_YXzZK$0g4O@+I{^^%me&Vwl*%HLhTn!$uRbJisZRVyB zecKdgJ&sjP$P{qZgcdtjhpJ<76HgSjp_56`Ham{wT`CS-00q7%*D4j1<!_D^Ifvki zD;K~u(1|73x0FwDkvHNF`C-`#<1R*b4xm+;shf*71uO7gzBNPhz;6V;JV5Qtbq8D| zFwXWUl-U-4$j6k;%e#PqI0a#OjmaK_!(+gOlFpDku($z#57VB*XMd2g2?L?wHO|}2 zJTRu9IhMF85eBE0X+XOw2C#yq16qPr7zzS!Dy;rfCS*Q}_@)!NgR5wG114Z_TM2OP z2^NJR7Y5hR!s_=|p^>8ZEYrzSP3;M^IzF4e2)mh$WQ-}$YtG@7x)(#(ZI5)iU{lL` z8EyJJbGAZ@_%w)rwRUPl56eW%>ZIbLLM`up!7`ob7ZG^xHCU6kpLtSw|5|fR(wWoL zAOesstQ6FpGol>4I&3nzw`Re6L5en|6YW|h^x8K2;}(<YEI2)Wj01L@3=fqM@2rRU zHEvuRL5RtVDuw0|=!gT8%s>i2nnTEdgtr7hrH^V6<;5P~rk7r`i3}Pp((MxRTjUcL zYInPkDuvbHw`HwB7}Ff0ibFOaQF`%RZnI@$Ly4kv2)9H*OT4hHZYxWlS<6O5i=ZI5 zx;9OEctR&v_0mr1uxx!gp&_q__Pe>9&@}O07+VG569(jf*j<{&eAbEH^f`|Ugl*^n z(_Y51I5$rSzC49ss!(dAA2iOzKwzk<w3xOScLO0+w~M{BNm{E)t8f*C@C@DYMmuT8 zO|e^#<a~$^LkOfn1m>%-O`SobRo$i&#=dSA&mK4=X`rIKCnDEsO3TjQApqyc_{=rr zm!-B`kgqM**j!Qt3H?LAfXp7fK+tb<cx`z4<xi#0Uw<0y>q2@QH*8Oxds~_q;npp* z=2KHs>FRCVCGu~LK6!Y&FZGP9r)dtOuCKA2pdS}z+4=CWmMEY)`>GMBSefbUNCzfA zoc%!M%22^RRx>I4uWEm8M$nIfmcHMeHv-obwu6I4$u`md8Gq%udL8lAvuMazsO4>X zG<`jk^o|RkeeYOPKple*DIog7cY)^WTLE3VcVVwEuh3WCJGSk2&BIFYojZ2Lbiz7x z1$P?ls`x2+P4Bbg%lFOjiXY#LI~hkqP%RblZ5|Ke85EwH!!=Ae%<rpcE3|o%^8s{m zw6mBd)NO%F8TOOyvl5$UyJdY@wUg^CY1Q&}KG5<ObR6m1UK5)t#(X$P<9?*Vzs(Y> zfa5f>3{mE;-5`@VCu8+@>h_l!LFW;J!m#PJ<<u@!?91ou5JNtNod-`0R9-6d-jC3z z<1mE<r>uZBJ&$WF!<~d<P?o|DQ&ufaOjvOEi)ecL(5BpE+fU0;@nUWM)r)pAzKJ$> z7+m&)FQ2{n&8aP8FBd+~mZSpDNw#JCU<#AiCBBMnpV-Yl0zCA9ri+fy6^_ivKb`k` z`0E(&#P>nLB++e5Dhj;{l6z$nh1!sIgiup&Rf}49-OKf{;&!j#L@+Ibv_k&&s@MG1 zE!ixhNK&&ifsmtC#RD#TX&cP9cYuzu*A+T7z1sPfQ{uzNInBN`4gM^--YYwO8U2Mx zLnrR7#IybCRk?13`&=eC%iphEt>Ck~yl?_W#+6t39#n=J8|$n?YaY!oJX9!cDAZ~@ z>9%DN9F3P}PNJAx=;Ee4%ohfj;B-~CjVXazDLputu57{9VOC)5?ivYPWq+z!;4R)C zY>NV`LQqVEG2U{WDED>{S}(NrEdGQ~fv6J!V-EVRFOuX@H&9%T(Y9d(cHPa9oPHxG z{m=&A3WgNFjk3~Qtu!TIrdQz24*tCm0XnC_Wen%^CeA@z^s}YEpzV4TQr_%*NBkb| zc2ebf)o|*2Re?}g8bSCQKXx9P>okpc&N~6Nk+$$Vs^_IA^tEd(Wt(1F#gKw_bDb@_ z4?`zU<6HR8r+2QsC;GBmALG#XD*SAI7SkTK`8vkXhQn;Ou#NVRsk=_<+@}`U?Lg(! z2AvFJ8{Rg6G0`0Ub5){SKY(zXaXO9(!&pCyMPQj;(50Dug%^~X;N}=qSX_igk%yx1 zWg!YrZpq1SbD7|d_|hicMtgnjV$C-CC+!&gvJ4k@@y?GHL9MN2*e3?-FbJ3Zu0S`8 zLS9#jmbXi&&q*OS+-FL!yf=;I`B#Gd5oc6O1mE&t1z61>OlsdL)T-ePf!DYyz3&`r zmRY9-f2$Q<#+<2`QsA&B!%*e*%kmw|rftRZ9rM}~o6bsCgBSQ*LBLn`4V!7!=vbhG z8`Hbs7gzkxZRdNH^AW<@&2B+eGHn)4=POc1WxRS24uye&E(KlbBo;s-{XsY~20}-) z=v9eO;c>Re^uBNnTfOP!F8t4S#_eUgl93&IkZc+ovS|($c&pi|9$hnK+fMO+3;!%? zDF-N3W+fvoopof$Y8mX>H6~j{k{;?SWwz>a-#IAn2)xKlB?}87Fp#d4bw~O=A{^)N z724h#UL0;9_|Df3&IxC!-gNrzoMPK@kqM=huxmAWO@Jo`w`9?v=mkTKj1AEvh5m_U z#$#MQ;Ni8H>?+u&&^~FeHo|sWVfdE0UvPpK7n%kZSno&=Vyv?pt=f_k+#LzPT}gv2 zw~S22+A<xHm=c0(wH;MK<-0|>rT?s7O{M-?J=DS7Qq)<dxE2`?h}vK~zKhA-<%U~| z$Cx2zm}EA&kt%g~9ZKoDOk=h$8bqIVq8ZBqR0ceRR601AkL?E5eVVi{Wad*?bqB%8 zFzVeShm(zUg^*oKLsTfJoutK^2kK}lH->2&oAGG8=?wOVr?T->6*l{7rwlz6Z8$+n zCnbG;n?J>ao=R-60*t{n2)EjzkRJfjiz4E^?P?%1lHc)RDUKKOn$!bfCzvl4q}<&Q zcHc9c(k--7YrP2U*gQIRtUE&Ep+w~Ny5*|7uo8TtdC)&km0%_ATL#kEh84zv0?9oE zvU?Myf{u2QcN5Gd?iDCP2m@IZ7n-$FUi7m#uc{EA{Ab&p!;;bucFg(}_F%0&tnK(F zW<rzPMt9@(HOj*z1oMZkE_{ZwnC_vg*H}Fb;Fah6K&DeY`B;2AykXlzk!Y^{y}%6& zE}G^Tvr8PP93WoJ=m5NCNWqaE6EA64fKEIl>G(09=oj9AlQ?a(j}LOiJb7L8_%8d_ zCUF(=t_TZbgl4TQ2H}C`SGXQx_sd0gUfh%%ExyUnFr%XqHI$3MS2XMWEC_`y$hSrI z*cHhPyk#0`)&_#Ypx;u2II;aDSbmruP@j$9e<O&YsGnB`zf^uKAnXd8zfHdcA&7%r znTa<zmc4uim&TFaIC1LSUV`N~?PyjK_WnFa`Mg+QQPPKUCB_MjY8=udk98M#gU4h0 z?txs-PH2bkTltj>YZVwS4oZ4nJ_v`!07!F=t;;co&H5l+#z5x=4A=`4MzBxQ4cP?R z#+UGYJ0}xl**(Ys2v3Y(M>9ExVCUg2x7n|Aa@+0wlh~L!x%$s-(kn|#X%rh^ZBg}I zdOw1LYzY`|pdrn7t7lhfPL2i#>MF1ZgPLcVjCO=>$7F4X!?0ouJk$xs6{`7<5~5Xb zpb-wd^daDT?|Zo>`K8J>*YZp!L!69jc=Mvdx+1>`s^D*#&%8HAfmgjj=!f_urVx5| zFb_?MiNi_$Ca2kDfX2(9rVxTPKM7mA=EAEw>R;9sWm2e`hG3@k1l6;v@?dx^-Wk=2 zmQenzu&egm(6V|W6&l9T%sCl`@LMIM$uV(TPsv~0Z28+_&2w#b6PsIn4`XVx%~jER z)MS=D!xpsc<PjzZ!p)>}78~_t>~g2D&F<y2{|bkl7P*eqev|Ihvg<iP%~-uo!S_An z6PgQG-&GU#tbeZ;PKI=O&}`|~R(N!=pe8J|Bu#~xUS_BtY~c_t(<@l@3};QR*DY7; zsKBdvH0fAHDE6W;DJ{yW#*StPw#z;+-r%=~jO?%Gtu@nm?rM>GtiM+Qgbezt6<0(Z zI*1d^4aO0$tkoOlkWHgr3-JOL1r-naNc*;{Wgw3<Ru?XWV+n2WwkPPRqwtYd`J;B~ zae}uT+kG#={0eXi8lbs>*Ta_Sg2%S%bw+^~)*N^d&m!AC7tyAp`+yfA1^oEWKJWq= z9J+D|jN0zZM~qkdHorcVI)*Vj;6fa%$)h0lZMdy+Ih|%#OJ#;arv0pzTH!^((8bXt zi>gHi_Sh)4-P{`H`0?g6X;oS<XeaK1T>(`(78m7Rfm{1>?&CmM#ZwFOiNdSxb*CcR z#b%rpYO)M*NpnKe+C{%A+yzaD3qs%~KeqggZO$s4S*%|kWSN3~Q2wf#mSr1RG_-Z% zQQ)o668XgGEO@aWG<j)^E#hsXFqCgIXf94SHOjCo7j+8F=52;KI413JPV~LQMY!Fa z3GI8;2<w<)7e%uzcMdb<=uVV=kF>czt<Nk~HlA|eE%?Xm3qe;O+4U3(y~5{W&GtSB zN5_C@6L*dmvHKt#4FjFJ0P~)6y$Eox69S?F1sXNBZ%5%Ui!jF*xJ1CoMP}!T>_JWf zYt}H0V4zm=^i~goncMMdcX6?UCPd?Y8ScFXi-=+vBufb6UP3X!?5wb@+cJlwDHajN zhtWvu7gz?arb?aN0<)CDsFS%mVngKM(ZOe%^0rK2p^@ZJA7PtCU1JFM6crQD2)Cw9 zBbdwZb8ThFmtU=m&aH4F;W}K}an^+dT9}xWDwrj5J!p*LtREA*2ok@Ohc_9WWU|=L zl~ujwhL*RQc<S%!&u+1G)3{aoR2U7mq!X>K6ODrTVVD=)5sVx?Y4TDygXO7x166@9 z<1AZ^<TULm<>qt<IV*$sgZ9vsZoS~%hYpq?qu0%wlYwHd^dLpR%xPrr+7McDv``rF z9NXl9U5{-ReNtFwN7n9|uO0#q0I82v7f}b<Mc4B-o&ild6hA^K9W6rV`n=9iH&TWW zqmX0#UO}NiFbkwUD_D)<`_%rLUef+JGfm4-+v4OtjUb}EbOiH=e1s+K|5QdgMie}3 zr+NI{gpR1w#qe-nPE!O4P#SGivXt(kUn>9$oVntiPa$!935Om@G_9FO$SvtDLz5TX z6^_|9;mIKH6jD7|7Ox|(&j!a*DXYZgH@iP=^Bm?3j<Nd{wirulc~uk~C74>cZM%OB z{1X=?fqVPfb}69y-t@L1)9#M2;kD)p9{i`96?_pa5&m)U03P`ZwE=z3e*7|pMBi5x zdPr-94=-g<qpNGYFcG4z$I;4;&>xO#0kK@)DeQU%!Ds6%{b4eLi%$=Q>0CnFc-s?R zA)p;;MmyRWgx)dCa5N+H;-O9iDnZIL64mh=;hj8el#wrrKJcRgp^;9QgfR>ELUONx zGOVO3N|+V?Y^x?6_NBpb=^xV?!lppb&wlaeT<YS6W<^ob`x+7Y?-f>qeWYEm<Fh%C zHR_SSkgR|b$(%2p->YIGZVDc3`-g$i;29Wcs|3qy9au2w2?ZmX<{<BK5v>VH*%@k1 z^WgUZ7@!ZNpVH?Cq<-+a2?JPbaYe5_0@%XREtc2%s?~Mk(nVIeU}2Ee{Rsq3O&Mf( z&vEmMmm@eRuCc8@h=y1pQ(^RLON*(4Q^8|My*pD>Q_V;C={R%pQ%G4s(7nR7p)vNN z*K@oBa2_r29H;FS!qi$XtC40x<j$%zhU&?ykDG&<HCNSouTi*j@E;|VfiKgNG3ifN zIAkjOg=iBA%rAd3y=_!zzo2Ia+TiczV9ZFb6AJ!UVM^BPpLe+HG+iI6!f{Zb_(-QF zC^Q0lWKcU)FVLbjb5O84tgvg*<}1yyy#++Il0HXUc@X_0*v(n(v|7C?&UlwDQ!B^P z@!nas*D!B@3Y<{QFKyfzjPpH$E$Qsr(!Bu-NLLB5%%o!>ZgI!e*c@>4;s8!SvA>GV z@RRFhAD)J{mOF#7W%1C^uH2by&lo2uX;1+&0-bk_167Ooxjlu3zXZz`NVlO|Ly}Xr z0yEO{q2@{rnq~reawz3kvsV+_ue!Rk4BsiRN+&Ts*ydDQXj@}3S2E{n8=vCW+p>He zu<$#|vVHvb5LDR9^6YPEAwqPFkvj!zL0}oCi7T}E7H(4+%(8;b@(qN9F*Lz$VLOhR zgC&MwWqCY@5K#(gPTc&Pbi&cY*1UPw*+#w}!E!dicZ{zi7HA*r6@;+_@nc`f^)e3f zc#-Ceae?3q1tbL?7Y~kg|M|*ZR45)o`JrbHLtY{(3~553klMvX7S-q@lRQ+7uR$<9 zbD%cf^9GjbxHg!=zU@Jf9Y)aYr!46!wDAbX3a!H52hD<}=v!nic6%&<T^QVG>aW{0 zCHN@3=wxDHru9=pQ(6)o^4oq<gMB|jT(klKmVU5I@!<Ijv@(s5;m<!y)s4QQYdG2w zN|mgjamOz&#A2M0O<X7dZ%~o_P~vwg$cy|=I^J<@A9%@zi`ddHC9S{pgkgW!Kb;gN zZVl$!Kjd^JjlU!bd6-&a{V4le+I$d>h5>Q!@RgRt-obrAq6eXYfzDZ&ixb-|?v?kz znpdoHk#D*Ur8_Zc$LrSm00OU*trN$M)z!4#mfxSjmQ@X>#H-NK$5zG(d`G^D`>2ua zp(y)aI>k=4++I``eblcuT6lNL%!8(M{;Sxj8N%k5L?gg|2KW_r)R{TxG82hp@ez4x znAfqo3Uxvu`H_Q!sGs2DIOM;HOR=n@YfY3c6x3u)ARw#J^Om^@@TkqMiw)n`LGW27 zsBdKPJ<gt(2l3RLl=*MYtz>3%4_T0X|G;~N&9Lj@d9U^cV`j#QLya`B3o{0__X@ka z0Nkgx0HpztOqVIO1$<?(VV#<8v~dv5?X?o@b+gT_4l_C9C4jBgo(}L#`c3S{EVCR` z66@Jzlb1Sp5?_xB`nr{#oZ!*#@~u6z<ql)>Cyp&&2{ccfgOp)R#QLUn;B~RBQaEh2 zrPw-So&@Ya@oz0c;o__tIx4|<VfA`kpYJwUhU1j;NZ<`yShTvOJnQ$CHO%s}tt2me zXE)1SwfA+RwU0`kz2MmOzA7iS-|1N2sligiW$-#{gP*(d83(}Jg%{F+$()#*gT**j z+)^JxXi}&z1w{>Hv2EpmlKHc%rCgR6@F_#%+ugyu`h3mXz&Pqh5EFjmn}f6xRMg^K zJ*}^!-aDI9Pj<(%{U-`y=ut?J<{hc-j40KJD-Th*f`G!K0Ket0M5QzMtX|#hO*8mB zX1NE9m@u%&Tt;Oui77-syj>ow;Mwfcxzt+f61Mqj5$-{#!lS4)(=rj7-}EC)xlpka zGWO()?9P$ULs*SN&-~V&b`j%Yg<cP84Zt^h*qLlzjM_vsh%T-i-`;e1)F7M&=}vs# zOHg39-}oOv+*rP2ac2bPchVNJd^*m%sF#G%M`FivAc9a*&?fQLkI=lpp>yfcGRYnX z&tiur7uoo93~ItCk6L5Fr5$zg(9lR!d&uJrB@?)GhsFGkHQoK?P+C;W)bwZy=Um%t z{zX<Hn#M@Wg(jM^yly|O)A>#_K50bQz7>M~CM?1yMU;g_iLb*b9wU4U!C!~(Tm89n z5-pbG>%dbl=>+4Y4`VQrV`#Rz5P;WUEIK$h=w2#rU*p-^sK#0S%TFRd162+2JZT(& zrEenRJ$yKb6{PirtH#+Ip4Q+*`iYe&>OoC~L19zPj9Te(>4R^C)rr)t+U?o|T3~f6 z&Iv#!X&a6j%rcHS!VC)r?TQ^(Ib?y#XQLE~C-BOkOR@#bAWUZ)W!|>8k<APQb5C=M zT5}0u9Kh9&+FWl2QX67^|Fp@}qd{?flykTKv<~yw-u+hFSvVmL+m0S?a^bUIC=-xf zAzrPg&_fZIiomm1Ip+0HStmBN3Nvb38cdyc^Q+S1VA!bkb-M^!LMU;&3<vzsZwGc{ z3ZWg?=(5R%J$l|Q^x_l|tN<kAbMd4wBaGHr55<jDJ#N2e%W;x$l6As4h<@nCz)wTF zOX0%d#Up-82L`tRLtx~&3B-7Rl#j^I#~=c}2ajf;7iqxyoNP5G@ity3BhxzJJHcvC z>DW?xCtl5S7+7qheXc)U@vCj6{%+;&u`sY<RWM!{8o|7!BI4=RT>^+O8~nCxHP^zc zVC2bo4+6Sv>?wLRUI7b<JxDsuWbej#EV9gO8S%OEAsy?@LCtpvh2#y74Qk~=J!-u< zm+Aa7X#Z$@P*njk-ta-ZO|)6jwy3o^QAxb>Z3;zD%e9SGd(ar#$-VPrK10+9fjWvb zVUS<;z+ZdA=XYnizBxy2jvcN;X7J6z&!p*xvE?0b;Yc}_RUpshiDSngi&7R(?ix4- z7-rE*t2Unsg=6gExHzGxD5t;_-Ax&q7fBl8(0tY<@3t@I*|*n5bOmjuwxxRodARoG zy1UaYSfS~?(l^H!fm8v+`VG<F{4VXzv3q|u(ve?WSWa2EDL1-!5GVB@t(rC(&R5V1 zX(TTf?~Xxv0@Frl$Q6)_sfgw4xgqbuHENG>wG7>QS%*Sy2%%Nk^}5TmAc=p+kMPL@ z!c=5q9z4R|@OIOQe6UxrW`$#ELHK)UXzYAamWvVHl*Nm^3b@bl1ry3C?oivd-HNmO zTcQ0ByainOTn`x*KKU<>VoZ}J{52D)&9^ic{Z7W91;6>TEJp-y>qS0zJ|qS-5{(H+ zW?=AZylsHBJ=#Mxk9ck1Zl5#<!y89Plkqw6Ni6#9y^Vl-3Q5SVl<VxP-_}7t|MV<y zzk)Ei4QUWgHJlz4Q}``{S_OVi#HY!P)5X_3>4Zk6t`=JY3T-u!dNPuImHd87R1)HT zZo5d<GEiK2lDN#ouz-{$u2z_#IJX)Tunc&FJvUvOd7#dE)CwD%ELx>Ht1<upKmbWZ zK~x1N=2^<pdxLn_URm!D=k)Pg3B68&4iK4>wsHz|Vb|EY$VN4>-A27J@ik(1Kgei% zm}ms^AYnJ>tgtC#^buN+L2I|@Bwd*3?pp5rCFp~yc@%ol^eXh)M&t7|C<DiSI~e>> zl-tvVrx4)mz<=~|HSsD4yZsmWgoh$+hmQq4<(sH`3JP&f4q^LBJ$ce>U8IvvXia%t zuit0?q*K!fsCcWVX<g#sV<oj?oUZo(mF6(kC2pMz!&VYIOw%|ymo4<TxP&yu33m}> z_N&#!SzG`?BH{N>!O3<7jvUZLM*X}4oah(60v_8<ikR$SKiu*N9!T$4iSbh9E$Q8& z^->mtV{4u~qu70VNQmx;y40RK8O_2&*n^5bvJPv`-|>S<otxg^ckT@2Lr@&jMC|l1 zE-q;UCf~&kZ<sNyvlumW0caO_bz8S7(GrB&Hg+;FH3e%!de`GfC%j-CNup?VB5{ik zvPT(iwTpYVg%uj&cZDO<95w9D!$iv1;dmMsnGADq*_-BIEF_W#s0g`<xy?D|2Nx54 z)N6i*b?g9$cNcpKMj=$tUipzck)-jbiNYXm-W2p)Ac&U|e6+tEKlYFPReK$2`&iBQ zQ@-PVlm6S<;&jG7bB%&->=aO@3J@1-^)gG{&EG+fq*pr~8Q^8M#YLB@R>{^2MQoSl z@zpYvcOE&gsPJpcw}+|~_T^2QeOOKe-swTc_7~hxUB*kU9AymefJ6Ec*B(smSN0?w z|D!DVj_}$a3b}f_2|H`@Sy!|#XNh|Jy(^Gc(-3{3GtGx`z`|{F<PDsc9<tUPeCJ#w zkI+OVFEr4$6X|$!N7J@R@A8ILn&?v2{r*<4l)fB4!sowO%+L&RY-=J^xM)U+?`&V` zmz?;{Ps{YC#dYTC9u<PrmuWN$x6*-%nN7yOJj|=?S&qS3FfB#qq8929R(91fFAY>v zW}!9Je8TY{932ClXSxQkb6sT{1@}{^MM9v$ut>qojyc0hZU7U78Emkw<93Y8bz_3C zDhb9zZ`;`as`(v23w)}3INfA6P;-1=`-H+2RtFKTJ<PQPF-cg~;czROT?cxJ6UJG+ zqcdQQ^NrsI%{78|kvpza#^p||-g#$v{@rabuihK{D>iT9%HZl;Vs+4zxc%x9-c`8U zYq~1q86Fv<&I!W_UG0_L4{qZI$hs`sdDkl=CvYHcI_ugiILJe*))?(~rW6KO#7-85 z_~c`+a)rU9YV{VGm|mX37cnP(PvTn4)7ILp4X~9dLp~^2#~|9p_F>$Uq0L6Fh{?C) zt3V1Zj)$*0p^ZMYL;bo+gVC_A2s*KiuAF7YGCji~sxQ?X={p!4^(fSBQm4N~Z>i7P zg-0dfenO*Zocz6D;`IoQb$!}in*}e95dq^*&72Dy?X>OpBD4#?pu}Y5gu(M(6P9Hm zD@LP3i`UcuaUy;~cqXmOkKH2|dae)#8ls*qMnDH%ItCG7-PTsvS-_F5wuZuKh<dAx zHfM>p#3B<q7-BF4Dk;~o?g3aA=BCrT%V|uXTzp!sH@$uFE6=At{>)d>Q;%Oxk6k`X z9HvCahZF0}z|k5uPzwtSxZqkypZ(nD(<eXuIr_RIz4HhDbb9K^C(_{HK>Rt`1zaFx zZf=gNdDqelFJ4KnzWQqV;qU+Mborrk5hq^v3!wobjmgBHK5nz-?cN37Qm;e9McXLa z-EG|Ut#-0w5-$-Hcv|I(;a9mpLKsHT(yCol_*4M1pB%5g<3IdKjV!o@$i2nSg=ps4 z%q`MJi(tN>4f^no+rc8euD3Wl0wWm4ElsnqYyJ%HPT`Js<K50yP*>QzBhgOsc#==V z)!lr1L*Y)DxrV&7f!~r^z9Rj3v4TMymh|F6a+FsyRmS}4PFXI6Hdb^S8Tl|@fwz>A z<0uD-UA(ExuuS=aic*DWx-9T!ea<o7hPn{6UkU0JT&64K+CK(&1l7d)Q@9L1_c30= zq@?OM$7=@%czXqau*pq<t6ZC{e{!$rc1)Q@m;xVF<AiAvn)iC)ayG>_3a3e$P!MI` z?+@GKg2!NeMKNK|+SfK%oEqe7KI%%*EPfhiJ~s$$PvMC~wG4V%S_40E4LI{smphHf zSDU(kW!#2bK$;$I=CqF0tp)1I|0*ye@1`D8xPdb-V0bV60zigqch#-pcBgpot8L-6 zFN1z=5Q7=$WA`?;r>h{@X&_Gpx$_G$OK13Pr?ulE>JhG=%)WOW(D;gF>)k7OzhhuH zI;Wzed&0J`SnhQ+n-`E`Bq-|;4h1XScNwN2GA9NJ#8BXEhCv$FR`w(&4?}Pu7go?x z1ixg8YIU0P<rGKzEHKn_9j09Kna*p7y=GWKFZmwj_B9t6_LoBaHom2{*X2w(g@ae0 zjNY2FU$D&z9j#nlMLx32#4Jw%Qnad7ASzD%i$`m4)h@J!Y3O?F>dbn25n*=}VfU>U zaD5NQ@clFzXf<wbJ(u)R*FGN>FO8~wT!xXG&l;mzzxg97`p|DD9Tx+-YEy93*4b@T zg<)M$ndbEj!Xs|Poj4Am*T^aqX20Jqg4!7;gu`m3O4&#G7JuT@1yTV|c<rl`-24=p z@g`)M&L}mslACQSd9B<0vHi|_wV(FIULj0~C@tIvk}q%TRjDE8UI8Jfm6^gV!1~4% z0xtqr`v?b`hQc0Ej~?2u3sj+p$W(n09WY6AdaKY5{RIxbE<qTkmzG@gP9V^lup6H6 zg)e?J{o=2EB)$EuPo-y`{TiCsuJrKvbLqRj<1&Iq2fJGcyYskkeCeh1sn32sJ#y)x z^w&T1GiiwfyZ_y9{5q4>R{HKYzbTzNcNW-LUW12~<>mC;^WR8UUU?-A4h*J=iIeFY zS6)uP{CEE2bm`(*uFdvp<krZt4Xdb4#dY%{Bk)Zl{O34Sn7Er@HZ`-edR<`0PLBbW zT?Z-S(#Yyvb46CoYY(IK<MvI@3x&7HGeWo^fkK)m|4S$kJEyqo5dFaWofIWy9_wC8 zqA)Fe+JELR<IVO<Hp1Q<+-Wjefv4WClFqVpqnEYJnRe&FgV(wWON%1m%L*Zssp~EZ z6&6@b%%7HHndY=k-<LAPw|4X%>MLDl+F=%S<D6k=Ri7H?KpS~WU6v;gH?MsbF8e@+ zaQNZ3Z51E!$8YhY#~*p5e0Yw9qvlKnCzf@J@gKg8t$^T{{YFiE<0)qoAq^oe%*VQq z1)sGp>C^VuA1apIjlGF$&I`S`cdXiPI&F!CN4$J9f{Pvb)j|B!cKR2<RnPf%{$aap zU-LL5x(e*Va&eT`ofpoSsm{JAZM7e{1PQ*diYwBLt@19X(-TQA*QWQg5HHHO;19Gz zc%&_Vi#}m;QKgLVAnc8SxLR1`1<f(2-F}}!RW^%DCdL+rzjXhSyUBE-Gms5(Wk)CQ zC*x`I5^vf`gi^1?ed-<sUOQ2<3bif@(q8BL;_@Pd(jJG=v@KK69YJ92CC;!wdh6HR zK{%U(ai+9vwK}JI*uG;Q&z(nCZwAxcPk}cIy^9aAev_>cuQC?D{z=p$OuiSm`ABA> z_V)@n(RI+^I&qxt_fU?3q;cbx0;kWdg7Is7DBN5Au0VtW8~?Mg%S+Qc*?2>jTXBng ztl+U@6&1lI%isZ20>_RGA)Mk3U}=*BP$^v)W!o5}TTbAfZ#BJ6Rth09*TV$IvR$Mg zh^M^ptr`L)aWWv`uNP&xrQO!=pIfS)_>UEOJ@H`xxQjHx<T#Q!ImVofo%HR;{TRK1 zpiHiQCFxyMf9Nce+@PhKDe-6!Z~bU8y}DXDYlSM4I%(M+nZKG`g_YZQ3vsK~1(I~4 zLa6jZ6yD;)tv&m-UXlH+pqrUG3v%3pZDU*7+p$1A*F1L)GGS!q?_}*F!mV2uIOc5* z(t~jJaB0O1Hs2wzlgLYCPO;VM7I6o_&T@;vfBh@}eR{|Dz9W6`r++$4-kwZfd-f~o zD_?mwJ^S@5QLL`KhK2^xV~;+ZE?&5p-u#yDOoKz-EXAUmt9hUP{AbcDufCR^eeN6V zxUl*oC^SD#`X|u-KK9rXsSg3*mw)9~!0%T2&p-4ZhG3{b(Gqsr<b@MX*7BxieA-;w zC!I+*hc$IDUyLjAnqMy%nnW4b0);lC5l9|zm{x%gD~>qu=*@0wb&a!-I;^(OIO)H~ z0m*ZQI}2@U?(M%m4y-CPw-Vkh)?zeY@t~sPN<m#3l8ePQag6uO(}c4gq*?JKeOkWo z1q>7_?zXsOMn=`Uy%gl=j)#YK_X?KpTQ$83;R>V_8)f<;G}e?0dWhdC$269Gi?LUN zu!zTVBjP5POp%RYA>QN-n_OL}z-kJE#d;aV)tTLWXKl94bk^stjeOTL9zGjq5Px2G ztTMy0%rnB_=W+g;!xHkr1`E&5Hm&a2cWq}Ja%RHalX`y@9DJSm$@y6`KH)FHN5_0Q zL{{QouWtoj5ph&S)-DWGxN(7Dd?+&b-f2~aJ`23wlL}Jqcnj9h`1WYt!PsA1TLj;^ zyi$%_t;^l)ZnQK}Q-(qzSbpdjQ8`c!WSV~kg=G)so<-T0A$jmw$ADun&?$l2G1`5e zMlE)lgFcH4pxX#sGpx`ykOrOj6eHUZY(_CyAH(;q+k|#b=_pId{j-ZqBKjyF=3Zw4 za?FROnGUsn8Ah=oeuM$!iO(D)7!E@~BpnQ9y)~>L#TF=p&vMl2DkK`OUC|3%l%XxG zx6H{1OZuwNe=lFcD$#1Idlg|<j$DXX)~Jg(w_=G7;oqx^m$9u|?Z#`t8mq>wj1!8; zhma6HhQLYg<K0a%O@}Y6)E_1ASQmC3wgwrNTAL6cNi)cTXQ^)_P2wXBhj3})I9F0r z7k3?`Gs9R-Q>KH_DlFY<T$_w=XiCkTu|-S6k9~vfwG3Tr=~H%?$<AAmR?yxmd^-si z25vz<mnK=S+kxK5<fP^)bGPygmiu}Ii*`a*a1)=J4%s`!Jfu~<!Xra-3$Wm<Rl55X zXC24Td}@~Dgcmp@Qd5B$XlK+(uLX{bQfQYaI0?IzDQ*qg4eFoR@j6t7XuP@e!}_I! z<~p1_;~nKlcVWlhKFs!CI|5Pe+tPPx?^oehUQ4{hxAdSOUi#nSZI|UNEnzW-Hg~&g zIdx;o)V|({7K#NJi=i&Y*5|+U)pUD$F8$f}yqk%<BQ&vUW54hF-)S*>2HP&ZkB*L} zKl8)y-ZNeO#ZSKPC(;N1#($Q6^hdrgeaB;$Sa<_?w7Q;3{D{ly)gFCeTb+RQMXNxk zDTny43n7*o#rQ#RE8B&F!qO6_{hi38p8R^>&k*kDhtLute8uEnm21Z6n;NVNRY5Pn zX0&~=j(}^w>2*QKjQ44UK5mDg<mJu5GzwP=Y)hakFPar1Xe-IR6hm_al^BjY7h-kV zDho~9jS@QO1dxKK=?P`EqlZIrtoGo)+suDhRDsV7TQe;FE)Z&BB0Qc^7z7^_-@tW@ z4bzfX_ziyRnk>_0EiG_|mK&kp5uj%bL)2rL6yn&jKFcd14z87SRirT3Ptiy4ZME)2 z=(c|fjN(nc8oNqW87>}$ppHK4>tW&6h6g6N87Xn0$yln^E>*4Il(JQ%++ZG7!@I#w z@GTa8$52q^*5vWXCS~vr7ay;C5MK@KAHFu4vJ?0rq{1uDbG*2)EB$KUR6UgkKrC8v z38fs(8@idZV}XFOO}CfM-=#0*Bb~@G{oS1N;UAX1^b7Xt$Sv9i_ab-ob1;587-9y^ zowNZ2=u*cHzz?447^tTFohS*l1XqCrsMN<cy4gBkPt$09-3~sFpV%P?w+$g!VWw3u zzV(|{sawaXEp~S+m_5U!J|^7GFE{^KmlsiZ6P(u{yOImRys6kTXhmI7seNt`B~MNc z@>@x@5qAA(#C}sAtXiTM*B8*9>y2WDwyA+~i+2DOfCor4Wtf7AEc2{rq=${R&b8FH z+TYOf3h*S`W}TQe?4?cJ0?#s`dXt-lT?G<Xluj!4E8xWdb&w9>r)=cRh_R8T&`^Av zuqhZN57!mg9Kxy-a!bFFP5H{tQlxo~!)>-;<T_l}*QeKOYUgXMP9*i(3qw)pUBUiR zJK`bcwQmZu1s*kX?a~^5Dl_XlC#7wEyB#i`g|`lWJ<a`mwhnQr*AH*;i`@?D=093` z1$M3-XMs@qwO+S<p->S*FO8Cp^vA6LWqyUvxbC!`sp(nT3e8_FUJnMATP8;*W)$-= zRyVlIR^B6atV8$<w~5o~WK#RJhybSzxuNvE>0L#4!qfVh09_o;Aauzwjt$_Y0Jndi z{LGiqkG}hd(z){&OdVq}9;%N#snuf~8^W`bws>sVNd<&}Qu3PKG><*;Wcrcse|!4$ z7rvU_@bG!Yf(zLU^G@EXjRGGHsK2@M*|sXw6&qiLKZTqSba<yAqEA;3-q}xam`T{g z=ON0s#!+a+i!&4^?IS@J>K34zJivZwaxGmP!{r`%@N5a+vOmq|w4Ouxme$r_%3VA( z3+$%!y}L)#OKKaTPfl$)-eY0Jx0)|`m<RhDYi02mweXv1ApX?yE2zr@V7HJ4T68qK znvX23&M^)-l!)gFvm6u(>?K|OcgQA2_*V+!TcIa#E<9BRWu%*nn`y0QIn35{t7$Ns z;~)eq+OBy+Us(_kFJG$%dF(Ni0xBrfq8eNb)%&QbGGNeN*E%BbLOvi4^A+4VTBSjz zU3PWZl2@CpeXDTE*Zili{5Y6NgS<dTFG(cfSE((RWnJ>XHS#!og!g`jdW~U|OGKlM zN31O1H-Cjdl@`*L{JO}VTXdfE+z!o1bB#`oS}nmHn$Dm%t5<eWfR)ZNWI_xd#S2MB z2b>AKF0a9etHwy<%0$&q`bbxOtI#oCwJ4`7Xe|Fh*o}cZ1m5~<nTp6CVm9oDvz<cg zt6*hEyV~%5L3+st--w{OK+#H;cSrfQYV+&*tPB)?Tf7~vO{;Y&@OhgW<1iSWn$HPV zpsuL3_ccv4qk7-R<rAif?G4^&yXWAX#`bq4T=J06V5X`q@%x+nVf8WtU6;*3&<ijT z1zN~COgrXK#i^-w>;;&7cp84A9pdj=O+D+Z_85G=lS#SFtWBnTuizt^6q$*$oa&vp zlYzw~P_<ioM;YKT7;HVi`5fX!V5y3$a_#+PJ||_hwDXuZDE!L&jX!K~j&R}<Znbl6 zqxJ!~hu4<b{#Kh>+Ep*piBU$St(zJd5B;ebJWAd5@(%q>ok7DgN??-)oy>#L^G@95 z!z1EiH=YlygUq7N$?|T3Z5MxI9PV;UTN;qzTHG|Wqc&|%95vNBz$Fd#<q~Es3cm(F zo03JmAHl%w$3~1o^iKUoJ0U8V7|(e`=&b``2K*UEUD^O!L+L}c_bzA_5$dL)FE!VO zojTC&Z6L^qFlH<BEv>hw>(le;%g=lzz3(r*FJ~}MWZKE;3)_-=NV;)?5?edLxFX!< zSa?@eL_NJ89e&`Q?@Yh_Tfddw|6@Oxy83z%;Lxj;#HGl<&u$pXt5)B_Ctk#lZP)%i ze`k%Z?G>j6t0LK+{gYFbHfLe?7~|Ct<&*^bd~0HH1Dod+r0d5|<93hi8_<W}xuo5h zjZ^CzeazUd2L-E8QULz~*MTeaF0p7C<w|3<q0)i^L1>)8ftp+o7`BH1lKGhUm6qgb z2H_9^3WRGM&Ynji??e0A%i%?Z@^<j&0%E@)&RYgwkkzW#FlhuI6;AYqP`1c@DQxa; z>YLqz&ykLJyGsachBnsnH->BQ4255LN&}fBbZ4fI3hn1;!#?2qN};%1Gwg5YcQwuK zrdhW*x11P<{8rG51DT`?7=havrypW+G}yL5-F^^!Z)m9?<E6W{JxAqvlqZ~)?O%Bg zqU4wJQaxDry~rdR;X#3V=#wmo$mitMw2`Vxed28i(*u3OgMw(YTHJm#u>Q`_?m%Xo zhyHd2U@g#ZLI;^2<hZra^5O}G#Y8CkI5@b57QKW1SVAUH`>PPWQ^Ky2zpZ~j$_EFD z(N59g#7?k74bgY`F+LU0W??Ma0eh%QvXJrIOF)ktCD?fqnRVLveyictkL@i8%e&W) z!#OmyaFye&aRvvf6O2$8cM4(%Z776s5sk0J`ZDpOthy}IbbfC+L4X|z`rk(=u-wAf z|24KdvgQIN2X2>%^L@a{w}Pn}Z?9U`)rkUcEKJtfwq-)M32JgYQQe7P7mchMWf=`7 z%nv6M|J0E9t^^Moh|3k2YPj@jlC0`!OP+(i>6Wmk(zowCbmNUa(oFR~vNuzYd5WgW zXX#S+H|1GZNkeEOy&X7&9fVqiNa3?A8L{8~7B9?gap0+L567$5Ekxba>p`BfCDy@2 zs-{Hzx{y5b1rwB~Pw6#mraRf|Z)M|oP=ka^;lf=VWw#r6#1J0w<#?Y&=sksrs<bAq z>%pIneYe=0AjPYbq!V*Hn%H$F=Z0Wk&&acR!)~<}&$=xprg}A*;pcvfvZ%ueSeU&f zQ8??tywZjXsa|Md4tC(e%C?kHY~9Om>1r8)Y<XohoxgA?qKhVW^486C?b>U+!?n`* z@$}Hcmw7KPvS2$qGn2mbr7t0LY^2MVA4%uWpO5^$f9<uaX=dtnnqOQ_4?T1-ojP?o z^CaFWC|`W&;dJBXt%%DlED-H{XIYE%*0~eC>&f<(AZ}K0*B9P*5c=&G<04H{0pg@& z^;LPUmuI>5tFG)6cAIIS)VtTW6Z7S9wr&~c3TEM5p;WX-CSl<$RqB-IFkYk+x;yHY z-eCP{c(XgL^m04l_ClJT?|}c~KOTmnVngb(PhH3<P|DYwIkYKPXe-E2Lo7`Rjy%I% zBF(Huda>mtXq(#uZ8N+YxQQ1{ALieyN#e4JWkzn(tEtvUZVBQ_rP3vKQq_){MqI>4 zAfA0nzT=T-`&F+DMX05zj6XeNkQ2gj0j1f93WjL6Wi<uMQuD6)Mj6AF<IdR--!2*) zW8$(AESvby9+O5ueH%QSZ=;I$Bp!F+#&ptM*?n+^c9CsA95x8EJk)xyfQg`Oeb%<p z-xQ^fX+yXl<+<>Yh&<$nB`Dm_t#VKx__LBwrk64o`KtrjBP1jknA}s34DHaNcC|g2 zee6AQDYkUx9WZHTB5~MvSppLt>-C?4ZgzjhIVN`FH~1Ys&jTxW6!vW&Ay+ssWRiiX z_DCsBd4tO<*qiE`_lzqH1j!JT_sDbDXzNtSi<LXix;2sbG+nq(eIpQ)j?fp0)93Dt zu8RO@1;TX5jleKYR<<qDl;ddxS8Ec?5`*<sgk3#8c)^B)p%9*f$jQ`!<bZZO8TZWy z;#=tb*8WLb<8r#y`h`ViA>L17L)#AyZlld!cO_^77|}|X#;U;1gdj^Wt-d=c$P_!l zM){7f7<107aEy8?leqfkd|yl)(~BFi{d)x7v{PTxlkL#d!d5BtYWpUqT7i2nqj6hV zT1MkY`#Cv(ag>RS_baHZ-FlRHdzeJqz%sFUc#lf}LvT~rQG24>t<v{uyTygD+b)GN z7XwZhZvE}acLec1hFmvv1spPMnx1W5iEu6!IMW;$Y=`;hu<@c07e*b!fzSi9mIUI% zN#APy@Sxf8K@KnB>P~X-y<6Z4y(iFyI~h0QNg=u283w4e%M9oAE<}j2eNM`1`Rp^> zT!Qe%P%ROBtCg%J$pUdb6KRAgG*aNrGU^j+t*96$E@j7&T>v4p`p((SxV1iSed|ZV zI)wAlPk-u<(|g|gqal!*_OqY+T>3wM=YLE8>u>)~`p9p7IQ`V6%K?KtV|scj{o>#I z`82>G-H8+9={G;}k@UBJ?!QQHddpkG^TO}`?(e3rKJ(@DKmE@iP9OW&#~K1}(F*^Y zPkbUh{@CT%>MZ=H-Ugp-zO);IzxGl*7;Kx`N?mB_S2->h;8`KUB&M?r)A=mj+mHHh z?PSHP{jPoL70N3-Yrk3VV{u>}&jQ?mJOMZ$Sk}4Y2yc|(4UxjPyO(ztV13jCya>AV z%a-u)TiQ_AEnx(y7ymEm1}EL;;QcSmuB9QicrI{rh37KFr>SG1hCt`Df0pHk3XM(p zor0URsr~N|IB++^tzv05gd}KrKX|L+qTDFkh${G-W(O>}_VR{rfGMT~!WAI^WTD2H z2*;6qX0X}0=~*E56r6o3PC~m&8k3qvH*nH9-H)*41ssk``;>MzDKkhC`CJIdFBNhP zWDkWvc!uCz2zT)&e`Nj(eA1YSt59!$ExNppa$z?yt`%@CN0)1wmx!lUc^a8(5Ar65 zgzW^p8~`K>wON~MS%DM#o*#9ZE?Ex#F8D<e)P=bqaIS4)78wN=oWs{RH0CaAM|(GO zEy@Rc!S}OhQ31EtxIU<EseYh3xYkZNj8gt`8@1<MLI_vWJ3u`Ox?OHt5bn0VgW&m- z{{Bz`?}3ekq9iOC(M9||=~dx=2)m`;h9<^J{3A%j3c_yt97EvS!eyCT#4EmW-~fvR z;H_0^KTU5iyG$T7X)d`*=hrMI4ZSb|uU2;TY%r}8wXXAGawVda6A50259?fDuxQ}l zCnKOjnOePG(+s1Lwr!q%eHFof9(&%xkOW^w-YcVnc{wgEU~L0-QZFb+$NM%bvc)C| zo5tLJA|pgLKAa?PV%XWq3Hf7enaS+#HCS~By$HBY+A>_->)0{<{q$dTQrL8EbIx*7 zZ3>m$6n1WHY~A#7AFhY4PLJS}-dULt&EZ>3hg*C3nqf3vlr3#46qI0E-2;g;waq1O zdH;HT+c#=nvIa_=!%V5rR%9B!qsw-{A#X6>Sx!qUuu{&Z8Z`d8P}R6Sn*$BpC)kIv z79zhv`tg>#br%9?MWsLgJj6ChpPa;gQ~2toDvY_C<2cdez);>7DAcgUq()&*a<;vg z!sHyZpMvY#j*-_fS`yU0h0`+Zw{7S`cTy$fTg>vW0*4wb+u?7^Qxoo@)^eOiRv9dV zLnG<0|0h42KKd_yKfUog-W-}*1>qn0k$0yb`k^0AZ+!Ae76H52=I{Sszn4ajkEdVw zyMHfrvnu>Qe&>Hr|I3H}N%|lD(LZL9*qwgnXMQ#WXFZt|Ti*ib7tsno`^?knZ~p9G zMcC|S;nDgM3N=@O198EF&(f*pJ8E(DTB2Yg3T$7&jcJWAt!-Dp)%+*CXYkU6ilxPs z%svsfg|OrTOw$%!0G9e<Y%(srj36p8>k)!9F7p+(y@Ia<Syx|b8@=Qs4!Z%U-XBWH znr_7b1-iC$27A(8lmpvCYcU3{FK`udKQ`Hz<GCQRO#ck^>TR1e>($xPp1VvQ)N%p5 z2of~U+1loS5$U>tWfeLr<>b<GdBzE|6xd1&pM~bEFmSw=;8SRq$y<VPqRK<mvc4j` zxVX=U=kg-ozV@;Y$Eba8vDWXmii1+3<tgw(SuB896tfD_zEpashe$_5W5<ja;>P*U z7HOgskF^Z4TKm#*?RYNr)snP)ES_D&gLPPjuz=oJ93R$;0@X(z{Wbf%yM9}fLwVYd z?n>IdzFiFTwXwZ{!Sbqi3_vVWg0e{|-%BHUIcV06ynzuYbOnwBN4p{0tB$?m^(`O4 z27s_w;3FTbK=0kmf0{7pF{{wYUgbQ9XN=wtB-ow02Reta>!5JrD@1Uw<y%gFWd|ft zyJ?_(jM@>m)^+S0lPH7`+Zm*hxkwcH*!3WrSBdITLiPxMNUw2d&G!#uc5yNF#UVD` zm|f-8_;IuXL)a=?ukDI&(t3K;LG9%FdId|CVd-yp3IVnQU~P*-%iyPQ4`cWDkRB>{ z^CB8*{U_^vLU;}0{|wt3U7KC$wa{MIn1O|qgpt}0nS7o+#Id|L_;0SZkt$LWcbjW{ zJLkCK89RVhhXZ$IIOGrMMxVLD=EQakS86$Ars%V29MmU|^`_wgG;s^-tf1Q?t<1Lw z-y~}Ul867@wMvLT&J5yYa$_zZa<e-FB_Mthhx+=StZUO71-;G>GS3b)ZPJ(RkPc$u z1*~)}^bQ>eXcdf8V;`DbXw%;Y`)!jugFBG!wzk#~=oZmR3^571=;LLJ;DjaqWX>gt z#f@@G%*m;K6WbyJ&@^LR*KQ@PrK-jCx2M4k3cw+J*#S+V2)+uXb?vSxLlCZ|x34TX z1cq9C)!YmMX&n3Y5L>?B)O7y&)<u;Qw<a!rD-_^~DPAf7Dmbkpa6a+qBk5yoL4Ne3 zA59<n(1%DMZk)XMLxWPka#{iQ<DdAW^uZ7QbO^hq{qFDip7gK&<sYP%ue^x4!llsM z8gCmKlTy`T|KuaTmA>~aPp0!{PNmto`KZIR_0Z^B9*}urd)WhLYGGX*7Ly&*i3Z#1 zv+edUqBP}mKf;^BuEI`9*Mzo+H?50phFMzSAZQ78@jUf1^zJH@cI=dxiz&Y)KQBD7 z0p2#|RrfcT)ZM*1)5fkLVnmD!(s|9gH|BZWy!jPc$GDZM8-Zk!-K}}-w_cmYG=)ZV z)33F)P_DH0siMZ6Ja;*|paZpY^Vm{&TVp=Z$H)PPpd^CzRgY1(<~wR>%lpy~wJPG# zeozyu;9rDZ%W~Xl;uJ!6DVTUKRawOxC>9F*c1)Sx&q7Br?1-f3cxQk1(1s8|bK=P1 zheDfDy=DY4=BcyZ|0dV_iDg-?{oxLQ^J~5yfrwf#uflph7`TI<T9U@2&9d)emx3R~ zH*-l~-NL*^g&v|Vv{K&h^=&$Z^7;aIue5g)ZyR04D0FUmD1JjzNm~M)@Gp<7=n-hv zgKC^}0w-$KZBre;&GoC$$b4#to|@D6+rG9e7b}`fb!hKP-a&+G@t@zD;z2kF1NTMX zEtM#Y-LK$aGe}xHr81~wHT>78{|1v&LjXma<v`_sY;*KMpgjz3-IHnZpcYu4zWTKF zs$ox$YAP^-ru0H3^sW(q9ZwW1FkJ=TSgDsb0Yqqn04z@1?}CdT_aWF$;rCFTyh%;h zPTMmc93+cy4b3-BbD+(kU><|tYA;W4s&^Fa?-Z($^3M0RR}De@<3)K#k+~Eq^VxWn zgMQb8zh!_j!&^APyfluzC`_uLsGjz2o*U&*e!bnhe^|dZb}3GL`|M=4--IT-(MHm$ zC9z+}*y7eMt!Th~uRX6GEhgBuFWU0EX~*5<alzqDP13!#iQ>XPgYXxDQtgZV5EIP; zB7uGEOk1V(WtcV~32n43z#x|xL+Bg00kJt)jtfAAN;N=@GKjM{g+e_y+`@B%8h6K+ zfBI_e!oAUOXpu9VE_}4rbrR6dFLp#IWRr!4ThgU16x#@Dr|ZFq!gkf+2zvCR3ex)x zgdMXwcD3O*6ak=07Pnd<AAr*wWBq^;Wm}rR)%c#~_CEy<o1Z7#?equ#&mSQqb*8`a zfe%FHB5bSaZPw75V4DSXJ-&y<=o*KfmKM1W+xJvv8TB-l#R@0={D1kk(%=83Uq~lT zol9?f^BYVZd4$ns%Ts6BJzZya#<s7rC@b`C8%!h00+sx>y|x9*j2I(&dMRnlXX#C7 zkNTQFEL$@s4=ZZ_X&w9zZL-?mIACO9M+}xxg53eBL{Pxhj@=cT{K*5l;aU>qhVbek zXkZgR<224JZXN3lz{Ax37G4)^!vNg5j>fA8r9m4vUCpF)7FR6&`<N@)49it;Qn9g3 z*_t#sE)2HaKV69F!f^wk+C@g5i#%nYX{m5xVc9E$Hkmr)Tk;swI?j5TbL2m^#o+f6 zi;Fs4$81m%RB23G55CqnvGBI)XBR+m6}Ii5fzF==Tw$T<Ij@~l)#c5dTP&3J3N8fQ zsR?fmEfQIbrXnsT*D(bc=oz4B>n%0sOv2njCra~&Q94+zg0B3f0c<YnzI-}nwTV^G z)E0LU<w2~_L6W=2E|j`Exj~KEWHX)MVb`K|A1IuI7Qu(SY#iBS2wo;O90D39F5#6S zt{Hal7Bum!HrIOF6neo^oj&%d?!l`H19`Ui7DI=9tSzuxvi%TIqrZVOuZnnpF`hsR zBQ?w-s6rzVOzYzyoPU<pkb_5;WiR7yNI_9|UJ8;5hW>T(=fv61cKQtI%<FA!+;p8z zV2i`CHV8UH;5(V32im+4zybPt1c|=1xmEeX^BOm~II)%X+G_pv4KffEgw+bnqn!~( z)8uqA2TQbsYJtFeaassL+(!!VQr}uO&Ub42WL|T)H<;yw$B7Y6m6Nv07J0uJA2Rbz z`oW6#svEE(2)Au4Lb1^@{u8)ri|dLdpGcFp?Qgr_L4yg2z3xHSiw39B?=`puz<$ow zTl6EiZ|CrW2N||{p+OqCt?Ml_S3$TpH1`<PR-LP1x0Ybs9Oi^M*BPYMh{F&vOXk|Q z_|waR*AEwWWxh7vtE{`Y?zs<%MUBxq2c*=Zhi_1K6(A^uh?roV#GuDwXIQJE@#sRN z3&1r^urEreJw}uhjl#}V#&b_QSNGCx+tHlPx<h*cz7&MK`R`hF5YO@*2AanV;lEc} zQsdRePSV2ST>8D=|AX|m{^rl6fx*FD_!6+@dIZW_)OO*O_N$2zt_UqM6(Rc6sZ;6C zzW2w{@BNE^ncniohta^YYXTqA4%!8ozR<(nlt{Ons!-eDpFeFM9@Roa?EyWvgm>|# zDo@DRq>X%4Tn2FWr>{bUpv+!vdJ%YxGasOZOR;VairuZ85!{Eey6JBPU181b$qz0( z^hVPKPu3HSLb1N!htZ(vXPuwHvxU038J5)t@ttOY(AUG^UUq=IP-PKYrV~RDB^A~C z$}$Y*)3((EUMrk}^b#EfGT|Czai>PowhMa~C!jpkdlTi!5Xe`vCmhna{c0YAasJ7B zjB;nd@vDIASZJ@Led{ioI`ft`naAILmpH%uT|$XBPCAYS5B-)G$iz}t1nI|6eUT*6 z7%lzy4XFjscZW^*OlrBBO;|SFQnC}9-}ydFsYoC_Fcj_xnxw3=W4XOK12`y@z*~3s zaq1O{9K>6UR~9x<a=1Dx?^=CZukeL-cNa!lrM|m3>0}kU%M12=Yg)JF1MnX&g>ZhX zdX@_A6yW!&Rk+Kov0i6BSP8qvtBli}v6CC@1{{S(S~j%P*F6yRW;%)&zI+glfPog| zd4$}rLsALo2HKHVSC)ebS%qEepG5BJ#$j>+Bkf}dybFx7()GSqz}1G>%Nca#B~dz9 zXIQ4Hg~~+AfQFb9ehsDU_`!$eEJJv&;qGI`la|C7SAy9*c%ioQUV`<Ozfz8M$smp2 zE7)l=hgnz5e4AD*sL?);n>BZpJ?Ir%ofY6R)j=min5>#anXbWd6u9`$pvq;==}u)2 z0AyZ0xIQ~O%vK`!H-8;BxzumYCurKEZu%U$SXrCK4sSMKjONlNX~6*4A*|_=OeS5L zYnk)xT4}$yN8!1E`}IkE!XjNC6r>6##x7J!-AIz5?ds=9meP*d8;!`%TPt)HGyyi4 zz?P$)QisW%EDTO~@tfyTM7;1f5uPH~+{6jZbb{)$cF#);0uQXZb0Cdbr0%`6DUCy) zq!;%JF$xLNcB>F&lGkyimaX(tb6Rr`qt(@<XB^X>5&)+WgxSd%<zJrod83`HG#+%o zZ_|V=A>Y=;f9Rk+G_y~C<@t2!;mc882uH0!j`x0Su#h%yBT%@$Hp3GEk$Yt?8sA6X z@P_oc&wnAkHjTyyoL)yTzdpwf7MgXhOg6vx@mn1GEd2gyldHSIiD51SVv(jPg6Ycp z_~y6xajYuHINsf+E`R>EuNr^;=Dk9bn*YKpC?fDAk9C0{{X`%0?eD|>QGB$+gH_s^ zyJO}SzjUa^QB1na)knkz%+~gdAXIwzP_qMrpZO_%?)tFrJ-=|01)fR~@nf0SXVCc4 zS0S2+n5Gi6!PO%}C#PN&Ds1;KnsUzph<AgF=BZ`vy;*Q#b0#j-fKQ_Qn`UJI7AQX_ zW=Qax`HWpg=QAY3=sXV}$#ly2vs?w$=vRL<h0;#n+qR&E>RY&svr1j@X<sjo5KeJt zKdv*T6vpfQBVC(Mn#i`_+DzvKs^=K$bvhnnu}XU5tuAvF%r0OAS1_x)%Avtk=3Czx z{5GwNHfgV;%>|%BBc=h=>4CtECxto3J^5EA@eMr-UFw;)btvUKw+XlHFXkbwbKHHb zFzAX*_hLTxVM5>mvOacCi!#XB*LV5z;JW00^DKt1uwYk<?M<=vr@=4h0e7U=q*%s4 zkv$Z$H&DdogXskek?l|PM;R;iM&v~!Zvru<xR>_EXoto!MKMIab%MmOz>4ZMn8`V` zl=Z`J5|}W1@xmkhgK@a*g_T8|sKb~lgede`hQ4cum=ycj(wc{0%^Ue^O?9Bl1ogq| z^~nm31+Ak@q%ukc%4;yI4Q{;A-I+pQMq4gOZ2$$wWL_(}<zp#3fAg9DH_{3_yb0#8 z14rX!?ZNzNR6U624RN!q1{Yx_j+%1}MsYR|Q}?E;0G15G?8N2vq(3Y}JjpEl<$KT= z%ugG*u&s<YIj^Y<!l&Qdw_U<^$h?$cpM2{D`j!c$vulto|HZ0>3R?gxz`$+raexVT zbPx|8*z^Ws{NnW-0<YV)ZV$e$O%xmm(Z!g|ZT}#?nZTB8lZ+lFNSiie0);K$kF@lM zTjm|@YDzF|*yQR;G$(7=pLKWYxihn81rLQnX+f_iZm*q>%UO1}S%%{zxPUg!$;-OM zk>((i?Ap7f>u=)?mh0h0%`cqripEiy(B}=bTpO;OYQfX!B{(rFj5%@pSC=InxBB?* zW%s4D)qM450kJeEk5yhc!DiDN+Fb$ZSAn;DixrvdAoc+3?&F%qhFMsZNNsLr#POPE zwvaJuUBgvi2~(4|QvV<x8*o2XrHZc(kX_GP(wn!xe}D;`syKk8aAKcWHqDP<`}{3# z{Z^AZfKcan6hFS#-qZ(iRuBGi>`G@bZuxEbrA>5edECiXy>3IhsUXT69RWF>E2lF* zwLHV_+H%}}pB|9ag<ZoO4Oj%nHn@-~eKY`F57W>7b!=%v={SL|Nzl~9JE{{V<x7Qj zg`-if`<q|FJcsiK<17$$GbROYBg~W*w8P`oIJd#qd!pUB?ZPDu*xtZ3KjtZ?3!7o~ zPtr{iSXw{*0c4R__iNTKoGZ*DJ$=Keb8r;RU2b0|aIGz3Z^8YPa(s7Eyp9{z9k}2{ zBUt??t`=P&*q-P*KbnI0R7ekaGlLGE&gM(de=FLv2nBD~5!Pd|3eNS?El=9gRa>+N z!B&1Tjn-D-jqIU7vR}@1V0J=g1#ah5)(SyCi9>~LZO8fRWFeF7BRn|1sSvj@56pSI z$)nr05qP)tSt~?22#>!MyoJ@iP|y|IuUD`)z3ps?-BewE^)lxc!Rc=5v<>ni?+#FA z(Ua6m2)-)s#F_Ni3y;vll{eC@fZt6P5~Vj3z8CSz(91%un-!9L`A>3i)MzeJF5QTw zE%@1TOwz~pxBOn5>t0U#=pgGuHd_3+K=A734&=cB`ce_-(4i2W8S2l6E?}R85|<j+ zs~jjBhOow1MM)eIv`l`I$=DUY0<ZrRL>+9!)<=Os4-4K(V}8k@pYJ({#2_(QRxmlf z&q8D#dboj)+ZhN;vj-8Z_k;5Yj!p<}ary2B+sCZu(*y#9S8phkmQXYtrj;4AB0=j6 zO)S~6Rv9Kt+pN(xmOmMX3|;RN%>sJCxA_KX*98x)!F|UO?!9@<I@D^rqMunrFyg!L zMDw~Do?&b6M0MC`rv(}2VCF#YhM`W@WsdbUrM<RMTT26=d`pLJCdw{O$vbrXCqf)N z1(yPE8?;5;L=K!rD_(HsJMXyn1h6+s**C98uvp=d23k{3>skvq3YN^1_#IaGWjJHk zYg0QoebO}uU2OF+snGFI$lAsN1D_M;&`(@DORSTmnxJcp0~dHM^s-%SsX?X#ZE+BW z+eE|0ndE^dapeTPNCGEoy_^_&nbo~sHH1~(J4UqclUW7s9niI4oNuC!YVl6Q{<RW( zO9_4}APQ3>SYY*M-Z+c|e8;id_RyUZra>}xoVkD$|78NnHi0=!^QX4CMHu#-THN=& z|0mP0{rYdD?|kc9)7a?o^iTiUKTBuMp5u9RSN6rlMeqeenu23ZZEwIM3QOavN8`1N zcJbf>%$w_a#jo#4TS!M&Uu#G=Zb|ncu!T@tl~I%dS@0*a9>i6PP@!<w8^N<)!yei4 z%RN3z9<`tKU>l4I8sMb@u|8-!Ie5!D4mxF_0}h10XrAl&_j-1G*thONjE#-OuHXjd z4hmLX`iNe}nHfSwSMLbgX81ll)xOwZHRobEkDUyxd{3IUKkTC3&UN6*n*0uSy)^F$ zdZUlmJMcqKS-tI?br|eVz5OEz5D?VN3{BIHPW=3?FVDontW80?MI*$Eii)Ai#iF_m zi*Vcu!>&Mt=}WM@@YG^ttHP^<mZfZ|rr)IMaV(}}vCX&HEn4nS5XqN5=^e>AR(g=m z2H`y(hFnF`b)hNG2(3MNEz8et6cG8*UPj-$HUoZ_VhrWl9D(`5hBX+ATKW=VzGUbK zr*_cd;Pno|s7tZIp26T<{=VB_PI=8O+=t3<CXiE<X<Rh0Cx+1Lt##SIvX?yF<ejtn zAQ&mNiXC?z7S|S_qahYa_a=ZJwk=V=AK?6cpgqcvMi^%c2%|BEC_i`txY>wB=niz9 zTnMHgW5-rLoSdQ9uRp|<{)rc{h4x%YpN9#_c4&dufm0AKDAE4f3Ty|wqdf__f}bl! zugLYVRk73Zo%7gLgxlMAB2c*18-awOR|N-_0AxU$zi_w;7{>7XG%kS#5PD_q{!{S1 z#ROm(rj^hP3dIwZ23MC}=9d^{j=K61SqcH>(V%=8HzW$zt7w8JxCeU>CTAW4Nnohp zgKe!Y1fylr=pqcSsKGoGUQKCozXLWNGK?8^<4ap(LZMK9m*9KN6`TOv?3n<jKGGBz z8V7gik2x6=%BE(9V0pS2TJM4Jz%VNCOBL~L8Yf?wZva~dqDm<&@vi#)t^CzIAjC;w z=5@GjrVjPJ%5<S}!{vK%6xT9y-b)QkE1cEKx!dQ!d0k*TLP7S2G^oa)jZ;_~Y-tK; zCjxM2OAv6|S*SU&D34l~S`x@ICJx(V`_Dl4`p?c|Dth@2D0JDR_D6rbI?69JW*NH2 za<%SGLR@7^U5<<YpSt$|)AXngbgQRx_w;m_q{*5Y<t!ng2m%QK0%4M6z+{85En}N& zul=mo&+fgu_T$~lUi<DY*sx{+lY;<bKte(iAds<ygb+q3qBzoMa_HRCVeb2$`l|cy zf4V10>@_vh|CcJ9I(6#QsZ*y;(N%Nba|EOy%dcI^mD2a3-O<FT4~^MeK>^1!PCgWP z>>~!tFU#@bpaj1=ffg>clNRlLCw8a$o29S_3Xpm@*?~592@Elg8Q`;mN-R4Qi)7RF zG*RE;C8=xCqNs<@h8JG?qV&WQPp0?3|NYPj>ES!S^V`1@-(rGQ0k@XJDD?Ad5D!IL zq>vTQ@g>7*66B;PyPxH9abP{#n0Sa^HE5EI)%MS4Pu~*f(s&Vet1P3ef|K&@Xs+VJ zzoQM)X$8JCWR;oUgj>EA(+?`vf(@}WBwg8-YI<B^x4zQzbbj*yl=FnvQE((3_ajJ6 zj4%jd=i9+}(TFe;E~fC!9wr{Fo;2~T8LvL7HWYXjG7JuP9;DJs-^!b-8sVw<glDxP zY;)nOEgbsOi$CVY9gB#AB{JiIdmb1Z@SZZ1KKhw!({bz9rb}OVNo1HOK+qv8O4`7e zK2@qC{9#rCUD;=?u(Vu1VJPuyucj?yL?B8+nIjm_avc|(Jo*Q^XW@2|adamNfYBxd zG1{OT8h1=m`J!UUcM8Bxr0uJkFGYKqc?8=P+%vHjk$R3<fSHP>P=yfGlB?p<KGyzV z$n*>~kWXlIdF_|!Y$Mh$_6M{)>+&RZWr3Y&ceUG9hS{l5OFdPpS*PW^SMJ!$v;OzH z#DO2`g60il;IRoeY4aULUYF#EA1$^R=ahMeICu5!XmOvb;)Jy_0izxg^Eg`m5{xrj z`Vse<%{f9yWAf)JC(;|YA{DaAkog>%-EsOk_*66OpWhEl;5GYa*sUZ(C=5x`T#b(# zJ7ZN&f%&MeQ!o;3^VC|}NiEa<tw8D$fF018`Y<pwKsbIk2#=?yErWU4DTK@5uXbP_ zJfW{zZFn_*P_w%XcVz<I1w&fJtbQ{BwTSWLwn$4xjV$dO6f!#)6h|o2`ag~EyPWcR znRR5XT<L%`9E^AvWAkmy;^c9Di2*NeGsFdMul`B!CA0(2D1yA>v5@4N<ajQBwDPyw znILJhMk=Rt!XOQJOfD{RrwO3s>opSrJM7uWw$vUxM-bnecA_<>>e>Y6lIMu{OZqBM zjW93u<krm<5zpdJj|9@5!klsaL+Kf|s>{)CIw9ioa~`7qQkGeBIqF~^X=E@~7zhCg zdR0JdY3gK0I~#Zw^uRc%Ih9aLQp)m9uO<fRb-pTE_crqL@CnWZiwTs%NC}oZN~E38 zU=N$Y-05y1Mv+g1&8*T`6)b-rt+CB>;EA}5b$a`-@hocwzMLT3u<=d7*FK=;Pk|R1 za2CumL~&|8%tIa#$My15!1et;3K^=F7c~)5^E-@|bYyfijg07FVR;3EvB`^ku71;- zBfogTkNDDm?z`Xp?)21CPo<&$-RZa!P72pS(f1{yD*O=};W|1%4519@-VYD!O+(FZ zf!Mcsf*RU4kRomkyRh-K?k;b`4yNm^U?9${cS|!A4)621g!mSOR^A-l)!NL|=;-o@ zjx|Tp$eRXYY@;7$x{*I>s%=%GI{erV-6*-gmiQ{TOefyUDpV9>LNa$1Zp*fv=@Xy) zVp@6Z^7Q(vu3}>wh(vJE-Q1>4o71(|emPxy(fR4p7hDJ*P!K_ILlDU#I1^u*X$+>Y zhoyqiNwk`LTYyk5?D7trNzzGrX`6j%`_7%w&b?^;n;38f;$QB)KXrF?@?DKSUTzqF zh9_K^bFYX4|7`3^KDt%&ZPcHu55BK$UtiA^;8=6Lp7Wh$$S?H$Yrk?u(02w&r*#5l z6q9NX^zkISLQc`YK)mB)&?{F3Bj4u$UuC6rj6D^aRyD*b6XO`>RqidoiFmYG0~7Pc zrmnD&RdCkbnH3FTIuFf}-Qm}$D*jnso{REq!Dldy&_1^pf>vX#tfQh&Jh{QXAD&ZN zmaD<iNM3uc{UU##z-`?S3W!$zT$i<_XU93(YTInK-=o_-^eUS%YSQM!yt9p!L;C2E zmL$KE$9XcG2WBil)+_#nGj-1ot*6I^e{uxlLQ%$Ub^;3#%G2{^W~N*`yYYD#O95p% z`Jldvt&{!bkOHp}htXc{oEn{8j>n~P*vZBW`$%hES1*$*r)#HWgOwSn?EmRX*exB) z%6ealR4d!#Y@DmRwwIu_ZG}L}ck0U0e>*-Kv2$fsu^M6b7zQWZbGf0dhe2+s!Y_Gl zrYw&{)~3eu%Oy-T#CB{A%Ln*w$CLQ>AOO4EBAL0Hcv{G&;6=P0X_{nL@kBI4V7jKx z1-6=3p?TIV$$HEb24JRJn7xhA;q3_4+2GZB*l260lkBq^1EU=16Ja+Gj0In&s|^wc z{@AhmbNN}}uJ$WID@vvS06+jqL_t*dJnQbu<24;%-AHjbOtmhTf3=U|Fc<?BFLufW z*wPu6BJ^(IyDoynBTW#VDcqp746hC`+pou4$>iBw5o&A?Y5Lg)`=z;PZm>@};%NcG zZUd9FMg;ycL#{2S^t;-3bKMK0cDTB3+XcaJ21p2Af*p|aU7=BX)DD)_yBR&DHNROm zS6Lz+&oV(MHfH>*Sl)F>R5)xK8Lpb51L%+Z^(>*o_c63i{m^PJN>jZ-7*{x~AGZ;N zSB>^C+E3k(>FbyxBd+yWj%}WB2vgWSbCS}f7d=1SeDlreH-B?uhEbTzn9$qP6W8*S z>tLO*UtGPK*Z!IROqzJX&(dYftJ_K-U;xp6_d5LjUViDNF$gHgRhR@X8TP8^fYJKs zF=HWhijxE_8PL=W?XM>3?n@|mi*GVhX5b~C3W)#zF2HO1_?NMod6|A_)!@3C5?V$C zJ?mk-+F(88jZTadehs#Rn~O9{;%(~fK=|Taq%}%)Gl}+W?_huW*^NI>ryX}<I_K;& zP%zN1?KBLi4?g;MI`fRvB0&QyX-(LhHnLYj!NUoWhp|jx*3#TD7WS5{d{dJ<so+9; zwyAjGx?q2E`o;}k!Z&kMdehafPYW2E8lbhF9!w_?c+?O#wc!PX$>=!#c6-qb5A^Rz zL(H}vq)V`Rt(XW&VZZp0%ZPEE62-l^Hi$kk+l}D9(DvbDpp^HXiYZ;%7HV~;xT=M> ztL5~$FGL-vn=Zagt)JtjMzoslEocER2qsDcV-S8BQ^WqBJPSP&;g>E*tF92c5nkW_ z@;K%9KIm(l34o`^>Xphm%SUYe;FHi*2QJ+9Arp);F{q^g<0;T-pE|)wG40_!qBh3S zqshMX#Ln^b;5KJGnyKIjfX3Xon6`Jr#&pXcUK!SR6s4k*I?Wi&UprkrV0eG15MD8; zpDyCUzPG}}KJA-HFRyJvesoizxs4;A!C|@g8><o_U^BUdE)Od3O3-Rvc2+yQk8AGc zo{mlfN%%I*4A~zF?1O(V1a2&W-UIX51>ko0+E6-~??mJtY^`>(B&zmS!dk(|=Kwzd za(0u4OD=B4S%qfQgDC8%o6*1yg77v5Sy&kwPoz9D)^tJv!9SN71{FdfIPHm@kvSAu zUswDGNH0R&B-XZH@|_84mW_8fOv?Hw2zW4t=`>b%iAY-?;g^w=AOly}-VYtRVQu=b z2?l=!+2Sv=#IL`S9LB62BeP3wdFz7TS9GIoP*4J&;bN*T&M)($^|RK2Q*UZ;YrTAw zX)i&WyOraJ#g%EKK~EX;zy;lvJ=Xz#5-yM2t^QmD>k)!8WEoE3nen<=M4`|bF{J#g zg6Unp>}f~vLSea=%|Hsd1;66UIJjz#W1G8KP1Xij#Mjo){@cNXbsZWu4-l{c1dZ`@ z+I%54sn}qCs6ynyvx7oR3VESuWB(L~!eKB;m~YT-3K1UCpyu1p#`QQ;wH0dd`5z2* zS>M9+npeF%{oThun=ZNJ;&k%Kr;#=@RiaFXT1G7&Fvxffeyja1Bz~$Df)$PociwqN zy8Ets(!crRKj1JGyq>5D0~qDr$hE3VMCQj-^02*_ISjK}gOd&>-=a1P8%|QKQ%Spr zzFy2v)Cy|@9Q0o@oaZWjGKBL)cowfqmBf~1==RD<c9;b)uxb`!5C_uITtPavE&Ufh zUJ*o9btsg2ymAXdQ#Z5~Aveo(HZ8b*)3*PHo4%7atXq{9^{A0$=@Vhq2~E%s^paW- zNMQoIaoe(O=Wgf(JKc7?10l5bbh`ly8Xp`;Lj!}jutSg`k3G9~rA6I~((vF=+Ol;A z@mtcCE!)yD3eNC#`(rb34Gj&a9lN*EM<!GEqOP=PQ4gjvJ=8#<*A>mIkg)#tTR!B# zv-1~)$-@fL8E_psNaN-V&K=X3Y%G9w>Vr1A?bXCens(A*6FEuo>O0%iVx6#RhF~t{ zsrJ_Xs>wq1Sjua{*0~v>UyYx(^W)&#I8J`Gy_ZKgp8qlj>%RwO)pGXRDBRkAZC@v* zx<u8K;n9(ykTI4sF_N%0p`jE<j>F@w&dq~>FmFI6(8XID0`#*9!l_WWV_+gZyaW4m z+CZMQm<^K~m$j#rcxKW}&Ul9#AOXe(_B~)4BoCh9i!*%sV0l?udo%X%;6zUzK{vc} z0_sLIeHDl18D(Zsz%Br%jg1{aPkOdcL#!=tD{@@ppZ?J`|JQs4iewq-cC-+SVG_&P zDY1W&r5`rGxWPr?%o*Kt9n4aD7uEdpHFQCG>B<t4!fh9w$)$izXk>Q-V?Rtv1My=Z zHapK#%+58DFr7lXyCS_et-_9eAML`?&=8*++dQyBI4si+J|qI^n6X0@0<cUj)1jYT zrY`Ls3N;zO`T+*Fz-Jb|vo7wycSh*4Yb_3B26~mSv*>hPg3ygvKZD;m?w|}r3C0r- zH9rMJmnjyy(|Qg7B~Z;V_9KN!{Lg(TP*gdWO3$k0b6@Ioj@FNV;&Hwp9a#4fHBLk_ zrqT6B>a|1R?KueMBECIcC^mRJNBA~hg+a27dRP|)KVd&uy$`oaGA-eDKyzoh_)ti7 zC%3}8<rusgZv?z)ZsX9WFjhhc-#oZ0Sz9zil{D`CF-{z;!97{c3JL;hk98+ChW(>- zt41h<ePX&SYqoBt)Am?~=w!}6^U}<sn|@#!MJw!j%`r=tq-VBmPoMbg7t`{keW{Nn z={8nXiXdB<wgQfPqWl%$%5%9EMqitL+xD&LmRoK~|NcMy=k(4uy(YcrqBH2v2tS-K zDAjrBfcWzd@B&_87N0!Ed)Pw=$4+(?=EbjlT8`0xMC9?fJ6V~qzJ51!V*h)vAnta- zH=S6!!X<Ase}zwj`MZJY+0c;?<R$OizSc{Ppu)PkKR2i8v`Tui-TYo3#EBo|WqPFX zL^Ay|%XOVF=rO?6ssg7T7@8Od1_uYzx4(CLy7a=c5LO4%j$Qrfl#`AREv+Zr-G1kf z()weMO&gCtDawCl+m7^)U;A3R@y2hZ`+oA1bk9BaU}DgiR<Bxx=Y{sPeakcHt6%zJ z8XO)@-?;9Z>E56HjBhK_=Rf=Dv~}k$G+X28#&6w{)~;P0$5emkySIjL{ov0Z=l!?S zcW${kZGPsND03mU;nryklbUEl>S)~+KDDncLAsi2m8N{Jz1nPUU^afC+uHBt-g1V< z^pgt)St@RUevrj!mrQHMGma(?o=PYTI$E(E<X!bayvu*QO2Y<s<13`p2K$~eh9(ST z8RMR?LS_*xr?g>hx}&`pl<B;=KM?ZybFLM<b3Qq>zqNnH%m19bH^j=Uf~(%6#9>aA z%h8O|aa@xsSCV^C%6VAKkQ!mqG$DH+*43pl5BZjRi8y=(&1Rd+_7ST#_gqH#E#J$v zyf0UqahTPHA3ue!<d|$=)Ya9T&RX4C`LND3P~z8LXKFq3MVi}(e3I?p=Z9@3#q2xt zlr9u(t*bR}MA+5iLK^}sPtYOeKp{-$nW6MDjPkOD2|x#ZUUMR~!=nhyv#D=(S<zUY z=q2OxFau2ic6*LA|L|xCGgNJyg|51!&+-vw1tAplc$H9UgF>du0Fw}fo)wnS;F=*g z=xtGhTbUFrM-y5r?CwOpt#rB+6}eg^g<ykXt|k#S&?bB)$|!UIy@Nkvn78qDPA~m6 z;H%Lzp2sG0_1-W8r;D{>r}kY$nf@`Z9ey#mEq1xu>MD>sp|EZR2PKhktwdYBnEL0k zvOQHhOUJu;;ZAM;g`iLp)m#gF&ZaF>0;&(rtX*>RONn0}XZpFq-!xa7{xJ8A_-kUL z2wXJ?S%x_=Hi(9kQELuZ=Fa8l-`c)2g2;h&H)pG)&teZI*u@5|5`@*wC3+<2!dA9a zy?j5CtEg9ak<mL~C}hu+bR;>=#Em>55CuJH+&s%*QN|f-{A|ma!sgCF%3%L-fa*o_ z?S?AxBMsV=#t0JQsz5WsNTV$nq!;uVgE&zY&b5D6I2Go47-drKYM<nrLbk$^mB{%^ z?O70WAPcQfHKIXcA@JKy##IyA%%-)Rf)@nSmQdQjLH+H&_NsKk#`Wnx|Cj%oPCoV2 z^x{h{N*7&n3BvDUqJvv_MbXlh^z&V%w+Y>xfsALKeky(cw(qCgZoMNty=_zaKmX*K z^!(G0$6XbhefTbJ6vCZYyIC#f0RV566$IU}?~%fRf(m%h611q6bO_vMvlVb5pAsm3 zVlX3}hgfu@u@NV=buX~*2F@qhT&3xjd|$rz3keo34E#9>>H#KU&G6=XN0vAlGG5Mx z!sOD#KKUKAsQHWnvjT8e3mbmIJBxfd&_115dQ>ZW+{TURtTWF{fBye`D4lug3F(y6 zPlMkgX4($$bbSzvjt-`O_{x`|seS3a?|pA-L%@CT{-32!eezSOuXj;;{`nUNpWL!z zH|0K%u73S%(y|q+!mQyf@A!@MxzBu#iBfZV=R4kxCV4Fi366kAakP2cu5|U)m!+3p z`HHj)q4<A&<Rj^hJMKuYz3R%;h;Z8vJ`^Ucw)ND*#7xNa>-*ZbGvANy&b->#NEVy) z5Fivx+pq<9<)$`xIE>~d(x3fAfo^t;9NYY)-C8Yg{*q(+-L`S#C@2Sy<Y(hl!B}D1 z1Px0gHJ?h9BfgrucE&Mo16-KAkhyS_5apJKnyWC3Ko#z>ag(?zGvy5X_FTcY@)@t< zYCS6hwZZq=@EW8$SIrIbLN~N!``)}P?|XB~y&~VYVtS<_V^BNu5cV>zClCr9<6JE+ zA&+^&p~S|fc2>OgcF>Ofc-izOJjNSic09?LB(6?e){>50!bFjB%F0;Dv-Voxax<Fa zK@*MXxFc?gT;%&Q7S*Obocjqh+=fz)`3j$WuT2C0)Dgn0Z*?6ft*Ff%N62jv7GlI6 zEpf*EoWTrbx>FeD_c8d(R6G!37bXpP$=(<QG4&h=8&~Am7zzZz&?!T}B?yha^|bIL zYX3pL=iQGS<%zFGZP`4<M50k-R#TzYhKWn;$QD`7q_pL=2DRYxDa;kr1a-0mY<jiD zLzLkVpn<vZjb}ruWsQw)HJO;_Qam}dH;jiJuR?jzIMtTty>$tn!8D4e#SI|zX{YOw zoZk&*ZF-+A-6N6p9N{ojI;t~5BWPD?n@w^K<RlvcWEiHK0ngbqLOO|cTQr5evO7fV zFr`B|sZm%~p)iw<Ob!TqwUb(QiKxm+YMV2dAv0F&))rvP=CYo)ZrU(5H!Mo~hOr10 zu~n#ryY{|(KiaFb)Br7uVIZFdy*@udaS)E>V>bep2)y4Jf(Wj+DjUP{=}4}S6m11Q zz(Fj<97*DN;ws=cz}O_xe=Xh=s<jWDVWIP6a){Sb)IJVm(XOnu35^tmlx9<-*2=5B zqx3sT3s}Ur!K>P$fiajWgPg0)J=iAd>$sWrP#_DOpcaz;;*WGvM4<}f=-x~rNN4)B zK`n2IYq<smac^yBgK)YeSAu=G79ZtH@CfWMUVhmH>C_X}ryu<AuJozTem;HR?>?3; zI`5pcdd0G|cKwF5VZ(7*_%0c8E#x0enFlo+4?cK*+Jd0_$m36^f4=J{2tUixS?8aW zu0HSbbk>>^;xtEH=s4gQ<bC>G^+ZQu)a#1ExaKq-G=bb2T1>hQJV|$Rl!H(dR81Dv zQy<9%mdMl}-tXpEXmM*>1>NzE{}II1D4LW$C;q&VKb5wvq8#NV*K4Mvd}q0S@oL-p zpr@2!meQ?F{G;(g%UggXT5WK=TgU{|C3UI=p2%-MNFu%~C*~>bo4@#BI=~HDA-<h* z%E@SY&q-hY`i*JXs$=Poa(oi<UtxONwr%O|yYEha_=kUhPvv7`v-G*oJ10Hx@T2MW z+wV-zKkt0By-l&n@%(en#`gClP7$NU7(13MSsI%e+uK`{r|ETYYTqbY;L*{sbSe|5 zwQJYX4y;OcE=*@2Y(M?flW7tSlzdShEwq3f^y>uHr+Dj2`b&PO#l+nAra9cu%(z%K z5{W4%r+X+$y0BRByBB?t6AM=gq@#n;hk}v<EzL7ci{>LtWmB!R9%e|@doB@-=j6}H zE#zG(XJ)<~NxgEa{5whi_n?e+Xdq5lWmfD8Q&f;BQ7)Ow_pPtNi^pcDg!1H9Jtseb zQp}^Rt0)oAAGwm_waO&DSonP@3N2lxW)5Yn14F4#<VV@PjPbkS32KJBXcx_P)N;xZ zgh*{?V*}bt?4U>WMgSMt$KD?WyM>&{<|%&WDKB(c-!^o!nEWWpq6~FRnnARpJhN4d z+q<wOov||4V|jPpR}~Y%13`{AfgA8pHlz7cTWoQl*Pe0YMa>V~IHs2MXhQA@Gbux8 zr!EWe?QCeH&n)27P3g@xlO|o6Hyz}Mw%XJ3z!xVZ&MWYW6qkl{Y_3*eSX)_U|4|V> z%0PaRLBKm9n7w#!uqa8#=2r8&3Srl!%QlcYK<yOLMj?RxRLr=G;exs;+lE?O(}T_Y z`Q8D=^a{(E&c|TldxQDAu}vY`4P@(B!W3mg5ZTYQuc3@GAelx2vYf>X4r-M$6-8E& zS1-##o&=}xy_<#>@dgLqNY7Q%1&0<-;c*!;@5;=xW`+Is>Tfr=k8i|XsvQdTs3pS4 zy2@XN)XnW(X>gnwjzC(T$RxBa&^FBF-8=)+DgO|DC>yD_#Nr@ezO9Ue63sN1s;wOF z?YO#>X~vnlyPK_0Y%-!A6Z!~L;))ES*y_hr{NtNij(h&)UY7E<q$@7Fl-<@c1DU7o zlwno4cNyNyV>u4^#NBfeC_;h64KlUCr;M@cEe|1h07pNXG0|ue<@)Vx9BSkQCr=?W z%>mV|&A9H~xMK)xdP;b<!mcpO0v#01w+!w9Q%$+F67ifsI^i+Z(FOBu#y)ClYA?9p zNqfF3JIlBIdf`LjMd8Y&d4p{yIcigCbhVV4IxNCfn47Pnjrjm&<w33ze0@JF2tY;G zweRyVQ2T~<qF*||g*!9yaT3>pkZq1;1Mg=-&%~8)KGz2AHOJ}u>sBvI>({<Az2L(0 z(yrb8>7mD-#x`?n`s}AalOBESF*JCXN&!!<yEvW+@(YhqJ@eGl(#DM&)9EK~NN;}K z<=B6Ar}n-UmXPs5N;wmhUwDhD%}csi!Y0Wv@aIN5`EY2*{YDKK1Mwe?Hjwm>4UZte zqLE`$;=~xXkH90^>gy!!Dg$oAy_Az)g=Ym92WMDK@bnd|9+hBv`QDKSF>Ejg{#X$R z3Xm^UL7A;K=YW+TNy>h)A3@%>_sD6SAj})GRxtC5kOS$Pqx?xC;?(1d6&eygWI<sB z1vUNbPO$gl(#tMO|Kq=ZAbtP#yV7Z=oET|LXPZ9t<P)h6o8E=E8Ecj|u~(#(UFs*S zUzNW6k2k>gHFXowQ5eXD&m&BYB7BU(3ms&&4IV{NG=i6-A%tD&%Am&I3BRGIXHnX- zmqRGXD)Vad<O3IjNi4!(3SWym`}CoL@oVvXu=uqK2g`F3(ZvSmJ$Y|XB$XWW-oOGN z0{y{Z5KdW5tR|AcDmYZek?^F~Y_HI1RlO)9=#+kGz11Smng9^P@xDyxBf(+*SVlR8 z)qOqN5t=-pN}0gbTfdvPa>i0uj2R~_+xODhN(5Jr{`J5s`$b+MErkOoF?AWLOkf?{ z<>XjxgXKDuxCg&lo*tW&KPE`;p%*UM>zTp7QD9f;V92y8jiH61d^d0D*LD<Pd0YY4 z!pTtAUxml;#)Q!LI6R1rU}$>7Jb=0i=dvCemQWN25kKC{{FFTOSTdroTl!eZKirG~ zM`)@UD>S|EWWrfQJ(JZD-`VFBp2yj&rwk>&lxgfF-j|@zI|2^I*xVNQ0|)a8ye4vH zEx~%O`zBm!45P@`KY-p1mLYg4bXN0)QpR&~6=(%eU2v_8CPToZBn`PWU1(v(V32qX zB0mU=t1icmL7>&&o!Zs1Ok$qW-YQHS)XEBXG+LEjAG>Zu(|}z6crI7ye$1KR2D~S1 zfob(a?BXNR!AND!4x-u^7J-B8A~@)1>aYY?D_sbOZlY754#Aup%!Bsf*hvh!xsfqB zlgrD9&JJ;T1Ci^KZwHK4LexjG8eZ=MhFsM2ukgq)6++vI^P?Z$o$hA|P9{4QxNws| zb2{U+Q(4YCofD$iA?z#?ytV+NQ*q=0knaFU+d3l?Hp<M*kWzUs9u;=o^*_dltSw_J z8$Q(DGE#-6qM<rXX9hSDL2wQLOzG2Ok3W&Ved`a>OJDM0k}x1fInFc{w&{4{4-IM~ zgQZJoS@_M2$8o~?3+j=Es2=Gf|2ix>i?-i{07J&Mi7mxGrf4I^tEjv6ml<mx*^PV< z4)KW$YG|87L!_ov!L%%)A3DW>F{1vIr4~-jr~{B%DZ^YK_|CdHiM0uwr;zk00<;GL zn%RJo)0;^yw`Asf%?FkvwGAQI?}itLT_w>3u@noh1c%PR-3$m#iCBVyj+!6o+#TDt zfkLTuRCKbh)dt^(07bo~GcOT{s-|=wont?pwM4P4v{7`!l)|L#Mm90wi@^*YVSiGn zF|1v+EUj5}OgiqkW1&|BnKxWTSwtWop*BC2&d+cpaM7;%-a05vE?(G-+dBqV5aW*i z36>5!=+9-4u#DPZGAq+WpIjO~l{1X_Z7w?CrA%!+*CKtmcsI%fV*7w_XP6?Jnv8`> z9O;F`HtA<lqKQr?blgFEHK7F&_qlxHnjjLHFp?gC;`}B5nl6rFrQc3?f)+3}urVp^ zXBid#+S0ltgzLZ?acwsb#c^=gCR;%~CV~7|?2sB$CRG(_)D|^;ZylwH(Qvsp1EcNd z6uJq5Z)!q}0avOynyKRmW7+_XzjWEk^eeA<O}hD}o6vS4XmH|P9=yp1US@r?S#@H7 zX>GJ;Mu(*mD%=$Q2>6VU>_7+Lz$4FI4f5eKB<FU|H0?3e5y-NEdM{wt-sCXEDN$Jm zh|`J6^u$bh7qEjNg$ymV0x#!(q`xG#Z`B5il)e>$`#`W`UnRHKMw`ADW_hJuR+xiV zk*4I!>sdi~HGi_-G>Z#fU{#4ZQ|1pI)9jeO424qkty!rL{U8j=2d+}P2S*uUfC}xQ z0Lzx2`px}49&@f1*H%+`<k88R9J;Ao`A5@3_xy+=<q6^GCr>rHDyz&Z<fHmZ9vaM$ zXWFbhuo#?@w@|LM6ebD0QK0op{4*|Ll781e)*tWO$R>}`=2bg<k8C#XOyG&f5mpvd zbhWABC$6%Kp*H4BntW$`$MR4b5z&05?KqJRq2IK^3fZFc;MizjosZYm=k2p`bDx^) ztKEY3Ku&96vzpi+VFKyugk#7Iy5TF}pcz@DMH_y;9aP{IhXTDF?l=O)u40*7Rl7%8 zT405jxgmNE-ezGnGY)4~iz(X;UJ}s)IAtrnMxmSj5kZ361E-(ZKN1_(0>08}d|Sy( zM!&lC9mRM<G+sAI>4Z>4+7k$Y`zTZI4vQduXZAZVk5FT4r?o-23*;(1OhK5n$E8|q z(ZcG&ybUvlUKp)H^<HLap6r%WXCY3)khC?o(4HqVG?q~i64g+&Q_p2+l<k($iK50c zKY&9#7~=?oDMul5o1T8+(e$Icf0|zZy4QrzYRU!<Ao$WZZcGpU{IT@LUwsV&Fb>i= z0mogjZs03~Hbo^Tn7K(>O$h#B_5d7eXq&)^0_}eA@q;^lnC^e@=jqq4ehoW~7tskY zS-_y&SzRNHJm&{~tS^MW-^mKNZfk2}*^iT`1eBm%ZzJW*q=CMOH_0+h!)Sk6;Jr)P zG?oLIv~e&-8=21YBTdVIXNQLL^R1(41s)oD7vXo4?+OHVABEE;*hoLar~^q*r#u!Z zr~z6CCHkCY^)fFN8-XyZ2p@P|X3c6YW_^zohyUXMU;1C1JXBxa99apKLa}B-#oQ%F z%ka*TWZqZdrU`lqWXusu{F$q#*zq61%2Rc$f5x3jM3Zqm{mePfGH~xC+qUsrOk$yX zCp>yiX{7z<qJ8bn9Y9?^RbyL`lts)0@|-}c9C=r7Eqm4gzza8c4H0jVzEydaehvE^ zbqV?*o`AOL6`_f=KiU>*B5jaX1kR$7w0+d3x3x@$cLW7Fm$VJ$JFDz?JM&|y8CTFb z_jA_C=yV1T>S<$wtT|UFLVd%c{b?(7DNZZ!Gpzv+|06`*xD!S<w6V~GAjp7)Mz52} zirPI__B5Ap0vHWdU4*UVlXI*2C1c%8O->F(9VZe0np&2E{N42BExaG4t<YGJfq9sh zxERD%w7IfX^_b~)giPza2cl`mrp`WFiv!ceWKX#e1OYC1q8%!%`rTj|nn}R1$OAf} zu8Js8HjySl(ivx*nI63FXX)l!zRNShF~p=0x^nfpv=y!XI7`M2ywlvkiT9T6yVJ^J zmQrr!)6teyf%fW7@a6_r<4T*^)|<hW8K*0EMwQ=de&Hb^!fxG!shOKrcpc(F;K+9J zC~o%?IAJwX&_k{PFXj(XM?YJje@7THZJ3b05WhJCVRA#SLX;~sPPFWQ^`WG3EYpLK ze6)7+U44Av4VzwZU}vcUG7IAheVeOFAce`J4S{1SumZ)`GRpCgD9s5yfX4AU%N&?J zu=*n0wo}2Q%Ba=I5NdGyN$0AoK{|BIUe36vjqej^`Hw|OHe2|LsE74qdGbE@Dar3V z?alo>hAg`jh<u|Y=D4FzW4$3vz;irk0SznTxxy=51bi|Lt9Y2HYJ+@8jqwCRscz5| ztmhLprFBgeh8WA8*f!%<F1zf@{877E%_Quvj@5ccnB<-54i$1uoWOTd7Y-w0^Z$H2 z()XUoHU_?(RH<cdq~4v{C0AvM7jcIsF5>w9paQR%>KFEzi6H=H_bW)>hKn*8sf6cd zFbTwre-XiaBX0-_e-JQX2b%m&<mhu(ZLfA`o?a41>jI<xbo(S0G#46|kAiqlhVj_c zdSTawP@q&>+{(S$);<JFn@978aR^^cv)|pg=lSlN5qgJ0^OGBqBn47$rbB7s40G0E zXzH*KZR$9t8VbysTnq!RM&x#)U347lV$fzdj&KAnwY$zN>)|(^`R~O4<PZ!<LA9G> zE?ZEQ$Y_@>TbeF;!6h(jq%kzbT`eOp>t*S$KKRLW-t*2%XP<jsT7WU&6a+uQQEcH) z67Hox$>w%cn+&8=FoQ8STxcr;EH2NXNRLjT>z#kO@BZ|fk(c3AA3;}wb5cQv7)2$b zRzq#E8sKK!z{ROU<PpNGBRXLLTKfgGmnxW%5$KEe!rqG3s)-KhEO%mL4>YI^4ulS_ z?8psjhRECe4>uT-q~J_umW2t^n#InciS+o+$@IK+O_=aNHw?lXmt{?Yf|x#f^?_=7 z^NCXVQTyUj{Qv@8wvUFvu;Ig@O)YMKN1ctY@Sw1J#DOHt8KUmeigmW5N8V&64VbIf z9H?RSK+%NUPs7#~+^YF18rAHM=<s1Ori^$hXPk?h=T}^1+~Lgup6I4F%^3>ZCKDY_ z9=4*HT+TAS@l9utK`Eq9@#n@ilx`K`{mQor2iDa;aciHBxCH?@YNTT>7{TmifR=42 zwO4o@+s8n`nCkJpB@~8jIt3@&aSYEWZYUa6i;d7;@-U6?chZfQbRs<QtoGNz&^9Y3 zM#h^j1eoMuJ6mRbuq><Rl3pV>Y9)<lxgNp3tc$%23cY0HI|ULq6{2X4XK6Ji2z)m$ z+rt5W0L`7J4Z2HTT8`7(syOCf{%rbs^zu1^-!i^jmPG^|+r)b^<NXx=+|eaxT=8r` zm%vfHn2*7~^0CNfp37>M(HPr;^IhDAV8pZSZQabOg^EsALUY8e@)u5pGc39g)PR9D zE<rxz<omKKUY0)o@xM<ycJ5#z13=`sZuN?E*2x>wP2c&av~<a`h^HCL%{SkIkLGv7 z&p5VQ^(7T9xG-m1LhmI@m-M9VJ9a=P*>+M5lmf7mUg<7`U0^RfT_Hn_RJNm4fXF<< z`23HjfSmH=1tIxzIar9cAcA0qd$WT@p5vPWt#uP`6*?o9^r9D#CMNow^apLo18p^V zIC<2ZK^nH~f}@%!acjQT&o)(_XjY*{<ftp(?59rVguspE!F%S*EOI>fkNKLv<@S=_ zB9=8B^W8tAJ5o_Au<p?j9)(#=3H7Gn_$Oe4AXIrsIY@1<{`|ECW*bom&yL-0ra#&s ze4hI1YV$5OPik<{ra}mLr->6OCmG8PVyPK<!p&NP2)ueP&^v)t=!8qbRG;MwdEd-L zU5^Qwsv`OHkMG3G5T+56dO%=2_DyL6BU<%w>OG7S%JNM!u4x7DH5pLwZKiDTI*QDo zCR&@}!aL1lzF<k#s{<L!`+X3P2TN#wJb%zEZYavO3<c{Ee6x1}e}P;WQB#2j1aa^= zXNyQnR@6?p745G4!GUrQDsh<wVhD^Agjlm*aIgpo+~aN~zR++2pzvuUqJ~!&TJVj~ z{tAw8`Q7CR1tgI%7pT5-nL=}kPM7paWFyP?wa-=f-GspV*wk=%M(CkOtL>Grw>2Oj z24tD<<axWL&L8|LAq$fx3%Yf~Dj@s>d+>!bS392ZBv$+QQX1U>znxUhm~4~UU|rpr z?Xs~ruo7f5%?n+U9mdA5xdkjj5Y2emIPt_2Q*U<{#LdhFlZz3E{GL01n6CfMZQ&oX z6T$W6mtUHmf9_eSjq^<hVAx;z$LkT4m!RnyOV{1--Sk`Uej8fiN7Ajg-5!1<|Kor8 zYy6j9m0tdeSEfmDcJI&bPyhJMo3VS`9omx1UT{%*;l<~t&PBZtlS{cUHE`cRCtLs_ zj*kqaJMO$Y-EhnI(lAGV+Ie1f`3us;7o3OSi{!AsJI<ZAhSGuKC#Z}8T>;rfF9M+N z=L(`uT8<?f9&C#s7T!xy4o1i@=|`JbD!~iKIjfx|=fT4KT-sd19Khp-;o~J~(3Ykx zW~Y!WHICuF&lhU6T^iFUrvp`|c9?286efs%*dYdZ%8Wjs7LSzvl{~yx;~<l^+`y}S zqly>iDMV^yw%gi<D%E&Z7$4c2%}^po6PVj!gp&CoqKX#-Ze~N6bvd-3KL<GnPO24G zmom2@^!75xaYLZsl(a%CR4#$n20``DNryoJ*w9LPR|N8oa@(XzA75vFV!4<RP9ao! z7&0Sq6ZzB?RwWBq=!gS&d~j9ALoEUhz6-DX#yV)r>|pIXhae|=3d-_O<J*>A=L*8& zzk>}H@<j(+5o7gBR+guEf+yms%~!+O>0vX#oLzV6KUot1ZTOk+1Cu5WrmN70@G-N( zQDF3{5VM<wpT*P<5)Qo9!%sFfLE%gxm&CwYII(%zZKZ4R*$!;2z*HuK=3#xJk8&-+ z{_CV(#HlefZNLrSntwD=7d4^=CofS3ZR+xPJFxqy0R@SP#BEHx;c4sFu1>GK@{07g zANpu+69)7}_||>f8(*6~`NglLKY#xR;wa+1Lqq9TUiq?g_Nm8Pa=;M)0IhKNZjvQ( zH|}T?{5K!{VfxSqKbYS7wzsm;abp^0IYR-xR<j$afLnO1uPcV)r{KUki1!k#vybI_ zc|YG(Y&f1sDu=6eGz}n84`>O#7cLrk7OvW`7g}hAov4bkzbW*}8?}XXb8y({3NS&_ z74s}K<~#GVe#nQ>A0|+0^h12Q3C$*xMzXHCF9*??unK}B9>l#92g`QF>u`h06Ju-3 zyAV^7qP^98Q6bw6;@a}cSB<L}==;5lrJ6mc^jpZ)HG`6u2TEuMEL?{V$!v(JM%3Rt zHC^!ZI|W&_uN^3rhHyusw;cPEHoJL0iu^=m(-z=UVOK4wfDB=_(1I-CzJx=CQH5kQ z1Fh_}34Q?#Hk7u*3cJ>6rXQo2LJ)63mXRM=zIL-}TyxzIjR9$1LAe84W%;)n<SvwB zYKMadRyiFAckV9}6&{S1-JjLQByVA--UBG=4iI=H#y!m3B(_1!@Aq;Nh>Y3BQ&6+w zkX72uvehEom<XWX42P~-j&~%#vPkV_o}>|+J2=Zy=nO_r!D?Q${~A;UP7DVawW2#= zVj@3pP>VL7RjjZo&_2oL0{z-L(^CM|X4m?9l(6<VB1;YM6B?>R+)HR&U50pSo2CgR zh&P$48^3A;$?4z@z6DDe7KK+wDNPCNAeu`ofl0PQydw;v4%DVwNEb7OMBzz9VfzWA zpUEwkW_^S~+Kj&n2=i!R_UT5kCWyZcjp@UWZ^!@SE`%SqaZIHj-g#&G%oo0v-u{+1 zrq##vrKj0U_K}Z$8W<+ii!ZyJ7@R(~eMh?OpYKYqd*w^g?_Kkrv~2lub{;QETc6pM z9(!_Adc*5posK`@BnqEQ_uYSg`fnflczWv_uS)CJZAiQJ_NR}1>hlQGL+RD8{uMe> zCyHZCBIHiM=jM&Oe{yg7i@*MG`nP}Z_Oy2OvFV9TPo<B3@{0&(ZEP4iUrB~E%yTs$ zBaOiULI!JnMY{r%H~>B1ho6ek8rxgrIGIuFs>Us5>t<9FTuxOW)<mU$qB(VQ?*L_U zS&jpholx7;7<Wl4ID8`DMT3(Vx)><cP^;N+(Cz08+@XOz;o@fqA*r<qU$1O<lUB|5 zV8QRPG)i82C~%{ga2V>7Y9cd)hN6!)Zo<ae6QE>Fw&T9BfzY})G5bZO&R~SN#2>14 zG*#MTTSq4#ux=(v+Ns9NT-5Ae5lYek!25bYX2+g>5^np}V!aLEC1e-cUguo4VJXf* z(dGDV<~X{~@|!^oRV=ON$N07V#Z9ygK!o;`F9jS|MdeRL@b!!JEFsr9(~T4As0zot zHly(=haZ%<wO55EVc(6*I@6d>q@`fGS?UADPL2emw3X>&9Ofs}s(J@$3!x1-rA28} z*h^lvT`j!kQ6G#mSFl_)<qD8Jb_n80ucPAw(1lBU__72+3lUaeD@@cJApNe^I_C&z z2LxYf_p5NB*9dWLsI6yyQxaPv16LyX&tTt>CwdHM2)ziaE@PXjq%fXK*%9~<w){NG z17jlL_xv@|d0JXCJY^X9x(K_%WgN|FB-(Dwu73NP-%VX?98`<sMzl8CzLQn8^Uppl zt@%%X8p?nXcvTbQ!P<4}(lzgTOM2>=txRqZf=RdPnB^!C&@?i}Ebi$_|HpgZle#%< zVjSKicNnGrG&i=V(@!}i{ptIDmld&*v=raY?k4~J-+d2)Gh-HYunSq=3-J7L_8F(f zik5iI6Ze8Y;&7Ykyn4q)8nkYQrVsi63{0ht_zNB)Dh?5X@9-mi>aE6!zdSG6Y6gse zOJ&Pqk7Wn<PU>VU)~`%nEXpL(zXF^GCdE6SfyqDC^$;TSX=H<ptLxxX$FM4B%!tj8 zZ5opS-r1)1J~hY=BjQ6=A$>VHkVXzClvqw44ayUpbett*>i9qGA9gTy3FROAsRC~g z+FM<l%Fj$&+R{9H4s!G1D1&g>zS4OsxM)JA$-yzhJv~0>v1n9t1Yn9o7_dcF3tWWV z!XH9Y8u{t*L9J=2d6n&~i!?k8UqBwxqY_A0TdN=2l3#6f--#RRo$YlMiVv3mOlo>E z=1a&Y^tIrB75x`}e>k~VmI|^wInM1^O7O`;PZX#pXv<jwuL(WU_GwHQI#E3iD>>Jc zSeuos$;Ni(Q;0=j;yDkL?^56%n2ka%<6+pVWepjOiosi=&{enI4D`S2DQbEkIM&lQ z_*Q0K^{{Dlz7WFgCsQ}2>4Vbz6nu9gfVyGK>Wc&Gxs|1V6nNpz#3c*KtpQ|~S}PbK zO|gs*Myi)Gj97M~N0yUggu{I8==#hQ#`VD3Mg}2l!DuYgPzDI^ePyRN)G`z8?bL2$ z0nAu31_m><vziDz`p~^R!(`D~jv--u_3JmKbIv>^opi!+X=I>3U4Q)z>B=iEO&34^ zY#8DKmhx7y6t^dR^}3tV1s7fjv9Rlt5%IjUPfb^%1;N&VGT4Z-bZNT(zWdT6Pdt&% z#XO>`Z$)T#Z@T5ybpG>BOE0+SqSV5&-v&S)!>;MWAN?GsS6z};cJ>5w6i%U?0+$^f zZRs!m-5;d$&?+Yc;*BR9k0*!w+1&Pcy5QV%g3)AxCP7_L@R1&5(s}tWGoau?#)TUN zR``(-W(-=kZ*%ZY!Kf4G|Em^GF=1*=Ki}?d*p{@Wmkv`2Ubbr&qvwJygi9ud+NLSM z=(f*-90(hjNe?r~jYCfh*#y(g+V;dK%SqKF%;iC~WFGOnfc6iWfqXMu!U`c(psBr< zuA~zqSVuov=i1=wHfVGZfp`d7>V+-`hw^#i9r%E3L8#qF-_Vv?PaZeibSpkUccj<8 z`c?QBT^NF{gH+&;elb3}Hw(SwTT6pcrgf$Kz@!C(l=?UszS%IEHo)gcfzZu<nmCvb za%R~0mTKwYVT69^DQya74s5kSAu)FI1B>pbEXlqW`BxFkeHNOXeB=Sy&&Ic|_8EoS z+;<eTsR;@F6Bgr@d`xFs37f*M_kI^L<LmXnf#3e<bA9kt8Q|@|3O3TTa5#15Rq!&J zG1}SupG{Bzae$U)Y%LwMk7JT%jTSU?@g}#LgOw++se#uP*;NXcs}+7rd(^@qT++UR zg)|&4&H!Hct+#c`1G4xc_bL-7YYt47Z?Jl00xw_FG^A(*Ekn4Q5E8x0JJq78ATV9d z!CZ3io$#ocR%rCzJfi3-z2*n4^o8{sk3-O9$rQn%1Jk1^aI$ZVqe=0zd*X2$0{)%Y zb~H})r%w1%PhVeJylh#{44i5UInG$1{ck%q7{_ni5dCVOf)Rawzc$SDzZNucC!csc zt9Z<Uz=QFR+pw1M*k@uqmuuA$E?*Wn()??Jqhg!!C?S29NuYJxhsl6=5XS~_kwf*O zdaAz|OFY;&oG?m%hY|)|k+O^Dy#bk)?XNA^hVMYQbz)?m2Cs3b4E=a9YDiZvS{Va< zUm!G|_rYK2s~$Z}^+I@-_S;~tgG>@UT~uX~<GePt*(8AeL1ImJZ1^x`BdxgbRKjcm z!Uz7Fr}Q32RP%i<+9k?CgK);AgT!ikl?9Y*3V$myj-DM1PFgAY7ZNNppA8_*1DSB} zr}@A__PnUA-3Olhqz$h9YyzSgVimXE{?-1k&27f~p&_=PDj-g<??}2G#nXX#92hh! zP!rn@-^0`bMmkrl1JhX@Xc6At&I)fa$+CTQ)wz#Vp-{jaP9qY>V}&J(G0ZwjTTPcq zIl5lcwm1Y{0TiXX*b(~_HW3pDMlO$*_Y%QeK~D&p6-Xc&uDhYk0i4I@ESR^pGP)w` zhH-QR!<@<9j-bG(#`I}b@q7}I-3WNj!c1S^06r@O>lMKnoy!y>5Q%y0!fZof*P!Ww zHoKiL*-rA>38UM>F467SiHOwosNM6hKU3itv=n;D%T8|xG$^!q0x`5R0}sixHFVah zJ+chRS@^+%xj8sE$jZ3v<e~J8Tyt8g7Qu}d!`S8CiZ=vbnYV6~UU<pb>Fl%5<4DcL zY4fH>)00m>lis@VSYTy_#*vsFpLxOwC!|k&<_l>zCJ8+_+gD52j<!|kNA~VyBML+c zaqnZIU`HFlY@(}|Wdk&sKY!%WboFar&JM~p@*AeimUR4vW780RD7SClmR7Fa5NVt& z1ZOALQ%^oA?ZDpc?jPS98W9Ebz5V@Z`LaIR6I!hB7!{l2$NCv1PXsc~r=y9aDg^$b zZR+Ci-8NmlxFel(jI%*!t8C1G6x@K4U3pcA1qWRW09^<O4h|@Av2}NoUv69B{qbFQ zq&x4rE4}Bpu1TGpbjAo!i^Y=7?jh~BIm(oiZ1ft^%7i7D8ZE24nEecXl0p+qS4|Tj zM+?UfgLNF#QNXEk_i-_sC59+u7c=s2e&dF;g_ELw>z%(I8w$y+K!L5|uJqJXo54SQ z7CIU1-wnP8)1t10sRMW$@whR`fgm19j07Jr$B)t&yU?e!OOyy9ayJ{gnK5^K>qt#l zahYU5pRe7lkA0#S?U8<F^$RWh3R1b>IGMnO7TR8g5|1WsQs}RO1Gtdr6-{lSlimuo zCCc>G{$StIf2Mv!V>BnSxs@CXHAJ2~xLV*O!@M<jD1wH^CC?Ie$-sK3jSh1a<5wk@ zynPe~Y03fKJY8ilh#%dii4O-;Jwz-(=oH>^OmgYZk>Ch^@=?9H9I@*Lj^?%{6?`+$ zc~{DCV%Kb45d3#>Wb|GHnF`cdC7Y`_;sjFaKpP=2TmR51vvOoVoP^=U1~q8I@@+GN z{MkhN!LLHFI8f{7s*95s#=wXxPV}7M)%GpvBa@mRb5$N18=VS)ET^BTllg0VxMSCz z)VGLbQzo@-EZM4!+y_6`?VEc9_K&w?;>HA%25mt2+O&NzZCKF*ecS)UQf@D8=*KYw z3;38^hTAjB5Q$^t#|_87?`2FxV~H`i^%Vx;RM_>-`w0XESJ@`UsAQG@B!Y!ws@^gH znVbkjc5EugN0*lwFI61l9VAF^9?B8)M}9Hcnj^mD$#=xH>qEKL89c|E<*ZCO;gc@> zW<Bg19=+}+M_uK`<dOU7#N3u(zK$EA2_^$gkEDTK1d`qGCr=o2%=DD8`-TTX&|QQQ z$~`#xAwdTRI|42xayF+cj5RkhM#Mk9k*5<}$6tANfxnc0I9KarI@?@+AUv7d_`n}w znjZ4wFXUGklx;Gmd8qF5#z*;~E=C=PQDnhu-7w}xE*m9N*nwbGs-Ocu)V)yvb@Q8M z6Z;S%=gZGz;!EwX-CMJS0cV||6ZgwO0`+miQeX<46J2+H`t`NX96C5|X61pas`8si zC9bMI<#Xf>O-PpUpv$jaNKR7-yS0RVumYcs&YjbnX5n~KT7yvJEX@LrHk4|XJo?;m zC>J9XZL;@%ml(D8*@d(r3<fvT^dQaaUZh^TYYaDu831!YjK5VU(mtDBC(+v7bkMoF z5VqVQDdW+k!F=?ppldM+P-55pnU1RqQZ2VO$Y2Wmz8Ckg%)_--s0|@EBIek3*xFDu zxek^k2(!Knjf)@uv>k1e%n{Hcc$N6n7<4bf4(-jq!cr?URqCw}>^oGHVYk`ezlV;3 zy$-W11<+v3q-}xW%24|`^Id`0L0_TQN}2y8{&pAOV=tD#;~g)-(;(-{kD|?O#1Eg( z#*NN`(Bx*2JqW-CUIPQ#AMmVc!;kOzY5MFJzmobE_r;Q-IPM?7Ae}aNE(4%OTZACv zJ%7StT|3d-uIToB?#yCzMYIqZKLio#9!)@GjpM_0QI+0FUME}g-B_i~o16BW>27{z zd*qw@oh4be9gz(UT^*^l1G58#P};`9-zjDzTBjx$`2_ACTIjq@XvmwOWnIGwt%HTy zp~*=mruc`Ru0Z6ifWWR<@_dxCe|q0T>8YnTr|mm;r!JOqn>1l@pdgX<SskorE2uW` zek(`me)wabN$+^`)$Ce7jX@k{j|9_zM5)ldK&cM+)DTZF(M|ic>EM7D?17uy1xtQ2 z_G5bFaHfE5F#U2q#ua!0oDeLzx_OB`fk87A7Bno@)F`!MW>B>Fl7#JN!$n^rl9R@a zVN=coqA&>XjgJdyoQXCznAJ`?`EEM@j9Z(B>1;r&E(>>~S3euNN*w9ILEfc(HDH=! z45Bp9jiaV7(t_m%4BSZ5@_@NCY*t5JCi|8rm@e0iq1O6RzM+(zpXUFK0Xdk7rROkT zJ4}D)#&Qh`nBgjpg4M#8_kOdllu&XX0xwQhoRqjZWDy&E#f@!i9DmKjq>+Xj*)Zse zc=8F&=p2y(cHWBzO}WKOkY6dZx|)ya<c)h2!uV4dl}%ZS=`74L74R0eOr$paM_Y~? z*7uD=!)T`DK_SG#(+nylTy5*Xh1~W%18I4;ywhA}f?77)XOu}{7D_TKmZlOTY{<!P zb}G{gwQu2yz&DA#Bf0p2kl)$X+WD(t&u^s#Qbi+}UYz*MP023a9{eZz2($?cku^`# zR7quaDpQ0#+J<|D##|z4YzN|?69|0n#Gi8s!qX3(#6dEcY&B3$y-;m)*d}gJRVY=1 zY~G?);mu9qkLpC3pbvhPOm6UQ4`3PNf>z*Hz%GubIC!Cv4cc<fjEG1YwCg*-&oq!< zAM!W)2WeDTXcKEYl$@t~y-51s80IUkz@wz)s%#S`G!s*KVm1cP)x5!AyqOj}JitxU z$avG~WRAQ-emz9eXh)DWhWo)8tQ{<o6KPgKknQs7sOD{+YMae(Lc1H(;p#2>sSxB{ zv2u*DtWtk#*UE~jbyPNV9Q9x$y*%id!pVU+l<tPGKW=jA$5TTF@n_&mvzrge_24TE z)`q<R)y-1yQXI((($NG{4kHja)6=Ha5JKiW`3bMf3#Ic*pe~8%eyl7%L?+db8#IjT z1~DO2lkLVeg;(8jwX4zMi{FCTa@8fs9%oQdh|I7tc2Ld(5-H}cy^K62rc|<4u&uq1 z#MO`Jbw=#fbS~?0i4gC|&!uq*Qu`=j_RkGJT?k<Q^O(P$MOXqOE$I8xpf?5wQEg{> zdwS!@%-t;Exg4b+Az|%C+owkNm?a3i=1p0_5T*f;9YES}PY3ZFX^Nf6i_?<6B^=+0 z#w2EG8PB65gJ|p~(yHZ4bGpD~&eLU>fB42X(<vvOklu)UGquoac>nf)eS$%$QXxgn zBI&dG$vCoGiK|>0-x=0(jAFaYzIqW??#GxojG%eR*tLJ;Tq05RV@~3y9cJIrj0OpO zdvcM><<?~q!O`|NwKl#ByEwE1x*Z<sM~l8UG*BHK?P(eK^DO(0j-{bFaYC_k*Y4Dh zw%h!>x;oS1J~sX>U`G;R0^9Nc$MT6g1^sp+aBO+#VKnuvoZ@scrXfE~8;)Jez%FyK zhtO_RPK}Xy4&wBF^Omh?_ujn-zB|&6?b`#smbM;<e>CmdwKKH8+EaG3*|86rX+T(a zWkh;$!m@euGeK8s$9j8v!pC!J>kgs!V8=!ajo1{|3W5vKEUHnDL7Df`o_{Wz3U3@8 zOB~j2VDP!E6o!lwBt@FqVBQKV(x_y*h}D;VCv#Q7qpa4bJr3Jw;u*gLqQetye<oj? z9_Q6^N>HfnL)cXi7hZ)fVbI0a0Do?9bn_Tvf50HF%LKOMQGb;#ov=$Q<G|KxKc-*$ z&Pk{6%mT7L1D=f{J{|BI1gr`!CD(_NojfS_=qd&u6j-{L@Od1u?!2tKS;Qnz!3h{G zM>}luF})M-0SX?*$+3cos~~!Z(0m2dXV{46Nql2$_7kVtbZfIMyebM}f<l~t-!xRg zeH_+1^SO*i%O1kr-3b1w_OU&F0h1#AKSv;)NBQc5*+Ej_y^C=PN{BWR-u(y#=wMUh zBm*ODm?vyGIa%X>yD5ZyU4qGn>*-6HlBMR8!W6Nz+xJwd%o8mwFN5SfXMQcc3bt!t zrM%$EXZ1TZv7&5cK_?Lg;ZadB1#Gs<;e-%CL7F5HyxtB$@K-8P*!7ip^FK8B3fk<+ z51+LjGwqn~%4cpbOb>>frsp7jcA|V);+|Lt%J<?Z@WzAXy2r&n5I7Ub1mj8XniDQ% za<7X$S6&^X9Q%zRO{iFix{}VixCJRs;)Q;8P?mAUz`kkz^9B2)|I{ju^EZTPz$iS= z)7@6I_Jz_**#0$#44x}E5C?EKBdj`xTc3T%Eh;Gvu>o>k002M$Nkl<ZH^>1sL(<!W zIBZ7PY(x-M!E>mfCb*0*hl-n9#T6~h?6{KFGFqEBF%Fm|8V|P;4$Ud7Pn-nECi`&( z`pOPDx2<LsXtzm+I)=3JPsLwX2D8V8SRn$arhP={M=DoHv{{d&Y3t+0OjpV5D1-S4 z*f3mVJItyGy!GXj?0s*?v;*2W28pu|ZBuBOMOsDfHl$5vybcl>TT_Y6XtrgXmOF}o zww-RIrgxOyxeB9som4wG?m<{nTWp7SCK`uV@O&g8qEoN~v|5A;<moI*Zn-ALn_*@% z<_j~O-h^r^Mqw_dHGj3Jt*%Qt+7O(=c+}>8mKXQ2Y_|`Mf&`_ex25?Qmef1bh1ku0 z|NGxdXP$B_TEFfzGPE~+_tx*Rnd0ow0*+%}rA8wYX=EEe3OkDsriWS2Qn0o{O_+I{ zckbEg=I{QH^v}c2cR8BmvGkqq-;qw-xIXovEjCzpnN0~hclD<iU9u`IWb+3JlJ0*V zdie2l;dy72D9`$8Y0^h9xtg*|#%|7#7V1OzFk~_}9*(;+BhPUP{9a8+dj&00PB0mE z!!u`d!0+ZdMBfl+9Ub^8hAHjZzBOI<^?!^_fBNXu{_pb3FH09({DL&q-UGAWmmYrb zf%M5Q`~w5K?pM&tVl(*WH@p(tz*8u)lfx9S8?2U58?ozByE}$ExceS_C^o`qANZB8 zT^A?XE##mPhT=>p0k4C|f@u5Ce(5V|NpBx^+c%~k{^;)X-rv0@Hrf32-uu$EU%4Jl zzc$HZVe;^%*S(5kSx-T$+kvg`V7lcy-%Hou^xe<`k8%*n$+YtuUUyX-$GU(2!Z<d% z9;egKpsiq0lN!Anc+h}$cze+rDo{8GYxf*G#Yw2})r<*52g0D{Mso=x=5M|(Z7PY` z=Su%`u=MzDgBMBHL3j|sP9cTQ)8B>=I{R_mp*GL=#<wf<AfRdYst_k%u^e4u4Qlsl zzPz-LtFy2q$BR6dHiN2wC}sAKaV;bZxAZ6SmuIQP^p8jCl5Hf(b#~(FNfvBf<qf8- zT@{-vfx@m?)#heBXTQmLiYo<FSJQI6;XerXY9oheBg>8Yo1O@}nI|^Tj%^B~NULi0 ztbae|2MR!j0r0DaytI++Bd+xitN^T#XWaZJZXDpG4<cbU6?XFQY5P_L%2t#e!`n+g z8rp@}882*e!kItY|K$U_QyXS&Xot90%f##HU_BJlamgKcm&WRYuN2B`7guUp=zq<u zhL}(6<A7&Ouvs(<0j942sLyDQ=V`&cd?Wd|QdrgjQAX9a0P5IvIKet8fKD-k5SJ|G z#&ej+@l9Hr7EsAhp;SeozUOy1X3(;0(A+!TnwNdRzG%M@7g2BW-NhVyDeeV>*H!|# zf^(dZMxL?yIR`3KM(N@!#`2mfMfHdu@2iUX&c2|j%A6}E0JMO1aZ(mSa}9zV{mmYb z;4^H-V%dHGJ8rdzh`QvPVc$Hqi^Fpk!3Pg?XIhipzna_NG~mg)$s-(-)s7A`K1?un z9Zpc|+5unBvK*rY%&wJ5h?~)B$LqQBI(%U_r&ftJjLo_sw+Q`)HZUK(oM;}Q9kJ#O z?P!}@ST!C2j(YoKH|^z6a*<cdGvNXdux|b=OE+hFaft@5Qar1RouGzJk2o*W+DSAq zaPyfBcrcA~ltp|SN3(-{2pR39)s|STtOBY8?|Ji{q~@U+MYAh#rdg~u41(~$iXas7 zB1zoqBUk(g$#UYE*4@pzBgxB4M^;4{Q|OOjIv#l{e6_(r#5WF5;r0XpM=e^!;wQ92 z06D?{qyJBRWxCOXY+?TS>M36Cq}8K^CJp`UHr7Q|BicQM8$0!+?&V;fYSKE<0{+UC zFG+v@nQPPEeB|%b;>AnSPBt?QV#@H&*S;Di-V#S+dPM3zm$Iv%R!?olvB$1qBiwlU zz=uDUUiHc=!>{j)UwmoWwCSnzp^tqES7s~I;9x&X>s!*Bf9>^gjHZl#5`1f4EVAvK zZkqeb*T0z_e)Mq!afCmm1?n}7@aF8!v%#N>V0)UAIIBZ{wDnwN7+04t6Rd+aGQ*4( zs%Fg$9n>aTC^EFQd@9g7kh)pWBRUtNJ@#an25g!KFkHRy`mb}HOxL{keQb_tNsmAB zQ2N-%KgA@XC%y1Rmt$8ul>Yv+UrHylx$sr5cq#av;z-kP;!)#zc80G=ixE(D!4%~Q zB-Euxj)xw8DBb(O&(ljUyEJx>Tc?K}emFh<ymJvCiKoge0+T>+d+DVwKpWhWKJmFP zCxzLw&p8`Sau)}eJemIH!=FG1e_?tVZK@XJJGb5joqRI=`+xVxY4y5A>466yP9Oj5 zSJV4``wiG(AIE0Lz3Fd1a&7wdZU2<s#K9&s9D*MG1z|prUX@%f;i;oMaJ9cH;B?U5 z3PHQj7!4!bKqAxqQq9dc!j6M2G7J4ZXHegs;)Sjdf|S@{>}BGrt(!x)t*B5VbIjUV zwT=p1elxG=`~DD&V_w>*E<&?wIt88DrEayM!e&!A=d{18y(l4{_-6jrCkrgbjiw`# z<r?H!F878oT_ukVM2yg`l1w%*C<iYBTjW#H<<$I&ANZd;8r;YzpHnzc)|@k#L0u-+ zUqMK%{`4nrcrWQQE^?n?Y-OUT_Ov_T%XaVD_lhs^W-=!%wxe~;s+IhWPa!aG!<s-p z*LHK;#cC_a_-uM{sjzK^PA+y0VtU7>-0rS!On~skj^e^YJ><&{^zFD-?CtDIJv3MY zo3Qu8^Q@CO>n=+-Mfx@Ga-vCox<azN633XruMKfvAkzAFc2Ia5V^-!8um|$&!<5I( zs`?#o&?$c-#|g79##XA$A`1`JEQeZQ!ME01+v3pR@+^$D{r)LiGSj9wiRETq*#&Cz zk4SU;n70!g1zv61r8R|l>+ZK)|D4d0VDV|`{?<?q=`wQ(${ulSS+;FYJE!~6uEJ+} z-vMU0ZgihRn9GrervZk~Xuj8$5hanC!mfR<R;Z0{{1{)Fu#T2t*#^hM>~EX*eyGAs z9Q!EoKxW{ZgyLBNca-Jr5wwKEc%f2OV8J~4iF=U@tQYWYG;N0GuSk8+LG}+@74b`P zv7JKZV5ZGBesEWVq&aF}e1&^AhI%iyZE1z(F`QUWB10W2kJ;Ilv2gx!>+{nTqZRXv zHpVf{8WdQ&*-zpWd&qMUJh72~wW0pGd{fIihT{S4giRsOZ5qT)lEhMo$PeYdB>dlb zwQRMs%jsAd;Ri3>j-cI82aTlPUBeK)c{>7AzbbAr6d|6NrUU5`Je<OE6plM#Ryufg z6P~t<+HYwjuN|=XkZ3e{@Xw%#<NvujXGA#2kM%RiWE^%8J>#ku2!(uwcb9XvGiw<~ z)8!_;Onf9F@h}=E{lI2IBoC_Oa!<6O!Vg5^MypN+p|h~XT)k>#G_-lh)SW>!kf*zp z_q#z6Cbo9X>h#;c@s@PYPw&HZ*kD?@{Frp+>8G$^Y$<{%Gib_q?JKTe5NT(yBOT0X z5=Jn^2~z7;uTJl~=AG&O2ObWlnaF?f;>GEmZ+%1h@xR=ccJJApmh$|nE3c%SRWNYy z#%7HZH?HG-PYAwhJ1>9HC743=rfn>zccO`W-dU$|zbiZqP$?>JE6yG?#N&|!bMY^z zz?;Ji;x0D)DC`C(aB$koiG)V|AS7PLCLCa_4`H`Ud()Dk32H-q^VlN~V`KX;{*2$A z)~#AjXP!!@opDaO;QWWuZ9ljpo%j3;VAgCR#Z=&;^Un=m$4zV|`!(FZJ@MpI42Ct6 zF3Mk^9W9&3^tb!ulTW7QOM26>>sH0Uzh?C@oQC&cI-BF98#q-@4OzjdsBP_Bl$KyS zZF#*t-KozV>9o_m_dh_~1?i;-yK3@ngBM<MVY>6~pQL+mBexotb3=IVXhab2&>IEX z`EJtx-fz7D0fdPc(w|)}?7ZucB9`2U<G@>jsI_f`$=5DNYHq%F4}&R!dg;D_VSbo1 zu}LYPo~3qPL76P4LlH*pza{S`mcA{M=7?Z9J26GrgQCG#_N9pIS6)=nf{*Bhp%<Yx z%pa<9f;5dwVEj!>fp;bVca=ej=hdVxDVKuWv?e_MN#p(svk`qV<aE}9bL%<9Z2x|} zEG!CvTAVrfn<SEvPBX1dY$VZ*;|5k;%*hhx4Rd@nPvq8IxPW-iRUv7*-N2U`Qrkwi zVroS-c~H=B60Qp~lZhL{9K{68Luh%e$1*g7(KbZ%Ig)X2I`0+02F;T}yqkJ0z?@<0 zwrA3fH{8Ig(37MEckt<pFTN<f<OLVN2iwvla7~Qj;5iUvu1u)->*Co1ceGE}R^0(n z!AQII0;jRVmpMYL=1%oN;oEF&AbI)&k3F8Q`{pg_H{SjROpp3l-B1{YZ`AbHD1&~g z$ycr*e4LZAEVI-zCOpkJ?`L8xKH6B>X-4_LD(`e?pp6?5+QO5I13>|LI>yY6pF*$? z6A$QxOk=7}-ohPKn2A1pXWiP#dnNX=dNc|`<ZHwyQzryHAah5BUK5&z;epNH8K5QF z{8sciopH@g5q3kXSo6NzX4)q&+opPHJ3FcKPz7l*CM(r9+r)lsy<klU-S#cbGV&3( zL*Ps&rjalCG^1Erf<ma3gAcaHaoB+w=#SNA;_gB4J;s^!bm;}MUxq7V7X$bh{iJqM zRS&sioVNGv$UM{XMit4)wa4>LPHR%@Qy=(juWwY@!M|cpd|<2t-<WQkeJstmL~~WS zqgr7f#3ygPX7|9<v)|ayT+MEsV!I=ZLxo*a|9(1rfRzUshi;$e3ld!Y*YZsM&lyQ% zw;$%58RmTO<g#-|FeYOXwm|x#Yr^i<<NqeZG@?%}Q<c|FnAdie_K!sfc9WVNt&f?F zXKRl!iaOXR4Cm4_<F(%Y(SP{MGbgWVkM-nW-H#-gm*osIGB`*(Kn*aP@pP5gwNLq> z0XAY4EPDWEZ+w}cS`<yhy*H>Gml0^2HikdG6OY@7>#^g}IG`26Mn>Oy60?NRf`HVZ zP|cwO`?0lLhM&lnzwGkNt%#%ZbTt(X2)Odn^D$2_t;}C+k1?1wj<PWjjpga5o|?`$ z^NjG{y3eI|aH@vzvKPN#I=?CEIl*iz0fPqy>dHq!Xdn6PM}yGD(&WV#;cu6ByomDq zum!eiE?e2z4(b~=FmUi6QE43<;A+r%@I-tS-(fEYgPm}OS+uG!5&uaU3s`QEVmt!5 zo?%!CH8yHf!@U;w{R0Cb@GV0yZEb)~W!wnVOO`FijN$(9X0c-Bs`L&f4qw0STj^;8 z-=$0Y(y1q%1inu~=s_z1KKG-owLR6M>cXj?O@rV4r@PaI&p(&<%<NGCoqqDE>8sa& zE4}2!yV9z4J+u=uBGNcH0ja=`t(R@hE6rDwR)(4QY<m3Bv~JxR7^W`Oh)d9}dnrdk z>nGWIpNw~nOE0+~eeoY|On3e0U((WLi#fsXH2g2G0%vMCfzdq8ye^1W+hO`k)hOlJ z?+QvDIjq)bkmd2P<>Ot%sUm9npaxNMh-{BbzNB@4*UeRJ7-Pa%hE4m88?B66`jBx8 zsFp8w6ug(<iO;KXeP0z_oAs=F<9XnNT2k}YgTZ`3;n#93SJ+4z^^`9aSWK(7ILeLp z4Ac;n<;W*O@G=j(4~)WtYMPkX%1hMn8s|_jTgCwax`f=xbmoi8-nGI>zyNFkpRf_t zO;_5@BBx=mn<pi;IG)KZ-}!A2q1WS$dpZ<8c~9Aq8{guQs~ZP*ajK;5!kTgWwHLed z&wlO;Vf+4`cmD=7&`RIgnm+i^Pcvwark7oDMI3dmbAHQcR*}M0#DyC$G=19cI=D75 z`Io;bFfUM@Or2e6YQRjVpXF_)`vR2#=GO^Zphe)g5f9^dcX;ISCxho&UL(u0jcU!* z_y%t?&%E(-Qs3C{{c^0j{nx%+U|Wo^wRK__D_%?@IIu^pS4TTz4H>J5n56$Vu*5rz zHv?(CwoRsi6f^+KULLaGX_s)EaKoUcI<7V<kk+<wNpJm(t9`928VZ)R!8&WM1)9Qq z#X1|ThQTU(AMn+s^?UY)B7ZEs(zmli$;-E;bWecYfdI48_Jlz5SgCLYKt$4XMuAt_ z)i3hy@jYoTn}PkN7T13r@NCZ#Xn{|*(%ve9STJW5XfN>C7T6OLyNh_z;#~Nd4e7tW zC)>|eX|=TBM^^?>7o-n`T@SQ4VC*8U?=)*rcs!WUT(Y%SC?M;@cleNpN0d}v<&_>} zfoG!9(7aVs8)ICIyM>R{M5xW8?p|0tFhjfKQ6@Z1EV$70NWxYM>eN%&FcP-!>Vt_L z;1SVgeO2(26-fLCrmD~7(9h-}0qY)2Uwj=P!Tje7TVXQ#;9bUSzz)FNAT6YVGWy5y z7!VGmVJr(F>VAlS3rtQwx_j_<*vcrTzuj%*p-UP&_XyuMDd<s~HSCfP%`V8co{~%M zFf;`B;pyR7R9ZNMe<cFndJYVD2J;FLshhHT;<FgFSehajWCXr*`P2c%!F3EbI0{qE z%xIfoj?pFn-9NG$p=Oi;1x*12Rs3U4B5)dMN-ad;PUg+uB=$8DxVD-T2o;84wh*xd zIXv9YAOKD#u#th$_)ViPZ9Qf5<JP4L<~K$8Q%p2GE*Ql{l%ZB-Y<M>VObhXq3aWA_ zH<r6eXxa(N%$4!!=z_Q~w_wWL%Nu2oq2ZV(TjMBXO|bNpXPB8`M08+eDv{x1a@7pY zEofpxS-i<Gia+ZSC!c9A$iP8miQ=-66qVs<#Z}Ujo2f|a0Icw!|Klq#H#lkI`gHGo z4>6EFk#4#56POoVkY0YpWuegxw_&95Fad+!7B)S-IhJ^Dzw5`8kq7q8TXv)^TQ{dw zYt|tg>noTEprceEMV!<ifLmcxIFHxFk>Qw^@EXFVn>ameQ2ULyy%}xw1L?sB9!U2+ z@Ob+6t#_oiz3EqDg~26RHD(IuF_`D%fqSyA!4w~AKrotRIS}^HN2jpa#S9aB&%87a zsYg4S#BtOC-Ba3zA>&^BfqF8e6Uu<!%m{QfCTh73wMEs&F<uDOl!g2eLT+|B#$ZaB zAs|qeuoYy)ef4Z!_5*R{6kA%eO%*bnkn%tN>dOpx{ANA`y|AcfGG5WZ`L(SD>7V0h za=iS#Y#uiM3|~g2-fdh)w#>*saz6A=#Px^vQJYICvl97K`zG3z7xF_;7O+{SA)9|R zgwU%%TbnM&nEAD?9??9&&cqJPMiwGxpm?P(2nTHkPSofdiu+4fGc=$2t#`aRty#O8 ziSoX*dhLqz7R;#r=f}R7F23->)OQSizoCao_^g{NrA7BJ^!8w%*^X2W?;9H)Oxrj_ zX9<(a0fguQCXQ;h`dG1O(oVRm51Y__CYmrVY9X)9Sa3{00|rlxKqZ_MT2H;7G<6_I zk!B}u0Cme~-|k^0L|26k3)mD&a8s+wfM=fB5lRMO>!V+F;_Gcm!&1^f%k<Zwp@G!D zeL&WMEq!Mw6&e<F;(3BW9pTxDNWrgdAuVW*2e*Om+ZW2$+(uzbOC0OsH)(ag5cEr? zPOKtb6;UkM&)lov@#^(K?dx8K7)^m3)9ueCXnJSgRoi@E$`UJILnBSux+Jqal~d-` ziex)Rhn=X*p2UH9Mj%sh<tDEEm@&2B#h?ZLyRbp~P;5f^sEw*fv+sBq&!Q&WI>O8Q z8W$q$W+j<6%h8FdY=7A<@*=%3O&|ls3hy+PNC%EH3a7Z1ES+|a3W{^h`sO=)qCSc3 zsST~#-5IK^k5%_fTewLr+N%bZCWx<-@ofT4t$UEHhvU=X1k2WplMy0n-Q;qsjCBPF z(MHFAo<6ph*)d%;@)URxBLS>{AhxrM(G%DlBz@nBn7j}|Vjq5H(h)zB9`%p;ZbM+& zi%0r(_!e!WtokZizJlsD1Stj6#V{C&U2}y27>MpnJZbGIj=JsVSxu~VxNFhu?&ety z@GzSv!d{q4)^>PnF0;_L?*JX87Y&-)-~~1W<!Te`q(D;yVLj4d{thN~rY;!VatMz7 zigaXPVr2GgZU?g3yiJ1}NjwJ7e6%5-BWTB^TP&AbcfnkAjg+uko4{w8Lrgx`n!`ls z<ofL!W+KsyeV9F62D~5buLmVK%NGaLmtX`IFg}7a)GFkfI*@0fVi<1>o=zsCnNGl+ zg6*7vbfdW3QmAlKP1J!*rx2148Y26u!Uv5w|HqiHkc9)NjN7`v?&3a{+~!DX8ez=! zJ}|;`XQnOH<ml73#C8Ll_JlI)b_UF7jac67z)e_Bl<mOUv?i<nr10H4cXFE3B9=pY zLd*Nirbk0df8~|y$aX5s9sd0NA5144e|$Ri)Kge81?!aA08=;Ig}K2gIJ<wzi!aG= z0JsD99SFbQ`Tkw$)YG4r+B&m`ha#w$PG)Ca%I3q4uAa1J9fI}^--<~=JM|C|o|dOq zi8ZU&^1L8DioNgzedHXxK|JrA)6*EX-yi+t=hBz3HP%$7ua^_8z+YJ|wk+{qYuoBO zgLoFEdR)^~z{l=z{PDJ97wDk~%v(dNEA30Owxj6=7<3hkv~BOkzR+)`k2a)^K6_su zOv`5kq3ngg4OW;nM;`<&IS=AUC)xytFhMyEz?N;GS`pFwHB)Gi#>msAk(Vm?T5sP) zo%k`$9N?H!1mmh%E5SP_8=9q<wv_F6=}i1h(YfSJeJl$a!DZhAkZJ-#z#KQZ41eR! zB>cIWQCo&l=M3{y!aQ2ZKvM-xLc$y?3dp(m-N#7Ik5_qveqM1L6M~Yi&D_9-QZw4m zlmQ!&b)n_zgRT%=t#B1Z^Ow_4Jw5%&`}*)FjjwcYGK#Qx<4xaAH{Etu2ugZhdC|q^ zrkB0+rD^f<E>;irrN8{I|AT{AUY;KM`D2_G`Ec5e;^1X3JfFjMUV-NkPEs3zM>B5N z_R((gJz#JT!VDh(rwsIZL}3SSYGR4}?w|Z5U3=ZPIc*U)WmI<KhBfK6SG|-|+}4LF z(#YU04ubi1`tEIahS25VK$pJog7nfWE>8<Nq(@Hm#1l`X8?O6CdgQSupdA!3D;K9< zzxpbK{0+DUWb-Ivphv6<iIaF&4aBRo8cX})OvKd$ajm;gO^>88l_v9r$P4;XNR@XM zA=MO-Z{UHtPZLzm$?tkrv7hR^No}%YMQC<;wm*rJLj}t-AK|n=Ek&`V&+0K?H@Wpt zD7U;>+40~CWp7g#xM6aD&?XPaW!jEJs1kVZ7{9c+8{s&&sh=FDefnh%PI}w~ri({U zY7<jZNE2FY-yb?4G&AYaO_^qsRgaxBnSDXmox@D@ru)U5F=t+iXW^(7cBe5eL!}L3 z1D$4jj5pd79}I?>oM+!P^(t(+!<F|V;|tRE{lg))+Q0(g%tz@S-j2Y;j2AV_e*EoX z!<-hO>TgHTVoOwLhlkPhh5MjLIlG`EeNv!u^O|<G`UqA?ZRK6*Pr~PEENX$*!PLqj z6AmO>5tQ}vpfmGgny{M&Sd6y<pL_VTvHRI<rDq1~$NvL@ue2}P&PD`Jdb2Yuro-52 z-RO1<lLR-y9c?gw1&P+!h=3g-brH`V6R1G0i<a78dw7adAN0A6h(6nH*4de~op=#R zx@aQ>10(oOr_^c!_hYN%W(`AWUtw?{Mj{EpNIdv%)@;ugRgi$2(a<Isy0a`7@=c&U z8AUM=^9)YM@lQEd2t1?pbD&TN622&KuE@{fyQmY0vOH-BnISY4GCvu(T8^v*sVkIz zHOW9yKQpe26@#iaOXgo_$>mA~T9-v_9~(riPkYB?TEAff<^ZRpZ{2)rTD5XTXoVhm z?2+_?AKaFH{f)oI(Wkv>=c5m%KmWh~-}L*x^PY6xIcG!}YKxaG>A?iVr96>GQy@gg zK^+|7eDD1arOPk9I6d$A&x3fYr2xE^=q~K9KJXEQ)tzYtn|ZRfu^^vwayVtGlfMx* z368Ouu!TN#%1I}rYrpgl>3cu8Jzf67i>bq8y8X@{aZt&Y^saZkost{UBM(2E{_ay> zNPqEXf5?&0tAWu2N?2h*gVh=v51=j(lKWWhzYZXCg*au)hMFtz-buYF7ve9ux!q-Q zHnkxb70sb|m##E_(ATa5VmI2}_83&{?=J1mO>PRfZaV8gfO0uhFa$Fotpiv2(K<=$ zniUwyvLikO<r3VK<{TwnMd0RHw6$g#@ey8Z3k6~0A1W9xG{3>`GjGl|#ln;Ga>Yjh zLBTQX_A6eYYcoUHvluYs?wcp_`D<uZy)Aq(1m^g5kRLP4*&h%oKJlX)H%&-vFZ-SE zd*EgIJoS(lg(YD&_}$=!s7TLqc^4l@BmRzAu_{iD{4gdASF!o_jMGj=GunYodT&~? zWHFju7$On>`OY7w>%aZI^uFKu&9r*;Do${GBK`Nj{b=f4ygXg`3icMzW_tz)(&M~; z)k|N*hRavSippR9)rZo_r<}|L^h|h0w*R)h#I*uehA9hOfnMt+z{ExBO%Fc&X!_9K ze=d$*KkuBgqJMq<E8j?;{=!$&@BjXLvCVJiu$`Z#FMjog^dJ7{x6`WCYtmzE7X85A zek45HTz1*zY1_6f>5HHHOj@>bb^5b^`^N}vZeG1UeeO%wVK4tK4vN7$3+0VrdXWh+ z3zD@fSAsNGu)io2yZKAp*J^L)imzW@g<dOJYlh%>EiUZafrpyJ;zR${ZA^MhIzcCt zK0|1p53ri_WE<(Cf0!OPqYa#l@o`q4s!3OFO`rGg&|py0!TOoxrx}AS8viKI^qC=e z^UE1Tvzk)1v?DOcs1v{KOdRazxtGmfH`6<@o6+*lAGdrtd|}s(amZ%;*$<UH{AW95 zPYYQ)>vL|CqZ4*b+q9P1p%s3Vld^Up7)cVrK)EUubs=;PGSErfJJ8xKV%fQeb#=9p ze$T`W6NX!P;*1)@XB$MWd3Q4M4715ZlY>V=!m*X6S40j0(@xYpYp^>}Ft(#v4~1Y4 zp%7k)*LcPkzP;2Bi=EI2dyKH5w$sLoIeu(_QUBQKs|MEK^33pp2?Xt|otq=sL0<&{ z0pke0H#Z~$0a^z;vM{N2_5h3?7<R4j$!8owvt0!S)sF_mU|zm2!Hop5FNqhU2>zNe zwBl2B3I^N)uH0O*4}nxIEZLBrxi9X>WSVva31b2+{v?|5$UHLU3+>wkz8A3U;I8CG z+9xzt5UR^|G9PW=rpTuW!Fob-3G%MVByv)hI1Au-`-}aN7R0l371~@YN)T@{UT=co zI~A@8GH87T<~me~YQERrI(U?z06Ks+^!*?BpWw*Sb5NlC^{Zc(E@dG5wb#Bfeg4`n zr~mMme--Y&+@NyB<uArd!a3k^isMXIr+2;M?dhvu`#NsFZV6aD()3+#dm}>f%2@tX zdf5++=oaZ`Y%<fFMW4G<>{uW3U<%4^!3~=Jk+m1ThXX!VtX@x@X%{txw5jS+Hx{0D z$_eSeefVSPm5)A=UjM6Cr(-v)PuKkBThg^({bu^7+kZrPtl&VS*S!0!Y0autVG?oi zh3Da?cU$`K$3KsKVGGN)gQ>5(CtdxTt5|ZyB^fI)A<0mEP#FWOG*g4B7);c{C_u~` zOiXZNof|Hjuy=03Q-Yd9C*A!lg@@M$;?R8}{~_KfNa;SwKD4K@u$fhM<cbD}O>fOD z@G$s=M<SNht?Kivi=bGCKp_u4m;PtjY9b^l;jvt`QVIl`I@I<Cg=XVRlOzhBl9y)l z0A!y2@pV?1e&(BePa2iP?6=y$V&=~hWj24(#hboQwY`)-nwfA1(D|{-dpg(r>^J@- zkBD2v@<R5rLe!zWtjnfE^s}F|u~y(!du~4z@4_?5)k&u&D+*s~bgg@I&5}uVm3qcO zu3Am`)@xsXb^6im-%Hoscys#nwb!MK&OL>Vp68?u>yKk%gvTD0BJ0+rKl?Yom)39G z0Ir+U+1Q$&`%gdMbjR(HtFUR)d)g@{v9hriVA%r!e>;iIwVDW>ar&vb9RNym3f({2 znzpa)SQ~5y;igs69rxUqj$N|?JNNStEZb5qD>tut`Q_=aKlqXK5F1I)JO6^vB<q{I z8~@hbz;zbF`k(&sAHYX}opIpFC!b<N-s9=@S6_{31*QzB%r8d+{3rkMuhI@zTiThx zMypUVLZDi2g+O1GW|@J{(a`t#i@zaw!uR6%X3}QZXHwMPNlUg7JLZC>N;`#FT^Y=3 z5}BVi_L?^IFaf1X(H{<kttL@*E3A&Snj;0Az@2^hqR|EBT$j1(Ig^*=I6;}V7v{OX zZ1XX*Nj*+Lhto~UJG;OE34HfU7Npfy<hJq2d~9$BiYr(2e1BNM^o;d~qvbuU{HjP& zq-H@Q^k@01F4Sh|Q<~23*+#jqMQcTB<7JAjFHzoV|5P}p`N%`<F+)ZU`oHUsf^1s` z5%jjJuw8Of%w7i0uoENlRs^U;ER93+A)HCyx%kYaJt9;9O1@S0M|?5QMIg5w>CJmR zE~xEY9=1|2MtaR^W+$2i6d_SlhAkd>N{YhMWlIH?9SFJG`5UG81oJ1~@@+l<-Q}ze z?*bT!Woi#B^6U^Ee|WSZ;|zfm?V+0JILVE{w!kG;=gVCUlkQ-&M^pnMLy1AG0w%yh z=+&-vAIldVt&7oKwTI9jE}{^8o7=n7=)f*IH>MsOf}qW<!5NliyUAle_>PmZcotL4 zxu`pg=l^5xJ;3z7ssrz<=`)(qjC!}#CCirOCU+Y!HpVulvvh+A1k(1~P4XmPcE8={ z+wAx3S4af{ED0evgg}4<Qw`YQf_ukBZn(&jtgabN)zt6zJNNy+^UkXo6&Kh%<Vx@S z+pXuGd+xdCo_h}PcmYQR_uO}Xn7UfHbQx}HpNr?SIV?4w)5+oOgbAb|O6F~_Z`4$^ z&KZvjNL2Sk@jj<}sedKVP6Bb7x2mXU6W@Aa&OG*5co$MCt7(*x(iYHUbr9E`Y-Czu zk}0+Ev{N>+b-A3kz|BDdo(2plY!>FkM#00SOBSV%pnIs(2Txi%>CKxzA9WcHP$F#- zR%e`fRyuwK2M_x?DFdC^j*hf&;R3!eaj>;B%A%s)zJ+OBxnf!R-QWHQ-?4oRj*p>s z<N?Of(dKY4^4lN#P?pZq=dXU%g=v7pE;5-eQaoh%_BUMtqi{Ntx%%%OG8{uq;ncKv z;Ub)0bOvtd^g`Rdqu|CU=`_FerYo-?-Wj2zC}TID?^=C`!;-jQEe@?INq4)ovS%Gf zd0VrpQ>uV%JhyU1ni0HZ4UgbC4!thn+kr$`l^*SXYSWchF+NS>y;5L<I9DC)d-dWy zT=hJQksjc+m_^-@7P6+ZzjMyjx$<mT4AgvRPU$5-;3<4e7j>&n2EO^tLrS()I%7Eu zqqwh*UObBnrT?fa;SLxWOotB7!_1fcJ0h{BzzI9n1uTkdky)uhahalV)k%t^arNUA z>3pvX;ss1ZOtaBW`@}YS)pV7Ny5p_~25CS2>0+T8R>oDb9{;$Xi7CZPFMmTi|Ge{Y znz92s(hsKp@n?UNe*J^*Oy{0=L7We85%~BMKTqHK_7B1xx_JB4vs=^oi;u6UzBCSo zN(mT+_Q-Wpislp5saA*}Jhg^W*QDbZXBqI)3R4do?#1!$!MDC{%rS0xCM{XC6q?Bv zJY(K*sSa;jYjYe#-NdNgbov=EznJ&?(pS@(mCMp17LyxKT8*oAXaTwa+n#?8#(qY+ z;f5P2KdT<}u{c&@w+9oFOBXK!maHIjm;kO=_rM$esB%|yi16Br_cv$MwgxO*M193! z@f4h+8M=0EVkh@-!LP<wcb3dz&Jx9D;t+<-7aXt@C6>TKeEZD9r846!q_LdF!;~W& z$vqZ9fIa#<w<M1X0c{+=9c_rQ06t~)yPSWX!i9kSChkqdH|H-4l6D<Q`hB$Z_+`eE z{^*&k4&F-p@_{HvSs`I0e{w8R-lNPKo~$H|Ac1&lkJ!I;>`H5D(;yA4c5b0<Uez0% zrweQ|Z7n=b*bl}clw-lRHp92ZI`tp}b_b{DJ+!4ncRt=OX0R`22kQ%bx?ABW{R*sp zCjWh`uAShgBbIUd%nX$Z>+r$CsMkvlmUR&3vX?q7hOza)nMh}&wj+7eey--bV)aJ_ zlrF2vplLEYrKm!2wL-Sfa5Pd~;~87iWHQ+Sd|;upTeS!e(`o)p3Cq#uXP%WoM!gtF z-4H^zAB(&kXPP7{H>5Hl_twYs2Ja;(5xn~2lY~#kHMn7<8uvc<Kzih{$J3jxcs&fs z>~xTJsrgU~0k^f+|KygizkBIxUlrTi!}Pnlf_YVC?y`28nyN{ic>elZY{afzyEZMP zp8GpH)91hRPw7Oq{}y1@%KF3>AXA&tyPOA=qMtlHPSqkGx9CMyy{hC86(^bqZ2N4? zOAB_ppgP<Znk5Z`+u0i(?nWurG(((}o~$0?fA=WNCaNNh{OTBZdc;yHUWa=%O{{78 zB4!cWQDS&)kEY!`ENC0s+c5(+hj<1mszr((j-q$%-;<h|<h0wnm<h0>WobmwQbqP4 zg=rmhp`BdESPYKfEoy$iUFi!<uF_cbqG`kkDnYg6a~%1o>#Nkrx{VFB2D3W?Q)=)4 z+HC7=yOAUh!(<Bw8SF(%788SURVrT(Z^P(*H|QQ2;<;+o3O?s4DJ*ip5D&A9FwDV6 zbxz?If`P8?%{q`H$Q$1eA2I<P9aRq!^MOPA$aikwO|jsei)ylmXZ9iDgdczo<Q$8u zMc5vH;)KC>sz|s9YlRxluW5?IEb(!QKPC-=Y(|p=-%6at`4|VZP@P`Mm(rs_=!P^( zsgqe4M_jWV(mg9>9;O$h#e2Vnex`j&CA5N}E`GRXCJq0gAux?Fg9TGzde;duj+QZI zVHKga1c&mgiqBD(@`nsJvSG(#oM|Ycm#Ur1Adc^?Pi64gcuIHWm1ICFBSrlp4m()% zqn0gXp2B5tDI*sF?w(9<!`mNpsQW+{*IEvrwWQ{bxoP!meyi8UqU+0F|8_d@<Wu9| z*>%_dBz*@7@L8vy%5KK2u*je#2J@>7#UjJLkro@AfW7r++4YSa9E6?@ut2h*x^4HP zX+u4%)F@THbOW9xP2dCV%~^^YCgl%t7cjnl`y*FzF!k~D;O3{&4LANY{p7}*()-@` z-n4Ala@526@IKj;mL0b^7MRivCCsXCESf)?jKl$iGQh(f8}rqEsg4smutLy|WZA+y zk)Z7!-cKA3o<oCYLihWLXP+uKQbMZ~R9sQbp|WoR5T!ptjG~B>-77N{#yn{IRa<Fd z@oDHsdEdS(2X6P_j<{h)7CcziWO~CwMe1KHcH*oD&*tQ}peNL^);b<VuwLDqXK@kP z48kkcP=FOR6L#iGe><kDL%lHNvjP+SeiXE%I^MsQXJOG`hZ(p()*y`3<<;9+7LFZj z4wJ{vV<CU@-rZ&`J!Cb*O!rEIhiXGV{jPc-{8<n4j5u704Y8{YlRGp5??xXtz|-nL zrA~?HE+u(Lbe15|oka%fmBv<?!<Q{Ff97UIZ1A%sAK@pW2+n3|ytAq@pOuA9-n658 zYdKn3*n<>HRA0>CwDH?vYWE_clHu)Tu<l`EmXYlbNt}3FLgYz`De87K-E169qwPWJ zr*zvvu@%O_1%dj+GN%VvBn(h)8;s#(gJqH`On7A()=Bv4Xrh>4g#7{}5bZFe1yegA zA&KbonDiWs=2LD{WH=tXg*@t*&}DSAtNTCx{IlqTo)QeNW__lqq5z!tckW5w_}2H* zn=XGn`lB5%Je*`^t4wn(Mex9e1ID1Klj9dJj0wQfRdF~TiKTizR<0IY((76+_>`I5 z%mfrz1m_gvO}nw09McY^6IZl{B78Tb?aY@U$Rv2;{zyU4X^8<}5LA<P5MV8Qi2KSv z>O&%g0tb83OixPJ=!%gEKzs#8YDozz+v8yLT}TAE&+vf7Vj$M2vSP-<mB^tzhAy72 zS%*dsFuCHO11gKjWSF@ug<(2_ae||Ba-&R{N+&@NSz4wO--w3>W6?lb%^v}0EwR`X z?H-4TH{wTnR>8428DdArx)9`xhBy&70s}P+zDFRv@%h3x`Ukky$aI7Mg9G+EpGX(P zi~0@IhsKwuQbnUO7*#2qiy?UEqX?PyxG+LK6-5cx+)KG=Gf~|~MyiX2n&$~Z;^l{^ zR|d0SC<3pkpE`xOpXKy+LE|c-6j9?E@ol#qJ4G-pU<-+$v5LHesSZ?RNnEI?p5YdB zp<-jbDu!F+PBhZz@*G;h1XDKX0o*gaHIC)@YeBLrqi9~yPU6{RGQBc!IlsudBLAG$ z9wJ#e)DpQE@4hsD8SQ>htD(uoe)M#F$aE?*Opyzbjqk5I*xl9*ZIi$=K`A_qTa@p2 zabvby;FRfMM465Jowzj0_&5CMN8r{_ded9ph9n!Njssuq>{cvWwkmaYeg~cP{UMaO z@s``LcyeKSD{4ehIGH{6*rP0*l;Re_1&Y5M1)eeoo?~$m0OBF)I+lKV`&~HI=}DKr z{$h3_!5!+<gV)Kd>NOHl*+om2r`>zEk)f(}Fv}34UgC6PW3N4ITaRIe@CiIg)uz*7 z#?`&=+TWS}@~=LRH2OQ~qaQ)%`1s|i@1|SRS?8P=F26Nn*r+I#dgu(tLyB6D5FWm> z&w6pk+Kc^IJs*y;8`8vX$nL=dj2GwyG!6F)%=<MQ`tA?!X$m3CAoO|JHB|lPFg$O7 z(Eic!jf|^hDsdKOj!^3o(t0{fTg<|gszEc@CB}~Y0+?RMsrta4ODX!@gfhC0ZNC=+ zpyIn%-+MJ)VVaM}DT8B1H53{hOtO7R7NuZKbAM-nT7GT*O0li8!E)TS6fWa<n7{q1 z{gqZ~#;lixSTVQ1tS|uRnw8bU!$Ek{+}pX2EKlau-3cu=IOhi9R#iY;G_I!B#Hp<u zYTXN+sM*fIkcnH{)E1Twbh@A%PYHzEA)()hTEh?s?O`erp^Zsr6>bz=c~vrGCETbg z`o%p;nDr8**{_&b$viAFz<^5X!h{&tPNY>`{0gG~;z}D&WgBdh&M4FwW(Ov$R&0UU zmC03tY}vXc?vH0G`Vty0Y49MKZWql)W>;qz^OU-BKUEMWw%K61sjA?6y<E8}TEKSs z>t1~xhmh_J=|mmO=oo~q7BT&Uk30qP)N=CwgkXZ}*hY{H^|PI)Ih_F(MtWAOV=Ih3 z^uU9#*&27&0{n=*SE!28hI;gaV7A>Z?<0L5Tl6yB^(`<fq?dTu)@ckJw+B_Va3UOF z0&?M0>y{gm{lme)QjZiQVxV&1^WowOC-p*|w8pd@i}cdpWaZmugQ%kTGhOFsAJTp# zo=$4u>j;vRVVFpncJD_SV+X+>Z4PVbUfpJ;uVYG4VMevbIl>~+>p>)^wMd#ZmnW0h z58U>5cBL2g97w&GS{fVbW|Bj)1ilFRU`T*hlm!8B;v1&SKppxaB+CF`ggT7Up3vJy zqHF!EhfJ;5qv}JsF4V)th7JY7BOc|3%~0w%e2{y~r)<Ze>Iy?J+_??8EfI&h2up*~ zkpfra1%G7z4<~Ui;#FS7#|ABpG_=Prb}y_*MG!1b#O)ZnZ{w$=P^qu)CJW+*4ifsH zt5(+oVH0yaG?lQGnA-PKg@{9b)p_}BRcw0$m2!v71(|w@GIqM><uV?kBQ1&6mooFJ z<pUidC?V4`lEGNQ*?h=8f=L2ZxG~=-ml<2y?axVF6`tbiJ01CWl@XUYs1Ej>hamYJ z<tR1w;F%S)k7TY9J_plcUE*iGN*VDff_1a)j#0PA-D#AGu?>FnYPPo3=kY)s=&<JQ zj$g4V-E{M<>Fzu401ur2Ib^(NPx{e~w;&N+f?n*bQ2WxRP95{uFm$YkF?Hu{x2C)9 zdng#yoNs1yJ;koxw+j-b@d0!%M9Ou@?_5+W?fv?9ew6m?+8Gl4-B?(;>6V|S4d}wR zwX)qnoYOX}jf12QKKxkZpp}z5?zkO^Z8H{AaGTD!yW`F~)1Us;-(ofp$Mzl=1-6cV z<J3ckmn~lzdEI*3ZNXq4qz$`w?Me4xkwq!9cEv}@#~!W)_`*{QMCy`@r+aWzvSV;B z^&j_ACH6X>X~jqz^x_6x5cuJi{|FDcy?mG|5W#Wfd>MU33a{d)S2LK!f<-sU@ysi6 zM&0(^Fufv==q1x@KO3ZZkc$v*70hn_GV!l?Y@T+};ey#Z&$tsJ18%Sm)j_<g4Ax6L zuM7&@RP(Z2>pSslWz1LZ{+Cs5Ws971@{R(;>&RGAne?dc<y8iC_3Zo`L8>Axa$Lad z!iRVe-<{zB=UJ}f!5w!FX%k08w6AyKCD!qv;IeK-E%yFE1P4aAek5a29Y?Z(C`xcO zI<0`r#BE4Hw2LW2d=x`sydKAR=SthjhYRWhnV@@k&B5h2^=Ie7pe%$b+De0tH8{X? zu9K%M82L8D_uZji;;I7}A&z>6)q;ArE&}xS@?sI+A!a$<5O4FaPTI|s2ptKP<Sh;6 z5sMQi1@aPJhVt;`CYTvkO3ip3I_=aA>90O_O?u0fm#2mE*%B6(5ZOl`dpxaOvmz~7 zx)dg6gm=B^$2VM`Zog+U3~x6&pdCnmUz<+auo1w?(Bf**nY1E^s9|T8Ei{#2wr+Wf z!&bMY$DewJ_6&zU-DQ`(KJ^~xOkeoo7t`sdo|-N=_e>@|By4Q6+<DJ^>9)J>PFKJ8 z-(d!5RuK7$?2q{taD?<wrl1Uuid+IzC4d=MiJ9>Z&&ret9fORi8XU?y9D9ZjpaYNP z4)mp)Lp@`>MEhrq0p#TFWKxMQl}}b>5b26KrOlY&5<_J=tkf{O0DBLPqF$2+ad^vP zP-mF45McqDO_LEhCOR4SlJts&jN{w5yo?sAZV;*rrS?aw%lG3z(o0V^TLcpX91S^| zB&fKbd?XpqgGjNxA1U)6>r&)Z@%pg0(J$mz^kmc|{!C0(yi#h+Tno1Z6uEk6W;asu z5&(rjdcSWtA(0?a_ct?r`IGoCS#YuwOUyGvV6s>l%!NB_t09#L>7l8~yvSaLQikpz z84E@0qGcGRUZ7)4=%&x*jhAKm{2quvEMzM6C?&&e8&!{lOh-EFY=It#8%EM44$4f} zKbBGYT+TceQ9cntNwwdLAY5cf`~~io@-QFEanWELpA9m<k%4GOkP%jj?Ptq3m!bg6 zmG21q&wPOthLf6Z+Qe-s4ef<qj<Wb_Zk&mQh7(i$ue~RI|3^OwlYK4FxE`3wR`lWD z^{#gY%`^4I7riEZ>)LN(BJ2@#0_)T2HLKIIWh+wGzC9GkLXdLDV3=k4G=GIB@Q_#r zBTvb~-(b&q?x7aXW1CLf7-qu${4;+S2Q~L%zjqOb&Mv+9HNi*^v&h}JZbf>}Ti=+z z_?2tZtQpsbL|HYl55DKEs6AnamvSz<<f7EMZ(sU22VC3nSa<-bv0f-&k6AJgqpA;o z_0?CW?|kc<>4AIi4F?nlpxG;rTbR^Mc4sUDK3@*9-8_U@(So*6M0oTpo^49(B5Iw9 zjuMae4B&tWy1oE9QqQ)((svnA7eiA8zc{|_!g>~8bPN1@eimLbrB2<tjNWxXRUQ)X z-fuW)3?1z`(_tdX!+ga3JRXQZu-;PzV~FRbovMz;k@>fZ&a2{EUR>p|o=eGiD{Za} zGP~BZ@@;^EKaNiY#z37sOXJAQcvl&}GQXF4Z{1_;*%*S)(i5+*WVumT)gNo1lsBAN zFkr00%N+__&G|YfVoid1bx46xiC;2Kp;n<vp$xDKKNsU!@{4I(_@3R22jfP)cf(2V z5mCw6iu)Uk$(-#Z2!r|$djHawbO4=X0{)d`c5P%2L`8}20HdIlhFaP29|MF&_aWI8 z`HltP=3$r))m2Jb&9M4i2Bnw0HHW6{UJ=V6@zaZ2BUD}eVQm3=UogiJ=_vo0qeRE@ zCGf>$xRC8*RZ5POr}}#_F;z9*M<<7Jpw4k{33$Rrp?0u1&7V6vJ;ou4MGNLbsA|$S zP60oF8{iMXXf~h=H-yyS+HZd^-FWlu=_6Oa7YhPy>5jYZO`rLjzfXVk2lLYMRqJxu z(Ie%O@`yz5M*o+)c5g|a`rO}hI(m8ft&hB)ll-0OZ?E}MOg5Li_M+6%IupCFY}0Kz z4Fb-h0_y@lz3r}Wq1irT26YC{kRHC+ARO#pC)aAi<u|3sd<OQc6kS?zKMahjz&UC0 zP7#ijJczs(=A1HRVbq20K~rNkC?6mAW8U(LY6e*+B?XfO;{`JSK1^395fP>KB_*m7 z_RhXx4rX<x`7>C6Vs)bqiMgmbs{XLE1%utV!e8eSqii`*DvuoQ5~q;NhV+`6%OH<> zNHt(=eR4ah>m^Z_5tI=Zv7+viN1c$=9Idkwk;-8G+#WnMO!n^3SVwweX)-MZ!)1K? z*+s-`R4=<(8{1^TR0QvJZR;V>R*Z$VGI?t#Uu3XPieQprTn3zr4^>yoGp+FrQmDOy zNX^+1XsMkZs!~qCl|g&AR$4tnx2WC7lWDblqgGU-GFiNrj`&?>!3C1^q!*8J{j^8v znpRs3(H3Ciq(91x9dxZ!S1(b96G6E&;!!Ob3#o_Sg<}Kt98wBeN?WuuQp(gECYZ+l zv23NtQ6}-tLp7nuvv|q7gOsCny`sPTE;G`G%Oo^VQw{FUb$7jb<qBxde%e05E&%2u z=PpXknD$d`gq+i+O=sY#aBk2Und0Tkm#6i(^7c?}H!21?m-vsr|NCh+`t&C00d~zz z4atLV!!F;!8O>q}g}j5)6#Dn?d)Hgjv(Igf9UP@zv*#~L^U&Ydk%gfKfyqU$zA&v? zy(;ZPRY9rnLg?;1tfr_3ukc_NjPD2E|1Qj+ZH)tU^#FM(bXw;VL;c-YIvGoA)~rb% z_~6wzr`QoVI2&_j%a<+;m)`Ee6n*Bdi<U+*Mno0jPh}q!Z-u}7Qzufgy`$Z!1-s3| zBY1}6y<^mcuKh1wO%_b+&z%ZTBo<!cen`iGp(<7~y_)=+gTQ-7cL`^RD=54A(dPwU z-GLdPjV^-4-@t*%3aofXF;UO3iA-7IsP8I6u?s5AD)1+yv{X`N-tpyJZyu&CT4~(L z@-vQOvEDICC2f1qT~eCXbTN+?8C6#1CEf=urJY4N0?A$vI!B#~1?)>K=BSg)duY>N z?`s9qY3*L_rrR?zyE+Q#@!SZzudxeT>TMZa)hnfW1_eQN%zsWXIwRAOS7n{*2Br<N zrJhgCvw?yctmd=;8<%?e(i2G#VKNUyrh_XJA2oE2A)*7eheoMFpqZ{&Fxw)L0M?hc z4jFVRv5&^|vy~jC&}=9_5pt^FcR`{(J|(C+j@ZuDkngM0nvV!1)2l@Xpb%;2aX3M1 z7RHb5BHvT5!<9>vLqc_YCr|U4<Mxt_3in3}4rW8tpFds=zV#=KDzXuFx|8)F(xQcP z(<z()z7GcX+_N{aMbH4jem)4?N$b}}A_?e{g$vUk{O)h1RoG%>h_gMoFx|*@-R?d6 zV0evYDMhK=5`=_<UTEEO|HDXzhtfOWc4bT=D;b%6eO>7*-?$E)w@a|@aBBMWXYa-y z<~s!HVgLX@07*naRF-rihc9%AyBV96|J%nt2+_mq8uiVtgw5~hgT-4j37SEIoA2T= z`mqnaHEruEeo}uk07b&19<Gdye$!V4%l43i_*&VAmM^^g?qnKLE*~Zd;(|P4E1na2 zM;kGSPhG)7ZHu-~Z^B~}_BIoaSlEW_#gw3ZHGKvrSy2_a>yF#f%{SegK5*6h(%ktA z(*qAbl5V^6?)3imzb|#nnum?w+tTLEkEXZ3`O2^eq56ee!<JbIqe2zI>iIrM34_3i z!SSh{US<4AnnC-S@JfA9`Q7sp%xUHHg2DV<47_Zis&YO$fqOvHosphN>SaA-#B_t( z4X#cn@(h^YO2*fG{0Rf`ycl1+nh@-3$DbkcB~>5N|1KDdF<|Z@c`=8O+F*9fFWOHU zx;Z4#>cOi&>o%;ss?rqmF>ZB;_k6G}jkHl~6Pekyt=VEj58QJb>rmAvj2~$zRJQ0y zK}l8z42eP!;WHbRI2i>&C=6ayARh%LBV<r87S_bcJF+ZgEDY6E&a-+&NxYXCLpwAz z2y1qfbi=)P>2XHp2QvVdtX<kZM2Wi1u4`&dD_5<CVWIM*@!+S2G2K}b-ywr(?FlC^ z9#G#S{=mVZ)P$#uWy_a`^f6qmGbcH@*D^nipz<>|%AyptgAE(jN4W!thI`N<-cOmM zIO~~F537tdoM}wJT5MSvt6An!=9FP*aXu_cU2Cy1&!N&&PCh9UZehdxW<7?Hys8p3 z#7^v-x%1Ne1&ac=+Bg^%_PrVZBd8^*s$@G91dVdFZynXhDFY%@a6*t)JDLw5@Y*rB z517b&=JOWO7sQs44Jj`movg2w%1U1|#B=tJZC=7eV+Ws8UTrKs>?!TS&qT#Y$0Nnq z@VXbzd0wZp&5?J5N^@7v?udV7U`<!el>5%AR7-ztTf_yXnHGD^af`yjk%)<>2-Y`t z?f4#0cJLKUF!&RSZlIZ4=#_9Q-y403ynSuaWEW#Pth-P@)rJ&2Shk^DF0n&!CcWTe zxr`j`75!^pH!$|prL|lwBY1$>1(Wu32bgD_TV6^KyUc5-21jBDZhF}!P(Y<Rn~bpE z4^qC2umJP0TO)!XJ?bj3G+2WI-gRr5ThlfM=mDf#?NnAr6irY$CA;eE8ndW!agAJF zp+6GBW-9H$uotEcz~rh*0D+_)T1)UCo6N*M8YHvpJZWPbREG;W&KOQMkjg^zo`aDv zpX$lJ$iw)CSSu6HNk=CWmM?;t);LE46XV!15t&3mYCr_CD5tj`>IbVAtXH`r?_l;x zA9dwwFr7ruIR4SoncJ7b$Y*FJt8Jv44glj=XLLAgAkZ}&u3EQdUApC(ucqxt3zi+X z6lVhWqgrq_OxAP=r^qxG%&_(+@4D@dSg~7XFg(SGE7#lta&ToI2c}q6ZN)i(2RVLv z>m5ia2C)O&7>spae;>MPJJY&V%j5L))6YEz!@DlF20J*!p?5A12B>4|L630=6{Q^h zY6=-G$C(76I`pfz>H!ZUfHk>a4vklxt_1Cn&`kp;clUP^r7|4=a&@U?3%=MDUX`ZB zKR-jom<s}*`7~)TjeTxV=j@)l?oaCO{rX3LGnifpUDse;nn8!$eeZqgb|mi~`}Gf} zIW6r->+zO|XERT5TX;8HqYpmvSb9%LxzKmVF~t*4{X8c1D1b=nN(Zp)V4f}7$<u9P zsjGPAflX*gOn$b<3BwwiVzS`-z|X1(#a4RN>&dcs(eE4sP7;+t`XQgAtzKu6TE>Pd z57ogo89<*fq11!a$y4VZ7L<{UHuFui3UKA<6aEJLAVykcFjy0MBh6>~y#*DlU6kt> z&&C#wVP4P^t}^B9@CMH4R73JxhYE`ma^yq7QFf#%{fSED`>_5%J43gZHtOVI07<V_ z9OMt3q`l9J)$vTCrX`#ke>;9>TFW<{2LY8Bi^o$1C+q4UGg}=3M_d3+flnrh@xx7J z^<?bD!9i%%G#JmiI+#bsM3h@9$N1Bj)0$am*w>yVO~AsoyE_(bBCha^Ie_=EPytai zOE!o!Y49ND4LUQfdziGA1FFJMyU%0LQ?^W?H7%I;bN7WE0?N^HKp*t485-ltU<94_ zQ4Zh?QNMzg$CU;B2s=Vnca(|QU6>&pIteG=8ApA8&k+o=`*2{mD})n;P46L0@wLeG zs^(YLb+l7(%M8ZNuA33kH@&Zgg{7D&`Ajf>1vZ1gXBP+Auo;6jqP8@z0q>8%!|w*7 zly!n-wkm^+uwzO*DB?#Nute3vE$l9}(QeK1c`nHDqKj_5AZkBeJfwtpzn|wu@VuVJ zi^IX#iEUBj#BwX^;Jx+rCxa_<>o^Jqn0M0u%DNS4L%K^`aYRpTm4R2(t@6#}_eH+O z4|>f_URvZbg9)Whw#9OcU*7E^{|QAHff$~d5ZkilDc(3=@F`oenOF}~<T=c~Bn>n| zAy_qoKQYzI`(&G%P`RmR7sGnyklS0&TqqqL1jlXDO9`qf^uZ5IXRgxquneyj9Qqm5 zN|=jK!`#~fkESsL)lNCt6?0e7SH`Q8`CG;+wGZ<RB4%9;GB09?pf9bOMKzB7YPssp zHa4lF$U~{dcBuMKnotqB;t(C3?Sx{dA1;`Wk`*VK7m)1AKq`$pn&6Po354lI<RTot z#3B}mP6PDM%{*5Is%fnQ$D`uvpc$fL-HvK<tD5hsb8JVwz?Guj@M7B{(q)iD`TTK$ z9%ApQ4uWCrf~dpvYDUE^qGABMg*`mdh_3Fc)G?zi?7vQj$=&?K)9B}3687%g)>jgI z!;Lqm@8bn*)v~3rb?1RJPy7~xjA9N6mM+7qDW2}mePQ}%-~IzJ;Ct`_Fbj9OS6q4t zqa9b&=;)qy%E@W-V^5^>&ptCf_|T*29BlY%57txHWD@N-TzS<MaDYj_Y_kJ!yr(kQ z4+2|>{CJ)L!Rl-#eOBt+#IKRXSTAri^UBmN)EXFY4G{TaaU!a?NRW}SObN50vR?Vk z#J~2JQDrQ&v-|wET{!|T%~OJ|fqr57+}3TBL8Ce7cG3xJ(uTFmk$7n$jfsQBtNmQG z*XOp9TVYG6^<W`!>mXWolG}40GSt$<u<oD9LuRXoQ{nBj%|om{2h%&T%H=2P?S$eu zDK$5~$)Ln`WjSWWO%c&+2{^?oAE{dTy{U@FB98AO@S;4a@FEyH@X?d!j`SubRmY(3 zX-1x?a?0{w;cGw1JbB;A33DAKs2ZRrw%7(O4Jf}?hhmIZQ<f(1qPY?Kt1fEcz*K24 zxoxm6UbRswV{IPdu~%Ux>};2CRY*92){)kH4$2@?XcIJmW(LieL4CE@VBY>5pT=#V z5Ur{xtqjW|^m*8xjX1?0t_Bi{Yf8q2i_SYdh}4YKSNFB!Au}5?K+#|0A0iLiVjE0h zT?{_CI3E#M)d1s_@q|rfAe(@Px~Jwj2rLIVFlsOh)2Mo89h@U#amIZu2e-046eMN5 zSCE1AzqFtJHBDumW4!R93)725h<bznO3CZ67-7E6^>`Jm?MnM$c6E0xd<-%wvpOi9 zJlsLij<<)vR8KOF+CjOdSvnbRqB;0E44!4X&A`Mc)J$okW%lD|xu3(ohJXpodjq<$ zs=yTETX@z(pT@ARKc}WW7OjlLv>&Em?~oQ6%oUhWuR)|{doWQp#4c$o`pEO@F)v8v zV$4J-{Gp!WyNtX-1erIhuB1P{m7a^}Hs1r?dL^C3{M`-Xq3!%d>>8`|Dvvw2)w2bv z+}Jw^9IOj?vHxIGS~Lr*KJ=$$c*;H`*D&)kOum~e_}+!Ii>FXwpl*N+K4$VXF@~t9 zL)iHOG%Dwv%gyk~m|9(;Ei?f?Z}XpW`XaWUoU_%J4<;1)qi%E13(B>e$f86*q%{pV zftUu3l?E$Zt7D!TgZ3+UH2&d&--W>#9phABKmMXZZfkB+F0<559$Mg8#=vQrUJt}q z#yXbz+5fKodpT^avkV1C-JU^VY+1fITL-@Bn%MJD+k)B6f|_dB)y3cesI6eO_wjrz zwRwf&I$;LeXIo2U<e|XC076U$V+U!t7AD$|Xtgk*94QDK2bc`=Vl=>xCA?T1a#(jW zp{Sx!w4*53XVF>b7PDYFlps5q`QExRHe$7>E#O`V!A>M^)>?)b^2uF}=V2A4QF@fB zEJQ?*5V#DF0S+TGiY|;Eur56RtaRT452vT`s<nRI$~14Dx@$~;z(xtI?k_)l)w{zH zfkapHJ$K*t07OD+mjhKL#Gkl2dHTJfv4PXkGhzmK|GVE3gFBc}DmTgr8{HX-Xs4gL zG2L?8-RKWL5~>pCsbYaSwtf!DjUkz++*;2i9{ShP#aRi9EQH%|z7vMk!FWY&tG`Y4 zZ2#z8#+9Y;G~Y1KHc1J#KekLu--M6SYH`lKoUBfhm8+_O_@>0%11XK@I7<jEUp+S` zK$%Wk(+sR*!lR6Sb}jm_sL(NME)1G@q;#+}J4N|CgGW&xwu4;o9b`eJq+f=o2`Rh> zWa`;oH4L*Yi*cCL$+2pQuwyN9qi82RajH7VjLQgB!#P&_%=9v4PBKMOVI<#Voq`eI zBf`mv!AQcM_cq%JA|5JZ8HGh(^brv~xS$@hX7QR(MY6<3=^O&>Iz*obFbk#4V_|4< zN=6#s6bG;!Y8x!VVtF0)>w%%sl7mwBc2vHc{AC7=6J0@kgXI@#^PBwFzOeqy;7Bt# zT8tvgHoZ)U-wndT#SXjbaWAY~G#SqYhfIa;&4t4>7+rUF8rd?INwysY4KW=>5ud9S zr4DuUZ9S3_`%b1;l^AL5K`e7<AwbErBgl4}LTQufy!R(wny2NclHfaou{=-VWE;3! zYD;`1l8k!6xQh#w!8VlvQt`pOEz4h##J0My54y(p*aRxoqJU|13g2?iW=2bfU<Bk7 z4AzmgA278rtwX?^(C605GHtR~$6@h~#|R-w6K(h+J_u{gv&E(giL9qOt4i4;FJd~* zrU7urjQMq<yV?pKHNlwjiS`+{HsGh3FBdsV`wadyj?A))=jcZA(OjSpmQfjuZ(12` z^C4xL3;puMdpFFjIoiLPEK?BET!RWDR!<z?;%;^Djrq7(5xzpn{wgekRK_>1MXIhN zJ?=wFu6I_ANX>$-*P>R^06m+J`bf_(jyZZdG2@0nhq<qLIudE-hW2*m2HL3_iu#zt z14#G6?msvOTqg_S8^bDaLT47%p}Hl)P52pvw-Frvwuz?*UK^=n9rKg4cd{T{L-NiR zdZE8NSv*sVbJD^g=^if}!}eu>ISS46O1sY5NmuYt10t!;qPmLxGvZEXboykaRJ<d9 z7YRzxjXoI+Dq_E^x06E(yrq<8cIBPRwXPt3^@mlU7gM|d1E<1fyjUnr@}0C2p$)s6 zJFtATm!Iz-6T~<)l(|H4A^PCZIKQ+v)fM)D7aF}Gre5l#Ooc<w7(iCXovPBt%fx@G z7*oHmF2m=^U{?9wnq|qX>)AYUSb}lXCst=yuTHkZ??v!V^@&x@oZ5v+*~%7Cm_-Ad z#~2JPnAmAxWp4hCU(M+_32BGZv07QLkjP0?fuDo5zOFT$bmF>n9THq6w{N=QVtmEV z4Ald@nhap|!aSBNo`V#j1;*!Kdf<^qgDF+#Er$Z(iW*CpCCV^V*vZrX{9k<PGx&vn zZCbhV1a=Sx(jKfcG%!mv&6`i6M)Zjnrj^T&OW*kBchYjM%aA5J0gp1^526cK$KbbZ zQw2Z8_77Cc0WM?yN(5n%VJb0UTMk>jN^xT=ivk^ZO3Uo828eWljrO5TNnDS%V#E)} z6tqbO!IiC$*1MDXNwYfI`QY|wX0Br)5rn)Bry@_L?_c-*^gF-#vDDPccB}<g2A`#d zFuR(3+qZLX`sTN<qi-MML)Klq;*!^-S6^@*%rEA@AnrQ1I9~VTrF_KYV1me|Iyey) z%wqL7pQAoZGFBsahKfiTX1T)E-*So^Id)h|6IVs@(k<z!gJznV*|})IqtG<DC073h z34{+x^H7&+WLN7zPcLSka1<h(Wgy9AMhk$a(^P)|4M_*M<4>-?Tl!kF!E9<sebr4I z-{J>0(OVhJhrpk_oM5Yi6G65cnal8d&||B`FGD5QBPLOr<RVuFSA5jW6J!K^Nyqqj zeDkpmO4f>@p?ymi0lRkZPFvU=I35)u-A>oC<!*qiumxYDA*35IvF#^t7ePod%wtU0 z9^XejsWjj@G?WsWP0^lGmJzq|zB;kG$1-<H*=<9+QfnB+DN(=-N`Now8?OTJ)SQ>W zU~{!D3JH`69KbPw(y?M(%fLG3b30}7O6?>w(-k55sq|1PHp*8juIh!Zp518^hK|+F z0dR{gd~+KD&s3T5Ger^CzJx~8&@v_CgS5@<eiwwrI5e+O;8Ix^bB#bg)+K&moVm@c zZv}=?Fy+x!{xQN)wV4GjAO4WEWsXsaA%I|>vFkvcxIH9D6I}%8wKe*Pcsua;IK6># z*inMt<q$e^ILKR5!=b$4eK4L``rQvwKXCJHad7!W^r;&eyZzv{P9t2Pb&ytARF-R7 z;;ex6B94ok@mY4fdiJ05pbJ%leJ&p4Ct(E>4^6C9umNpl>l@e#-y%kiW7-kaSVl4Z zIMk12i>QrpDr;pd0<Y{-nSZnKC;TddDJ{c!^|>uu($k!2S<ktdc^sak>Bk&maYA{8 zO4TuE@G>S4HZG*5vxu<aE+7Y)yW-$k8S=Tn3`hG<h)f;wvdizrl;7cyJ@DItR98>9 z&QF543e4pU3-09z#gya!Qf@>NrMsF(b9HKC+%hmoppG>hdx~5_Wmm+#z$LSyvx<6z zgoO{%Snp$nZvx_$E<w<A^r7lTk%w*bf6*r6cEJFud@b8!UIvHhP#p&`^dcfhm0yN_ zou|xeKzIju5gg2}X5Bg)W1u#$+S1I}lEsVA>3lM+TfMS05S_?|IYqpHgKcZlHDCTl zTE2W4D^&G*l~Az4VpX04l55QW<hsJ}A$98MRqs~lj;1p<o|N8p#ii-5KJ%rt4!e{% zsZ0BI>`E(`VBh}sH^I~mhsmI`FtmRC&3B}WU;C;wduC?3krf34V0pqU2&^-JSrcrr z&6Bw*zE=}M<4p_<4-%S131SmJPx0iS8e%m+1OZplE5p?X!)s2;!iv7n*USW0_Frx8 zTnat9QjPA!76%?mrN~0-c_N&vI0FM8nc+dKm`E&R0{1Oakv{rlD(M7KAm(V~I_r?n zEw|p8?nG+;pMURT;KOX}g+87>{ulo<&7QX~opsvDVdhNh4&sw=Gk^x@GBU~VPR3VH zUDm~Fh3<5Y_R9S&Dl$b09tu-UrygckvCp;__NJdbvN`R+>{ByRrWGu#PC)IWo-N$z zh}lH3fquNV(U-dEp3#gMMrO{|h7p(`w!I6+m+li6?02i61qAK2)`0R#3YF^V^g`x2 zCe>2Ek5_m6&Z-x?7fRqApJKFI;YBGfZpEXzIL%kUKhr+@TxpjF+q7FcN}2YD^$S&r z$j@hL8}%SP(zD`O#|S@v=DGC8fBLEP$A9qe!#;PUCC?n)_)!&!Q66lOyRA1*UuUM+ z`nn>phDy~n?N=Q{efj1bT)fGo<n7nuZTWLK7WfQKX=cqWZ;FWe55PUf8m6io)7!qI z2@$Up+2%Ql6)YMCkoIOZf&2{E_$qy4$k1lTnzU3HOjf4Zssb>;;VjQW$fz05V7)zT zrl~yf%EOT|uCu0(N3xxfd5K<_R;LL{$cxp4pQI7OM^zi^QW=~_f|(;*p<>^tj@62u z?g7jv`UZc3X(85Rj>PPmL)5`C9qSZcFcp5Q4#xGTaLPH$|IO?qG;+AfdjIU<&FRUX zKa*bfn)6Y&n#sZ2#x$a;2DmS-{=?V5l@`vOh1%Wf*a;l6P{jBiz|?b_V=TkR#<55T zkBGtIR`o}p^DbW$OiS}sI4fOs=ZwCjQbR#U{hot$Q&+Z*-5@On{qTmH;?Sc92d$Um zbv|D0Hf}hP>s%Jn?2utUevq>q&h*82F6BnC(R$uP4;)uTLFGF6!t#j+a_RN&xh>n$ z$3OA;^zr}xhvB|G#;z5McwERc-;URtw-W+Ig=G!lP%!rsBK(3MY_~lXOn;0AY1PC^ z2)p2!c%65U$Dw7+0uCYM0g~Z`jYYdcLJcl#Lm1eLaK>QPmNzj6zvNJ6c#9YRD_#Q` z>1n&UXh?DWMb=lly9F~NVAUa(F;PXLvOWjUKUM9*4(Wkm)f-#!y||j*!z<GvWSW69 zUl|C$w?ZK7v_8IXLE7qo3TBvh5?v+2TA3KEMOvzNEC{DC(yUSstKnHKAOa_biJAjf zw{ymrICRT8RFAU}PW`|6%FD3-xG4^bsk=Fb^cTm;m?3LTA9~+AP+@o&30QAhv|>Tp zfJAups^w`8b|yJx5oUEh^1=6VNNOg}BS?wnq>o<xzOW>~iH~qzanWU$q<PqheD3+@ zQQN>18xq_TS-oniXM|ZpuS4_awBz!2UfOViOg9yE%Lu(MnJ9!iF_F7{sS1$HgcCxs zTK8UN*ibYz9wzxCWE<(HAr?(T6ZCi|iG0YbJkcp$8ALCwFo6;zz0_xT&;S?QIv=lz zla5WwH9REKLtfa2+Deu9$&?5WrPjS{HGlHcpNV#xzfD$EqK9pH4+9qY$JQ$8$}bKn z!PMf46XGa`+PX1+hG#|G1GmkYiw<>L`s4qE$_skG9)@v6Zrs?qvvQ^2B<=(y5eve~ zx6Gg&T6B?2s03t+n^Jb;xfZz}+tu`$GUT?Yj-dk)ss=OvVEWsC_<EY%-j-IbI4<pA z!S(GQ+?Y;3c}=?F4R1^{XU{_t+z}H)V~u)d9I{~xt|!Ltv^1}+4!fwMsS6#=0Vdu; zpDxN|Y%6IGl%=d;8oGz=*BZ8t)%9%!u1cDf%(*qI$*qWN^SF;w_0(KDt7A28KSPS4 zC)#+m|9mgAtF9^;MOyp8$wB8L=2goCJqE7SjWS_SoiQd9cYl=N#(=T6Nv?{B2U|xO zw?!SS&W!2ql5xX-JI9GP+>ATeqPJjfD6<A#Roz$9l6V_T4@fAC$3rQf$ZY&=ac41= zLHvyabP_^7R)06HlhYtNwoZ_ab=%U*A_LME?vq<>X4Ks=k?U5jl937i^(Pn)7Xqat zLat~jdHIdQN~aDUSXH|2;VNmei@b?&$fa0c-_srC;4(P`54Ja;i4HNmUJd7FW;WBW z#HWV?g3+u}O3P7w#<6SgoB61Zs_H~_(;_W@D&Je5S$JFPMwb`joMtQ8MXKn0V*JAe z^Rb;-H#8{7;iAVk)ox^ZXEH{P!((SNdRU$hxfSnpU-{OL(g~}UrIR;wFxNCOS7oNs zgbQ$OKC`2h{-##U6Kz<gX=LmTf#bt?Hf1V6P=dM~#8}}>ErK5{O4Y#7k1;3KQLdgO zZIktuhI#<E4s$Dzv%n$Wp(v3Z_{2<`=N41s#rsJ5)^#^9C#}ZZ-EwdYdWmr14h|6i z%lB?bAG`Y9>2%JY4342P#m<}M)VP}z{hG_w9;{;~#wy>fPaRTrDjfG2100heNNK!j zF=^$pB_ZuKms$i<wOH!O9YjBC9VDCzW#*174++*Kb_(b(`}S~)lS2}}f-l^`iZKIi zu9*gGs9O%g91n!R#dm}7C(^n2${*(-55<Kpdzc{0<3p?!^P8Z5%kb!`8QX3aF@5y4 zhyM%VV0DxJRWQ6or3(-h&%em4W$y;*!v!#)mQL$!Z4MLDacud@tV%S!dO}be#<Q7t zp60%v4p4oeAS^{Yc5ygNhFEJ8GQ1vA)1C2JEN7U%O!HhO;9Vj)&;FDaFGLx98~V6i znCehJaoVs9cg|H8oSrIo>r>q!=|&M^;6km3&~tIMbi(q*Y1*3QA;Dz^4)0nu4Upw& zGjRMcH(iGLu*d)+GR*$2mK>Bqc>tpW9o-AhJ%>RhQ6CQf^z+X<7ox^Ng`Rz=Ffegb zw+&~Uk~W@sT2vuyWR5km1%X{>h`fiR?*G}tq1K>!gVGKUDo{u+msAd389bRsnJb%< z;gH|wRu?Ti^0k#Ms~*ZY7N*ysH3$>r2~hjjg^u?Bni;&>0Bn>|!t{`Y*Fg)of>F1! zO2#Yu;BYlGokS}1<4TFd3k~JJ^Q~`2VPC`BBjAjAPD>9zcz=56k%vn?Z_Z!=@edbF z=PJ6E#m3p2P7kXMpZmg>(~>1i(%O|vkzlMxveFP+tD1$&rr|1(sFXQ$Mrsri#yIJ0 zmzBO*11H!@ojc!^YgWE-g3pYB3`sP(s{Tfm5s1VVP!z(g!7($!&tThULs%P7S9svz zN7G+^?u+a)yeeIC5q6(Z4N~3a*)7kePki?8f#WyRRUiB{90s(f0TvBSHRu|GXoD{N z<fy1j9SWn(a60Ynj7@NU%yR;i6^D3OlucujQ|-p!0>VR`{pduytv`rFs~-Gk6-oV& zI>P`rgmN<QXN(MUN?%4;I4K#8zE|pm87i4t&1h-YwHEaY+aC;oW0VE(Fym%qs0Y{I zxQx~2q`O4?3sZh%G);VDdp7jRsjqMuChzR_n#u{|0Jb$J_)JA~C0<*Hbe#To;uqL5 z3murQZ0zgB(_atu<Q>uZe@vk|K4gU4Go4a8tu(6KwMOQ_Y0qkw-<L|1CMel#klC{? zbXQ2xyf?Dx{Sh)|aFurWjX&`zK4hxtt?=*X^qjD+F3)@{r?@JqbsQO_v;FJ@6v5Zh zD;ZKlDO%je{6IODT7FO5eL6&807$pxeI|pi?K6%gS+a3Nm+Ig*Uq>FqDaw(KG=V4c z>oAiB-nKDssfK0z!v*tkVQZTdE~w@sEuQRPly#HQ&}*oS#~hf@1xP}h!Q~p5>+M^g zPdo5Rw{FGKblW`-rqyd#Bk^W|>B22qCfvYNe#0>3HKc7qx3>{y*IlcFL(*U1!2D-W znmJ8I*9RAYl<hdN&Ozg1T)Bt@zo2*O-{wG1K)VmtbTa30Fbo>5<raf!U5t6a_q?-D zPv@V19(nT;X8KjH-jn{}t6xvwxc0iV{5TJD;~|uTsOo3e65lc%YmPhN>fvn<|LO%( zyXp0M3A0YbF`i7E_tFPSjr4ji^_xLQLbcdr4kkSE)}A_ZK;QmoYebsjkK-u>MUX6W z|78c^AwT1ohVqsB+jfu8chW<FW;`Xhn#dC?ysu-jiTQzN$Ex%d_LzS;zV@W&fYY;h z;oPk4-96Cf$(a3rRSYlf`=tasLEyS#RVwSC_MOa$3{Vjyf=+*;yQ&C%NC9MKXEX7c zW<T!)_za$Vxeu!W4nn?(lxCGT9&?Vq)03QK?SSbu!aSa{V+sZ}Ok+q%$ikH`*+7gW z8lKJuk(BuG-k;whaHBiQm>5)u?`NV@BF3OJqRt5vN{sPt@L(}iXfFePh{G1<<DhdQ zR3c=X9pEyfdnkC6J?;ZIN6<E22PY~Ak+@mDK@@F;;2wmje(w40>G>yqjwOg&(|`P} z4|CA1nTZ_h84|9FU{cF;085i35E1~JQ_8j?_R-zS^!CCu47s{K%3QRrH~<qbgS)V4 zZY)ef(~gR0;>W@1U<{mqIENaBl{|)EI{_uIL_ZtYk}<F|uiA9Ny44VWByxOH!ldW0 zJv+8@;O{|7IQoK&8L`P{)yn1RcYo(M(!CEnn4WuXOS<+uKS)2h`L=Y`yWbw$+@owG zMulk4WWkAF-M-MFtB64N&|kpB@1>;Wa*Y=i$dGr^azZs)R#Pf{tjI5j98w-9vtoNt z%yca7a0i4!#0XtXHqfO`=3AcM%64rXj!n)=bI}<;h?KmE!!#$Kcv5=n8!t_t`0Kw< zmm}q!J$rT<IMAE+b?-}a+j08R+zjL42qr&peE&YTfRT>PW*ZYC+_i5v6UhjZU0d3F zpfBy*nNRX-C)vZG&5i9bsr92;vZr%TY9hZDyk~9Sxd&z#3(727X0<VfTRT{EKnJ?^ zCEd+>V6cTe>X|?dN}Ib;5jxn_OTKKKLcq1%+RCXpB|kN^QK^>t-g^%02i7&=Mpx;s zrmVU;J5wKRR^qE(emg2mb&N;#6G<2yQ`xIEoN!i}BCd6k)&r1!Zw6+KFxJyrX9R<> z?*Q(l>5$m=kD9)?KTcrc2E_$~rmOK_V8~9`i$mg<*UA7|fm>|l^E1B8viMQPv!YQB zCPFd6d1BstWl$ro2*h&{R8Nt1R+m?NufB?lGN4LcJzQv7bF=u_swfcl^+7cltLEtt z3ciW=#w%5?TmxP0>g}%;UT!*>7HQ1SpY8UYc@*g#H}*pjyb~U|9R))${@r}q^~lII zc5RA;lU$8sSu(FKFoJpDSw>fN6nERC{RMMo-p+CE^e7ne5cxcC(F4k=QAx8mKmJUd z4Y=~M)58i-SLgmTZ!S(aI;O)QJKjodqlWHQ$%sCU>P;^@QEOMNVsVKFQaVq^ERR0% zIAf_cty;SwVEOZ>o@BnO$J5>1^s|Q^PP_JXv2!>#ty#4i)umPz_D>-kcnsUht!d*4 zYs1TE(m@dAxbsmgU@~w72nVb%*V@l6T888pyO{ISX(ykOzWj}EqaxLb>emA1@LrOP z;SgjeCLkYA2f8}b@i4>dRvw?)SWMS7GtT+0t6L?~&p!9_^!SroVr;KlyDF_&emv(b zs0ZUY*Fi|yKlC?)V;63+pMK_9)I4UVWyc=}y)BJ<Ed@noBl;nK#6WSz!-kcDheIO% zB42=1U;_Qvz?fm7QLewZlq({vy=@>)W>|Rx4`o{!N@*wjNhiXmxg1i{A)5W<SMgBD znbvPT(8a<>1Fy=Vpa<m_|8_Gq1ni)K*>$C&&-oclss;gl5FmHKMEOkya2SHP7(Lx~ zkokF5k_Gd!h{<IqUV?TjCE}l5mC3Q)Hy&~aj&X_>hLkUE6V0YGgJ2U)q;?etEsyej z&wLsaf-f2%oW;ph^YXiOP}<SYVV#_a%QRdi6W6vGZ^T1uSa0;+c1;MpFpof1KN^X! z9Yoxz<e2;XO<T2i8}e5QN)+ZHEt?4uc<%Xa>CW5lOCSB<dmv^jgL#hAuOfGW{Y65q zQ5VXyjxR@$=^a2^(LVwlV#pjh-$7QPZ7>aPqZk5O)W>#tu+Ry*L0w7uJtT4w>)8It zC~9g+l@EjlW%#>Dks0ah?Z%RYdf&}RBiTZqP;DSz1)m9@OI0zB%-rTjH)EAyc6u$I zpyWKZ!zBLS=ym@1rd!iH-g0FS+(<GhB7i4+RN7M=tU@KTTYNt>CSQEXud3QblDNX7 z1otB@N4!!-62zr2e=&Oe0A98>h=DLqFq8c-i2eO}VzAAjj|WiCJpI)4$FpXonXQ;h z0>b<DypTTisZXYNy#4Lzg0s(HmH>|#vj@;E{F}e~GP;JX>7&2?;egqVH~$np#7Dw; z$1S(tk$!N)E!3$dopH)Z>EcT+L27kEYC*!hZ{Pm(rE5N)PF#OtTCi|Yy6(Ckq(>ir z8b-Ml%O{&)wy#XbEm;hs-JkyC&;EjmbYprqy6tsHqT=8uZTQK}x8m{eyXn9Dr~f@Y z_4L!}+uyw|{lS0uExd3oLccIe*|zW8pZ@F<f0eFaH|BM(yCfDv_uv0e`oRycPxn9k zcu2KY9Je@K^s4jNkvS_h&zMDDLnH)x1g=h^j(^<IKE&bFul>vSVJM!8alV#``_k86 zmQFhP<Zy1%s;bMFJ46BQQXa>4u{-UhKph@j%!)^lH~0_g!++NDd@t%aF@Im1w)kp( zrS6{?k*6X~WHm*dO<%`qx(<Y{WFQa8tm1`f-0iC6l%EIb_DMzvw!wpEn%`;$7d>p} zI~S<x;v$D&d}FJZ-8bu0IexYJFhIQFmaMAKNS$O9jpy!wab*f63YM=vvrK6$Jh{fg zk;q!A$%_){<v0wipMj`{4d!jW6PVpn3gN5-v=7>&r4R))?mB9+un)Smi+KR0qOf;A zZ5jY&epF4UTgO6AJegLa)^--Vem8S|;ISv4O$!z*3Y>2RmYpnCqj}aD`ZNO5eD{No zV~6~w>A(Kr@1>alIs_i<s(kaiKS*<DwWsB4PK-pi+;LBO?5VA3)vD#xWhCw1yFXp? z)o-SEzWMc>Ntu^!`stk<&|H*$eDm$;mYZ)$zwx2>r6o(3r7@(>!_o-nor)lBKZwL% z^@va_5-*|62RR`+$o$yIt}a9(`sYEc4E@h9{3Fhq=BFjc9hbiJwQr?49c}4DSG_we z<;;p^IF<C?j7|D4{^LKVvra!b9RK|3CqJKFcfqFg_ILg}7Rs29VF4?$IKRs5b|2_U zU;64lr)QtplK${Nd^9A!W6&m5H!=oPRJiKaK33==yc9?{#*WnQRav|ukJ9Q!=#3Ix z1r)(6RFvfN2s~5|X2*10?9W|N9e`~`NTtOq2m4m~K>VBoZ=~v|c-e(S-JS1z)+^(= zxLg_jjp40?#uWDjqR4bA(QT#!G$A&Nfy`8a3%emsr78g&2{i}hL)tV}^+1ziJCV-1 z#Ut=Lm~ds3J3#Keq*EWagHAob>Tf4V;6zXvEL&6!rk4lv@SPJw-3X;)-bExT0`nz^ z&i7JW5#2;SM=S`7gpsO7UinXEoTovJE#C>;*hN`I-o>@pim_agQO12Q6QM+JLK?BK z6hvg>%Lr;2V%^5|IGk9Y7PVn@fcLuD91fEsMT&ftQIP<=+#v>@z=AxFGrfl|#jSIt z8;t;1N$w!O9wgG8GR_RX<B^7CxQ(~_@HtNY)%*(`-lFZoO*ItF)C||*;RyoiMCZgb z9$f9BqdZExsGGIOWIWf$Hmf!gFy;D#AK#h|KvaL{qgMw3Zbod@z$D#@?XJAdE@3rT z$f0ctQ$>6#fAJoCb3zQ=UUBb8!6>B5c$Z76PBNkUtqQ@55@FrQ4)wCgR1LwmjkJ=! zkeTeD9pC)U_tDeE6W6?XA?Xy39Y|izJmb`mzUi0U31RQvE>sdArbVD$!s-AL%_hna zW@fMXwnt!GTYmK8^s4jDNpHFGiuC;U7jT>XkLlWPelz{{Z!ZRxZA^r<NHIoZVpsqD zt#5xvx(Z3teRtoHzV^@8B6Xgd7B7BBnt}V<rHdA(JMOtZU3}36X#w^0#P<Hqu5>Rt z$SYQ@O^cQ+rJp&8j6LQp+qQAobYT#9w`d=K@+l6WZNZt$DkjXv^x%DWrQiO;KThws z{59!M|F8cX6Y}*p-jY83g?|c$;oS2t$}KFxF?!E!L&T+zJoH5R_$NP`PTO!&`jh|u zM-lI9|MK1RrN6(1cKud5e#I&#dT;}s%Tl)$(0Wl<npEy^C5C1y!zs>3^^p1n;Ubz* z=?-un+KQD1BY0>lm}2e$#l*lnd6XiEL#1_U@v3|^ny9MexDo}*5vI5i<N8rAvOb!t zi$jd$(}ghvThM`{1)Wq#6}847^J+6?TH%`_zV>@T*Ld$Y!+yMv9e_DjLe~LbWm*|a z887SVPjqyQ^&^>X!wH4=1{chJGpiUkaTA}8`j1&n#_SduIEKvD1*db#0qDP~MME@X zHq6~j=EZzUky`UCE!(+kPrCo1&FR7m&PPvoc3Oq5>VpqIl+Hc#lwb%||7m4DRFsfg zl1pn~OJC+vJM*?n>jPe!5hSVeYCU|R+E+JfH|OBNbIponjJ*Mz8{L>b|K;zb*S+ej z^wAH!7fVF5)27o-O`rVS-=^E{ejvT`_+`MDy*VVqBkYPqUb$GZgz<707MuMt!yahc z`N9i~(|gl7*o~i!n`+D5MY}%z`F}{SI(HM+jxI%l-JC9Y^*QOUzwjk!&vogezxDwn zxXtO=?Ym)$znrdq?>n%9b55u`ov?0g`u+do|4D1suTN*4dtsEXT7+s+GW;H#yYFX@ zrT_YSA4$g}-IdwaF8i1}lQBn^Dm%r+{+H>EL!aCi_%%iJU)XE$rX_Y+@jO|z(8!fw z!KO+i4bc9*>Ip8SJfLP;gS0~dn}^l(oI9O`$zJ#;=V7fViJ{IZ)xjD6S3Wp^i%{G- z=qi~F863?{&1aC!MYl+O6oHDy4S!Rb3DX+ej69jvcZJT15?F&1w0gZV%^FBv#Hn$` z^2YT@$XxW6=JI{A5FJfK3B2(m_{>f5Y%}mhkoF@Dn2EIpLlj*qKi=?1^JUP<n9w5< zf1FHIDsO~f>Zzm;2Hd)dG({Pvmk{_(B$VmaE1tT@7UB0&QQS=ol4{}A)7u401~O94 zDD~*<?dOml#1cE8Id#-B61%|A*S&58GZQ{B&zJs$UK`BJ7>3aYBzS=b6)mW^^^-k5 zgifa0udX!r!{n>xl5vBH7$(Pw*SLp+#bou4`22DFtH-7RcCBid*%0t9s#43Wt(m4K zq!><sgD@Xus598r8MVLcPp@#uyvwO2?n<A-Mkjdu);C?AzVXlBNdMnoel8eYPbaTk zxdPp_Ghhz1(ONp>6mT)K@!$j-%=7rGV05FOZA{c#f@QBCITY<XQq0PD-aAIsDIbyh z0ZOB6<JUJI49g=Q{m^@mkbEQkm;d(vB2_vyow9KQo&}e%ojDKZDqxojH1t#Z59~#1 zj@~l%pS3rgRV#8$gtuG$<#E8QAspZE`ioIBSsN+^^B2xbz1>~u&p&-l+P>}iv~clK zwx%W8BS>Qxq<6gS&G4c)RDnvr`ZX7&ZQHh@it=bW|AJj<7L)L4o6bph-}7lCz|W-S z_W5xVedq2yFxF3{kFW#MjI$7>x*Kr`e)l~OU_oVls6Xg7_n!OiLt?#=19(ipwx5aq z_doW&FfBI^$(D%o77nLA@#NFE`+h8KJnh`niteHP<fN*465`#|wSRxQ_Pf`o)hkw{ zk8t?3Z6@2SwDYR>G^aoL%TK5K@4r7SJ$@PeD$F9=44@bBH~Nq~0#8XVe#ATec<(s0 z498XAaH$M&TIV62)OVakB-8S~TBkJfF;i~{#ZFg#n&dC-(&>^W#O$Y1vPmM2zcP;X z(~fUj0~0Mnt*EcgC<fSln~UqbvVJjfb6sKBLb#B(o4Yu7p^y=h7{RvNR!}kR?pAF= z1_9>9*}7s)CeU;vElf-ki-uAekw@u1GCj&a$Ra4BLXBaPbPVa33!OJL$%p0IknRfO zHW<|CO&Y37f;MfXQ4c-(WE>uq(VfP;cftwl($}v2ZrZwiXIimhWk{sq^8yCKs0aZs z8tQs>fVMYC6Nwl2TSVe&8A}$-P3u|sx#QN}Iuj;w1^qZJtyhI%@ggi|9Ar0fc{-WH zXxm_3`}<WTLP#O7G6qJD(i9i{H{N_py8EuXb1A%ge*5-t?(^<9T^c(1qs#%1vEbBN z&g(8ZH+A6Uau7ZK<DfCGg{l4A7r&A&zx3j?dfkk4FO2fyMGH`|IxWVojNS>TG+g!0 zE3<VYV6LFRdbl9E_kl;!H@@@3^nv%jE3L*es%liDoIS~Qc_(A#ay6^}8dIT{3zJ4W z?tg(`_tryKn=xP7JJ<vGC)P{PYD$4?QDKqMm63H^$pclOMm+a2H|pb{o%zap<4o+$ zi4FdhW_SfmFrP3kQbx{-0@zHlWXf7#v|LFXVCAXh1l<ysR~V#l(1}p(L5a8_RCY+@ z#6XcS$f(X@C88A6gKw=6gBhe#O`(g9g8s2Ri>+14mC-ALb#!Ip2}E_)WU6GOtypc{ zXqo|`?detdJ=1nmDj{g5XX6C#cveN0ag_)wWhhKoS&n<uN~*WvHgf>trB#Xr)|ool zR@tt74DMa5tQ<h17O_IjAkt4Lp*+_RCx^@|!z3QqLrRJIXxal}>qdGygPkE?&LPm2 zx*Qzb3$rkrxtG(ha)U2(uw6~`gQw(+(sO-t`=mj>SDLF{wkP;|(E0L^QX%P3%_2<C z5l;z(Y9__xbu`trRrZ5~P7Lx81Q`WGrgM(fD_4Yc(lVXcsVdCov~>Du8_`i)k=pT2 z=XU+dRcq3_-aRYKy$!Nux@6g!bkzrbjY)??mDGD9+tRDqQfx#5qsqkcCG*pVKkz;# zon1k+8^Q0TOBO=x%@6<NO56jn3dm$wIA#uEAc&InYi++$ip+$_7|ZllOKy$^E|qbt z0cTeNm&R+8WB45J7+Y@ng|r4@y6Lo2(tNf|A9(1I^azLhKJ~dTruG@r(`6UGI$iwg z3sNh(u^!%QnT}NoI$i0ClPbcda>$Ebu_T9hrm%UOCRcw}Rg)Inb+@&_AhNyP#n!F0 zu|BFMv?EQPF&+JM#{4w;XgaDCv*s^JTkg6&bQ9;G!?<|KacMsJJ^9pA>GU(sNS!^S zFsDD`ggS1(PjJgtJ>2^6NO;Xx{w2K=%PCICJ9h3$4?p(v^y}|`N9Yd^GdY~O>5OzH zheX4cHO#+bZU*?_ubXt%sRXUup!mze^FVh@-kVN89sTERY3S)^!Ed*453=Rlkald} zhDk!al_6~t26^mPWbrcJ3O`Lz#R5M%Hy0rNm9Z=M-4Wxkh?6!_t%;!`UB&IhI6V1{ zEP{?Hg$<_ia0x1MFj@=|(#@I9IR=Le@8m61PuPWS?pzM%YqqYaUvZUIG*Iw@8JzDx zD%_1l3cu0B2<Blhj~NIs^1ty$8qYF%5OU0fu`cp8jY)Mtk$cKF<H3b$v~&Db+y%4C z7;qd{GZ&Rnt$|ZeVL#VC@`zErlUPO2f`MD}{ou_5_ure&I_pfBJ=BOOXv4ZysLqV0 zXSQsIF<nMH^f8@p0{|77lx}^kkS3II1h}De$q)I3Gr04_n2iAnEloOeVt(Y{gO-Tu zn=#17xsq-KErzIZRX)O1{oM=C*^o{?=|qaLU#6vdezrM1_UI$&q0LXEbIxPY%vjov z?(R|!TsL#zQ=01d(#z#MOnbJVzrTCWzO<VBcJ18FuG2zblvS3Dr-b^QZ+|123?N7; zSfB6z=qK2(--_wB3({*YI4i!4NRMF-k2Tmd`$`KV(&E_hJ=RQKf%x`w-YIPahgFfv ze2;QjrN7E(Rg;v7b$*>{{_vX?t9H`Ag}P%^cTTANuQ<c2gmyGNk5oj4BN&eoc)*bW z;0#m_X7kf}f&{0M87&|gd`j_9agD)bM@kUDI+<pfNEvC}6l*?1X10xItvHx>b^dmq zlI13(wt5lS3KH09G9A8eV+&fd`g@QBP!xAL9In%iVLS;Nb8sdAVnCh0GLcN8NlN}p zY<E+h^;I>)=dG-yRNoLe3&!7^CM!#r*lyuy{33Yg!ouKWd=N%pk5USl-tkzPWP?C4 zNT=0KkAoQMzrB({T3wW2os}pny>)BPepdm$pTVc<iQkI}!8+U4Cfee^++NxUJ}H?w zQjiD<a-({nMlAC`BJbF0n}?3=0=CcM^e(W{YQix3OVc=1SpEiq^?*{_j2SRCxLyR8 zl+Jc=uxcjOG?bL}_F=+|0~^g8pwi^nK|Ga6$Y;RxowNZ{a~4XxVI(Dk;Mg$M0!CR` zS4-B-OI3!-;FG%s;z)d9`%k79+8!`)0pQ2-_sYaC@t*Dp=4XsWf|#gPgD?@~6MeR5 z;eymOt0SFp?inn!`qEu@-<kgUny(?@9ZGL}!{tnfcz;4FCCEk7VNOgBvY6m_*Myq+ zJ$DQjJ~_D=Jgk^oP1)2zCecu&mWg(uqIt4f#;O7^J%xD!+kQVtJ@j&T3e5Ta*hJpD zcW-LpfY`nF-iPU<lhT}-tw^sA#sbQ%TKnS>>?JQk4Px`=M=>whl$NvI8FizaZtP?~ z`uG#+ek4S@u|4eAb4+jDzJsma<3lPR6|DL*i28-`G$Hu;Yraw*vyRaL&L1pWynu<5 z))GfpSa*NrkO7n%9uYD;%ipVR94oc-Pe>Gsv{i8`A1#XF;}>P~ER$-1mDTXgWWhL7 z6%*;rjQ>gyHDrIRp&!P3I(<906`=sUl+szpv<&Ia0~|J%>BUJ&CCpq1>IF~3sdG`` zH2rRb6&^~hBpr^Qy}Wn)R98)P94S;~zPavsQNXk@q2bb{*qNbR%eNd`OZW5Ru<Q|- z-JG}eGa-7ejB_(Mgps1NYG8Q9pQpEMOIu&qjeuoy+P`Nn^MVJzk=o+WXfwF#!gR)L z0EANxCgO<|<|+Dzzt&Sm-REe7FDgThNPWOA0RpY|Uj1;hwaNl&(zKQN5ODxihU1ac zo_xxNNMoUER<BIgpd<Pf)O^;iKM9GhbW=EH#~qO`5v4n^GsOFF`%cY$4l63;6Lq5= zO2FGtb5a#4f^}ogTZ%5Qsua6{)j<xAwz60qVca|Rk4AqtXIAl-GF5+5O0H1lScEYZ zxxDPRR11}#<`6avYRLk4G$E)s032Qb&hkRVJZsz{L^tvv4<sIH9Z5c}GENb<`pOXd z)eVwLr%C^5Vl0SE32F?LVD`pf4xH5bVM<%T6oLC<f(|BRmhd$bY7H_DmhGW8JJ9a3 z=;|?SSrWP#lslctd>{4Mi3))otp4E+Cc`;+Tr1L%Z4fOPkRyd?2?S0ZpD3I^86G*M z_g$3NhlHt_@{84$IZKve@&n-}D@j<%$g5LhyNy%CE3TH}_VGT{BV15ufg&V2ymz%` z+j^J`7Q-maF2Tn%uS5{`wl|2li~|f!7Yv`LJ#A}I|6-+S{Bi*3g@o7lP9)mMBpV1_ zrkCZor5l<T#7APRJ51T6$~=eJzLIdtUVBw1R0|f_ItIGp7(Dk>G5~WHU@Kk;5#N0@ zb1Te)&p!IX{;~|eYeLJ(qZP{l9&*tmlnWpw$fFP&Pxn_dyTZYV+&n8oNN{O$@t$lD z*68N4#Psq)#@+!YT2>`5XEoJ(BTV(pF<TF(5U{39J*<hvz5RW(MV(}HAnAn0rnXd% zrGmu^u86u^`@J8f)6nNzgTsy3S;#=5AQqvtu}RL9Fb=!S;FbUzADqm~jkb;ffLv3) zl!Ny|KJQ?_xNs+9-8fC1#SwO5>d?VmlfH-T&mB8nV4>2NwqrB+$}6v=|LZxxK^&PW z^nOo6_x<5VA5Z6;wF#AnpND$GqQy%>zt6*VKmN&0>9f~-BfS<q!q;4Ic18o>aV>{@ z)Sb_4L%C|@>N^ScBK6vI>dBO`0eITmHWL*l)J1gp-GJVtQav&OhIxW1+FA5{8H_pc z)Qdhr=Pznh<Pt?r`A57hw(XBD#duanil3>NI}_YZg5%>kO?^i<VY(2D9tbh@sHR<X z@m&V?1q2c^(Z_8^ueZco2kd3vWI}5+U5BcMV^HSS!*0UTdKWNt2vxR2OoMcw<D26Y zeP9h;cX?(^_zE}4gv_z&^<WkYSDx*6`&jD=N6YM*zxhELBQ!#v$%c}0a2(XZxL66* zt{#2ti8O~DjMrS4rIilWA#9dUXQ6k?^*5*2zwQzk-g!g^c#PRHQko}uxzO?_L+OF* zW)!AnGV^#V6<T?rBC7Ui{x6Tw%8#~p;&b(r!Y>!Ds!8Z>+kAv=3(V=d)vMAy_p&hE z-<f93nTM<LW_EQB(0|fs7WzO~6KvhxI10ili`HCBtX^)fVtg}_Xfdxz*SBunnHtz( zn!j*K34UYgjMGmEHKjlNZy)FI=?&>EZ+-(iQ5;ss!`tuxs((kQe|39`XXjeyC1G+n zI$Xs6g<OG03kxIX)lp!+BLraiER%4p{o?=tKmbWZK~y|Ifm7C{xEFV2gmrbVzPKuu z`<QDAuy`%vnyv`G&s4p5^DB52sOrrQV*Fi95-C(W$gDvIh%1TAh!r3`20)Qkg3||b zYZYLS$xZ%JRR#~N*-J87g=Eh`Y-jl^N*jO17(R$E^SqDAP2E{hLUT4n@J{!_N*5(c zhYNnDYPq0E;uhs=>ZWTfOLomqNHvmh77VKH{A3Cxc;!ICS{URO26+d1$<swhm{-*T ziag74xp4q$Yj`?D%oCPQ%jSPP4E|Q^7&}2YAyxKCW%`$LUog4Qfz$~@DRbTnW6)23 zxe~YUD%&;*n4+&#H8HP(rEp>vZqp!a2H6MeZ=P{{G4l<Px8AY}*Rm1WKa@KRObSeh ze0k@4bCe-<i_YM)$K_B3OkIeK3Z~TeCdmo7R)m-cs81gR)Hoj4p}Rs-+rk8<G)f{= z+1`9eZM+Zt293|sor;Lwnx_-1Ot1MW0g6RH>6;Ox`$Yl9_ZQDzix8RRCip7i@vfpc z@+X0vL_swWz^<;I^iThCEjD&L!rFwr;sKN)#*34dI<Q~;`nS_wObeN_(ibP9VDQOU z#)WE=U6$N9aVuHZUSyP9t|*U1sH}7GZo)NVu&*)%Ee~3Q#RKINC*zG!oxZ1@c%0&D z;>7pjB}+pRtR;t8I3{SvA&3Xyw4!nA?RRouW_LOdPlfd`q5@{;?!D>OyB|y!UwArB zVBW=KjEOVrMLTY~<@PvmCxa7hs01KynoyZgk|a~HMm<Q{8_Wjz_G0H-JH(?ben&C> zpPLHY$g8-QK1y$L{$xlx)n2CB>EJWf$P=3PRn<A<nb?$-VOAa2Z$}EI$#tDPX4Hom z(wYVip$*{GE5DmOe)U`Pc1Nm@A*t)*%!IPAWFJ1-N4|SdO;G=T4(bQ4Ct~M=gw8>+ zAOw#chx6KyS|OSZ{)l{wdKcHqvdudfLGmBRFz(}7x|7@F*mIb~SmB!t1N=fBlPq42 zq{dKLCS4u<s>eJDTSzuzFy~m-(;W;grR-yjJ@V*d>GX{!rq`kO?kZnKxt9g@wjEgN zx#`aMzG}@{7)8#(C;%dZOrPirR;>NK-Kn1gX<C$NsO7Z&w(Xef+KU=cNAQnD{Hz0O zTFXbtg1lVR`&@}(!l}qV*O>VHvt2UOK4m7GD+oP`_&cPsb{aqRew`Oo!C1R`b^0P6 zNgsXu$#nKvXQ0N=M1A|ilFPyc^V8Dfj*GHS#J>5DKJhsgvOClIjx{i_^=TK2+CTsF z=hJ1cyC_`(!)u*9;HR3@dg#GN-v9RWiO>B52Uk}nRolkc>bH_vwILc+RR5^1RvD5^ z6JXBE1NEqqzG9JVh3888;TQHGU>Zb-Hw!$FnbrK5hteVr@g!ZUr*r^21%;Ytl{eeL zj-<hO_MQx}u=KeI-aCi>N;A9yM<C8&k}N_ckbGAOHW?Pv99zgleGmpkn&4rl1N_WK z$)=2v`n;YpRINcZ1%DDJCz0y%>`a-#MQjC#6#Wno4yl)e^_Q_!2UjI^ZjU+`Rb4E| zL_%YTrwk2cISz2281mr^Lx&ilPfQzn!n9Y8%jdwlUXhib?P~y;wN_ys>gC8t8Qb#w zd9P~63oymYuoU2T%Mk{PIrW<39z#P&d!%4pY*#<h>wXyAeW+?UxC*&d3=HBNO{vyT zI;oi+<@KhCg$o>jERvItfo_eqShj);(>XBd!kBm(6^&MeOq7dv#WhEW-kA6bJwBv8 zEl3jByYld&b&~m&5h=<pl9Z~%1nA<<$(p!GiIr};fO68G)9Rs=j6*UmN~4SP*21w9 zPBMI$B#7??(`zB(W6T-iwfXVg(zQTfhfgW7A@2f@#eXZo|M-PnS<(g(x6|lD4@C6A zdHndM>(VOhT%LZ~1{Q#fae&a*+mjx~)o=@rAZFpwNerAja|X;|3r6vGg+#s)oNGkd z_VcG+;GoKmU_MPNVYW}SqEITGYY|{p)ZyTJ5oDwb6$i^Hf>C6qRg+Q5BV4t?tGTl4 zZn!yA2sWK@IufM0Om2)s49)KwX^T3aggxdv@4k<={S@6}bbNW1nb+{WdWU=WcBWHL zUeCcaJRpMCN_8K4;Afa=+KXM%MWt%c7RtBpo!EV;xwK8Eo`6+}yVCjRp2@+Rr2$K8 zy?5_!x+ibH7Ok*vg@IS!iPIw@5$|kYeCDGEVO{f8OKThxmTV~U%uo5R=>bc*-|cp) zOr3ohxmQL%@;&`0J+<d1EsrcCSN=4Cr#P%U=3o+;-hRfAX2e`LO2c$RZT*E6YZsVJ z#+PMa_DWdc&6=`>6R-m)!bP23ncr^CjcWbDc#{R+tBx=hhu1PgV_6Z%s8H2Y5^Nt8 zjW443ERFV8PB&RWyt4{HQ|K5OC(}@LNd3nT4N_Ma!D;M1sp9kaQ%|KwfBrls|K6O& z*j3sC<J!sYRU?bEX6BI9ctE@t{CxeTmqvW;KfB}P4vT6JtC6Vw;JWXp>#zTDy5NHI zQ|I2DF@9a#tzWaeT+=}ovjgD2A?OGu%{<(@e}7lrmB_tIBUoH8FB!LhL8ig<5#?nD z8OswmSy2$d@C?`sN3)OuYH`9HGG8oPz9PN#%1hHHKmQf<g1eI@0PntkbNb;=ZcYFG zqgRFgzCb#eaeDS?C#KJS@vG@wZ@rTDjqJMoC?xCa*R3Njo%rBX2y>yayF!|?&pabN z`Sh0b8BCu2XAZ=L9o|t?wqOiLk6?#aI7}AoGtc)*&vn>Pz+ketuk^b@K%~C{r#{c} zsQL-oqfSX5F<FRnMUdZ7$kqZs5eJL;sG6l}hp}h`fxW6aDs5FA)AZt~I3bVa`2V+1 z0fA}+IF#kAh<uc{m7Qi1pZ#g(%EL!{Sn}?IacrQoWFlMW^k#@f6NDp64s(3#=FbkS zp#x<kUjX^1Vf)pUk98#rm>nbw5ZU?crs#lzsD}*_So1W<NEP)hlC`p09)MwYg=A1N zt(#sa5N!<47)D(KB2qo68P|c;k92sH31AI6q?V;8l$;kOk)?xBW6`Z{(OX#>VI3^Z zJPo<zxP8fgq+PBayO7u^p&sOg^>RW8N&6AXD^)2fWxY(N>A7yUV_KM%9dHe7QHD+~ zZ8MmEZbN>Km!&^SKy7x|ODr*%mEVu{-aH)8?Kn<omNB5HA&#B*Gb3uV(?g23-5~R3 zC_M(e%kAR5x`!IWpN&qU`sOk-)itkE6@!;W9+6?iAK#m&DjT8e2ccDxR8wMDtZ(2Q zm5SV_%7}d86A4`Jd#_5j6T{G0Kf0hSCOJ4ZO;1^jB^lPsuXsHU6!wOLi8o$$A+|Ud zg~W05V~?kA|L`a2>i4`YE$0BAl5!81TzKA@>7T#-eH>BDOmpTh3WpH)pi}E4)QbZM zC006maGP@n6JBP{$0rOAp={l;oA?0P`cl`<t^+Wk*`9U0^bhb*e|Vs)mxUrydRpUH zmhoJ_ZcV!Od)I?2qnun{4pY#Gw5TU<t&a9_7_~Xgoxd<GTe2Yi<>&t?{oZd}l{(s5 zW31P4&~)CM4kSTq(+@E>*U{0A{&stMe(UzwQr=Hp=FFN&{|j-IDr(TH+{G?}mN<rk z;eP|Re4l#ei(x+LlGmJv$+!BnzpFdl`qNv|+2>x6E`0SxAVwAr*sn6`9=tM$-{O># zai#h8k#W421}J@_iGk<F7Y;IabYVG|Mw((`QN;XxXWm8=*9x6J9*-$lP5E*2;r5VV zu~8qcGKckypFze<<(N1m(IhX-dx*-{lcC-uYuPE0aqWcB^_xG`=Tm)4u7!(TX`>5E z^*zH(mhot8EIJv`yU0&^UR{?ci!r4Q;B4cUu?oF6o(y#zgT%6&V?5MWncnuQ%H}^A zQ=g9%>_^s<)T^}6A&q?^!x*%y)bHjK+xsw~2ch+sf=gOQaZC(DbN3wBl@`uim|DQy zjhH3d{LtfRA5JJdtDu9Oww6XPG#@h4B;QpZ_+Yx}$JeK8zVLTx(bC1~%~#;Ee$H&p zBe<_64%VmRm#>OLs9EiSzDA#;mHaP#?fIA^>j+wrp+6Q@6z0rsWAWtNh<Xuofp{yO z%K6o%3(na@IwsJ7P&5)6IGR?jSd=a}Z&T{&+Djq*;aKL4m%ok!Y4g%8w?B}+|HE5x z=(9Ba{_lL418?hLm{E(s<#-#1Os~G`-RZ~dw0!@2*M*wUX(w^0_?>S~3l=S+96TCw z-r@qz8o2m&5$huOO_yI3Fw@G)65<K#mlEt|+wJbc5aZSP^`+(b;%Z}=&X=lZx>%ae z;-{6l)A6~BMZSVDLs2*1yOTV?`4!JB$*lX%dE7Q=DprR>s!=*0KhMsvOB&NphgZ=$ zmPP_<|LFIA^Z(@CzlB!_0-}?L)3n4;1d&diPdg}78<<!;$fgToCqO$^M$Dhal-*ue z@@N`YMW(lt)vwjivc#@7Y_CduG7(~)j(hdO4j23?kthhB^*!Jqr4$KN2Z*?c)wubp zk83@em>F6@9_!JAgjA%XxCx;s)vK#9S6dp0R!>)^QpvQ4sO1YSLCgXnMfg`b1an#* zP%?Aqc>-5xK(xm;9VtlkJsob_gi8)t54@kgQ$lWkN?0VJM-!ARI3b&zb$qEoVjzy_ zg4IP&3ruir4blUMjAeN^Vw8oF1x{9)RiG)cy{~>RNhSpCQYz&+nqV}EniHl#E~G)0 zVOzyBrH#VNIu{EC;}y>#g&}@S<i?@TJiswBjKvQQ@acs~Mllb7dZf1PxJf<%O9#{0 zUfhgBh0WNkeJ09&*W2C*gL@A5*&V3m9JkmL)Q#!3JMTlSU^8{CL2`2$Qs6cYR5oJa z;v~vrVS|pXwoWy3=GLa${BBQn9yowrbzeH^#1q2m!a)e`4m{y4<^YN|a$R3YewFM# zi+Q6lRyik}v<^muZAt*`X?9f^o_gvTT#(kJD=vF&w5z*sAP%tDHcxdU%f$vM9@enO zeAy)z;z4b8+KJRm=4BT4h8Hm@_Tn%@so4|cWqCRgaT4_)%*h)zAQ^5=`*y?ZGO27> zzZS203t*~;aj?;b)sN+PkK2K{vj@^<CfOZ3cHlf?eL5M(7)=~_Jjj+o%}77eITk^H zyXecn1Nuc;Qu)sQ<v)|Qc$R4wpa7QnCp|I9+?ro}h&P!rbm1lL8LJWIPswLak?}V2 z;ag>yrQ{PX)<N_W*~O`;g1Bg2F2a?ZTBWIDPo9hMU6?s;WTXbPBw<Dbi&je7ihbTj znPHx%a}`diK!IXWKlAY3;8mv-Q&n3SI98S1>EObjQejP<^?6@<cK1dY2v6H4tYz|! zW*q0kanN#@-RgQ2w5zDQ5i}{qDlyFmw^YM%47osU(5*Xj#xQeVJqySV)D+IZ5<&+% z6585b%>m5SE0?p_f;Jfs#Oc7~-U&Ex*>v_<Y2&G<q{WyOT+IQ@<CZKzoySAE?0C+b z#k-aCT^3o`kJ`iDz<8VoBW<5bS6omnU9y-1Xsb|{XasHuJcfFszuhI#ov}MOrkhVW zy0#rY$cn;6HT7*n?MFt|1H(C>eu6amcvKfo-FOmo<*alDdhknO%z-qni@Ve4Ku;V% zZe@JgwoN#`ae;j@Y7R3wR{(Vlm8o{z>`6buWic=uWkATZZv;NNeplT=lo-JlZ-}0c z88eF-XSypM##{z22$zg+mf+&b>nj)JV>*Go2jk_BH1R2JdRSe7n4z);xmGS(b-;xr zoS*zsF;_args>2Lrxh&EIu(m!&mYZ(k8z%#c3|7X6!UN4m4bjByB{g6w&DzSoZGT9 znIspYmY~Ow#SjDahM(m$w5uN3K076T#Fc;)%;!?X{z~zjJY;zHk+;&|`muUW>MKdh zs~VA~4Vp8LZRv@q!(&zOM14#)ytls3qo=3GxDKRR?J%O2p-!-;czdC&)_p!qs#YUZ z1+bpg$SFM)36*%dH6g<*<GTXG^(_!3ku`5$WK<6NTa^!wuSj?nW<>RcIkZFd5f>fS zM`qP}R0m<1dm~G!_Ux=pJ)P)NFG7kiL#YMZ|0v#TE>8JZGuvrOZI6{`NOWWjVp6HD z#4$c=86X%e`b`KA4FCV^y?K<L$911sz3(e_kOX%UAjMVtPD+-nUA8RSu}8K~JRT>u zWh=?}%$fNsCuf|=%w!zLnPg5fkrO%2#Ihw>vSmq@tX<SXN|8v4I|-5?2@rcXx`E!8 zd7fKeb-(@L>qa*Sh@^r7`g^xpZ&ls;)va5%IM`$Eq^vb!nw*8%Cr!ezdw7xKXn8G< zTZR)kLCfAlq1=e$y`ia6faf~VZjL5?4I4VWBvhn;wrh1g9gNnZmubhOsa76ysy*SE zIW}=Lcg5i85-5VO)Wn7v^;aFN%<&xh?jxgYEa7<&8?+8+0<(Ff@@~*;_7D#k;weDF zVN?QCBiMvG!KU5}h~o%t`au(a3l4t7X<343Fl|PnTHc{Js}#-jYbD1Ti4SjjMY5%i zu*<z3RKl=NKW~k8)64|34ISEJ$Bw4o`{(}}Fnw$Kx%a&*O-|2oB=IqT3u!>JUaWBR z0Xp3j(}$kECrSwtj$=o77ErZ$V3-MxbXf=hZp|y@jXXeS-<vljVv#rUD9x<{X-Vd& z2WZCN9sr*7rPpjzN9dSNv-?Vk?@-$Wo3H3M5W9M8sWh2EoyPVnzz7=g&h{smBl(q% z5As3>CcH;pxDEe$Jv0u#K>$tDh_=_uhOaG1M)jlfYTI$(HXlT_sxwFcO8hvnYUB*A zF0H(dt{iGcm~JKQ#{L_{QQjGsW$MDl_#Aa)9>-9!7XV8byU)%+HZF?m^o)}}s(`qp zAN1gzI=@G;M%75dYnY`nlU98$jkdhgUp(`|w5=akf$WE{<0Xl(;I;JZ$QD0NR1L4+ z)tr8n8pb4F$zcl{k?2=hWyUg={stf7UO`QF*AU|fl2#@L?gBBL7WzVfRx+X8Sr3Ic z#i^32;0SK)x14cL`y<noPSrh2rkbA(!c)3t0Zh$=vrh;2<CBtBC;KfPq3u87x82VI zMi;Qbo*fe%j$Up7^cr2n%$P8F3SECp4t92O#5SN;+L;aeO!RB|lYJ^IGelbQamErX z56o#_9>1DsYhn`6O594+b@oU3v>WVfa4p0g=^D51a83BPPITti&CFqomol6yN3>Bt zT%rw{hsZQH>#;QST=H><m2Hm;uB8~II#bE2-_3IgYdMU-@AZD9xI#5YgbVIRM1g2f zq~*1fS%+Y8h{4Nyhfp_ZJw@NsI)H;fR2tW)RIZ~m4j(RI$=0P9!DN3cOvOru$()37 zJbR+9Fh&v))V*KhQSXA$PCD@s@}fFJ69a0_2TYjW?ox!3T^mxhae1%0f&hLqvv`+n zgOTw;z`P&8a9LLm%r>h;6bX;nsm9~;`EZuObj-^^^sq84ba1NCyDm|s>Yk2g9jO=O zUuvIDy*rs?FaX=h1PwDV+ARPtC6y9<E$~*C#L}aZrv>WJL3ce?HkJZ5ys<n&Ui4Ox zV9d{*pp3S&Oyw@hz;F@uFvnyGEh>Oj8|6@P@3bd7+ZMPdbbB3~rPJBw%{Z5IdTYQw z1`ZNgOX_A$N`7*#{3VyvO-DQSZ>a>bg`Zr9i%36bCa}xcCOBj;V({AnfHjN*rkmFm z(Se(1&|LrwHv{mnmjZZdPW^z&s5|Q#e@lZ6ZN13>&ib#pc?KT`rZxt`MS&vm3v?H; zU+mztEQKLW+P(HUJ9`E~2d#-Z?gV_AmJ%wLvwz6uo_)_8NFV(55AdGJ6M(j-!_BU_ zolTt@gMPr|1vchUPkl)5ThN~$Y(^5sfV{xqI?o|0WE#ozK(tLISh<awY2sm$>R~QQ z$F;OD4gza|7Txohx`S4W?MTc>djN@>G`GAHD5XjZkB6OAPZFtM)CWAr`YTcv-&qfW zI<m0j>~n$yCxMX2|KTt6vGJ=kHPR{}cwkNt?T%03-)k>m-pQr^jL*L%XQXR5KU<eh z?v>P=&wA%8iWE+o+0MJrWgn-=)uigfHF`EKX){He>IC$94$uOU+)+Spq0uOZQ*3e7 zJX14h<|bFmD1g_W(phzY>(h_sMaXXA)So;9mKJFmqiHWWzU!w{iT;$Rdr*e$)NiVA zDCzaE8~b8Ab>*QF@(}5ErU`{{J86~ItE)dxds<M`Og_wt?c6qJ-N{ooYl<r-kJwr# zjCpWl=t=t=JhUBvC_rt4_i7?cs}(U>$D?Kyrx51!vU*umh-PDQOG1=qjy4}FK&aYf z)h*MeL6H&ryLkw3PPv-sH_ML62}j!6uM1t`8-A=44@X*rhpO7(q)xX0-*4iblWA8) zb;KIs1=&$Byv_mAn@D>Bf7w^|XQnKtZr*QEAGQ1%7vX}JcrT5hp&`$uGhXZ5SY7lh zEY7-g)ln>RuAMY6R#h1+pQonzyq=T_{i=D2u&V_2wP8Fz-~!;SQtdq6OK=;N#|o>Y zJxU|*rGfV|>l1YO-Q}%as1H2F{TPE%8AwXDY<PlUc9ey#$|fX~p*KfhcttF07QbhE zH77DB^)|;zOLJ|eYyJemZt!cPgS#`bFwl~g4a?cP{w@N%Yw^GXGc32^14wYMj*hl{ zf7H(WImntv^WymHB9VDp&1tS@l!-|*wu%TAb=5q8ihzuP7w`oB(AR|V_3$^$<|s`Y ztr_VmiJ1=vf2F)LFjWT{X)GWjyBmv>0Om~&(t(s<8j!RQz|I({Wd?nRkQN6zfUos# z+r%<21AGq~Z<aR<7>{~_N)H`mV(>QZvv3xplabW{C(PlIowE?2Eu|c_XQa5u68DyE zfytpKAxStTqJbvD6D4(3LUo83tN?isylL_TOPknGJ%wb3F;Hn%SAUi|N&DOfY6Okc zh?07rBc9Q*BVk=c>6Ua{b~$7ID)A9KP7}X5RV@giE&!`7J@Ck5>7IM;Phb4%x6*sq z$-Z;PMbV~a0p$H2l}w1^9B81Gj1kNs$rl)Z(>SURTY7UnIb1a%!JlD=coTd<Te1s) z2NI38zMLzbiBD<yQNFu`IKbqy1F+k~0Ik$p`=CwG%+e@1K0XQ`aMoj7w2^RJOw+-U z1r0xi3s5Qeq7I7J{AJlsd6v!*3vre3@r}5&ZeTw!4!=>PI8jWfO-@Lc_QQ9-350T~ zBJ^oL%Yeatl<Ua6H*~Z|`*ZLt;`Z<!2Yol9*>g7HOu>2*^mYS!wVtCYfqJ!;%gvzz z)?Tn*DZfBUo5)uB1Ukfm;zo4rP*sVrnyb@ugeQ#p!*pHRwrwu+CpXfS)gygJe5CKy zwyiUa^d<_NZKmdr7j6_B?AG!Gl+GT)SM|r&H2>(!?uiIq65uTR%HcBoLyFB9A+NI! z>illo=|o*8OyBX|maXZ{PI&Ketk3Aj>{{1jlu4V(r5+3LHREl}tegx5$c@<jA*A^e z`1-_s<g+GijhA`|S}y0wK(+-d-$@0(OKrn2P7V#D$;jgL6;T<k=CVK9Rt?<xy53*O zTcK6>spU7{`@0;cPv_D_e)uul(pA#fZsNsRCS-0S-n#IioDu1ybTOF6Nzk*bcCX~0 zb%CDaqdfcq;C+rnJY#Sw)kdQQhKtepQ)hG^stc+kY+)AbMzsK7MC4HDvcJ0(pW?m| z=#^osO3=v^+=1^TONh>X)pe6$@oHt4Xw=%)%yiaY6Rg@&1%>wW?Jy$sZ{7K-N<iq( zRN}E=TMjpDUCc=~+Uz~XfEvuA=1;Kfam9~vgsXshGx0@-s>E|XZ>60!`&6;WY-%|* z^RKHXm(SC7dPir%>n{e)+ThS7FhYWe95Hm11;}X*>92s;2+zVP2@4%tqcRpMz=577 z6m`CyC@o(s_cCm#tJ>KyjHKi^@oFh@xwL{=S|{~{6%FG@N<F|p!hQ@G{Bm2eEDq3? zYx%ABXXhN)1-%RW1)z_3SC4C>v@F0zM7AI@sygaXiR$F+2zAK>1^PJ1&dqW#45}Vh zp+HUv$D*_s8Tc2D4>)N!g(sJ01@2d)s<T|-EB!7F%cL6;V%rlSBA7e3$B&JqC!cyI z{o>EQJB}Xh;54(42qO`4q#cO4;X*og65v9f)TGyqvl+(a=uOPNs50UsT|ma7cGbAG zOfhhYL@G{N%J_Gn6YLkC{R>B#ltgQPJfb770&Oj6L|?9XG@K-f_EY!HZ%!=hC+s<a z945*EZ5N@5;9G#g?NWYDf**`0#|5~fy=Z;IdUfE^uVgHBWIXzH(&2TfJlyF|x|^nX zrg%ZOlAm%7f6|wJ5Cd{8o?cXX{3hl%-HkZCOCw0AU_7M8CyC5_7-vi*sSNwP&vpZs zkyT9_;pDZ*Yb8znC~e)2WY|fWaa-N;2(ecO9$bmZo7b}1iGVjiaC8HYJkArQ(3|ER zQ3TDn#I=;sxOJBMuq*S>u%9Ed&BJO=5Gybgvxn+P#jnMPKF@VoJ)%-L-rHte#nAah z(C&VLP9}F#jCJxT(>MM}_-rqe2=i&Xh%j7~G~<nOt&BT7)ZPWXp@V8J=6R)C`RtQC zY7WrtX>!JY8Vw53Rz`IC)0+NPrkevddUtxX=lYG+78C2tYBn5w$+hiX@|Nckkt@II z;z|yxIIx5LdNtFfCERnlTBZwt_qkATgJHF*ATUygb)1=^%GnNI?jS5qp0q;J%gj;c zYh?*2)f3$bAl^)v2_#a7FlbJ@2}V%uOG_Qnmj+(b*&MSc?_Aash%PhzEb)-Z?43Lr zO6Fk}q!y<k9pDC0f!Nj69lEdw00QRP;m1CsuB<kM4d>=HcVVj5psA4a4SLO=Wtl+A zwjW(;L8L4-mzW!zwAI<kr9sunJnKg~$?EytTd4;vWLQ2Kr_y=>P%!+{7-==uweQUb zIE+l@K}{OT{C!^=57vyp{5en<Mkz@v?WUuBh+Wg8F>s+N2*^O6(<FjAd602XYXLpE z(d~rXszwYi7RLd&MyfT_KhsC!QxZOnBu`KoAcIU->!cco{{7pyBh+aDednOa6)O)O zVXK$cmOjeP_Am>`3(J~;a}C%<;@NN6T%k_8JA-ZM1t3IZHNRer+j1?_%{Tt}+r&vz zw{WW3jj4x?Wu~WOcYbP&FaTC764#@o5ozxUFmP$1e!<uS4jzJTtJW`Kkk3H~8!eab zwHJD=xX4rGIp3DR%b|SZpZ?8`eO-{1+d_sFp<WOk$%kNGV$fiGrIQE5iU{umhVx;O z?=*pE(}Hs+dFrpax?vwOE$hN}eduf|C4c(aW7s@>JRKi79`V{g%#U%K6TC(^9wXji zj&i<!_Z6|JN#p<KWRA|cSOdm6l3G+!oQy`hs4xi2An3Jk+g8rTDdm+X$lu+3mk$8Q zt8$~LFmCZ^V7~b$P#oc%8_()lh%^~uUxq~~?Je)GkOsA!aTPE-sdPfrN}pEEpv|Qj zXp}dv3H0C(L?Vxvp<Jp?#AJ`~)=}^V?lsq?JL1W<1@y+7#y^5t>rXRl+%A<X%1l%O z_O)D2Ew?#op~TzvubK;4UCNgm`MNA4DF{eygQ~1Ju~}M)SS=yqaq{k5*mk@^&|4Qq zHmLAG&@H_b1lZ1g++C?9X>L8*_Lkb%847QI*X*kOS3wz3#9xfVNbet?Iz=1Hb!`9j zJ|?nU&!@Wpc+V$wYjF!w!p^Km!t!o}*^L$K(Y4PY?VWC42x|rI?pMpnZw|bw2Dp9) zPmgdaUE6p(ph3xohRlf~I%{cAr9pa7l*`ZdOXFM9)p>I0D9$@2JL>F?u(YJ4+QvTt zXLOK>e$TVg+KW+BQ0nz0jajKpFI-tYK^yc|)+Ci?n-`5nA3#dIAJBUR(qQ9XPO+rC zv1=agr0(g?JgTkxG(f@)YW3+^KYir22|`;>p{IL#G)r&HtGhn8pogY;6s>5CqW+<@ zx1A9tOI|2zrEZo2Z{(&%6bC)?=;-INyFkHrXQG*Y99$f{-0`bbhUV5`@`aj;jVfA| zzs6K)B|LhR^+_VI?)0e-<BMJ3i~uh6(gbTU@Nt9A)NI3Tj2sS74v;SK%MeZLG)LOa zCg?|Lan78yL;~KvDWq_@9T7R{ILIlLQ@SbGDbDue*+9G6u&_X$4Wnc~04G@s(iYEL zTcDvpCt`4P#W{#9Oq|555fUwyisu*D$ce6E6BFDy2LmLv0k#P%-5qGP;^6LnC%TeC zD)=pfUQEc5oeX*-2@=$kzRu2>-)MHwAnuJOqRikzJ|GD3rC`o)F);dyZ{}GLl2;nY z8?U8Zk*LMeH6AA@tJYoy=sW6Pj?bcIVq~^GK)d>+d!KwJ-ErsL>Ex+X>Dt}br%SKC zI45XYHD^i9=dxqchPkVc{neLZ=lg44d2`x*Io3F6b4vKVN}?r4-kJpKyp*rn=ltxS zbXI42l!~;drnONga57vMst5~!S@3(%cO1Q5H-_4$bd!85C#}Vc+K+Yap%uNhIWtvr z(tLpo3S5gb|85|({!F!5K2ZBC(6inIZR#m6nr?gpFcPuf5N3ud*Btuet@BLis-PDN zxM{J(SJJFrtz+}kM7m}{sjoELsJd5}rXz3aQcsc3Q>-%Czbu!aULEJ*Zl)+E!k@g( z_7)ScYKB(1cd{T5cNNDds?KNWVV9Lo4#x^?EQ=cvrQeUcv%lI`oV-|ng-+6DxwS1* z!FK}J5x}lOtt(miia4NS(3c;D1kzPn7XQZ3D8A*Gqk6-S{vxjG$1~iQ{9XXOXCTyb z{#>g?39hLOuL9NqmJ^SnOQ_Lgm8mt&q2$)hQM7|ldGItfnXU~@omXwuI%5(PAD=`Y z5XR)U(opPx>REQfJhkgsl>)3)juKu!4m1Pqj3qxs)xtEDEN=(Y_9MleVSuvHnh#YQ z)JNRHH+7<(z%-MEyqt}7GWh-MRMq~S2UR$LYYD-PaCQn$G&|TdjlS>M>GP6I<QRi7 z09vHSNX?NK$J^?U<vYY=Lv;o_Un#FwdDbPUnha1bS)M1pd89E#Uej5QStOzE4z}ZJ z$zl?5ffE946f4D6eyZs?0dUUino+LnqfFO9pvi%X5bKGT@r`A;JV1e!0@&xo8W+;H zZ4Ami5MfLSVkHqljLWdw`)Oaihxb=M=V;IHD{UP#9F%Oc0(cQ&fL=0Nt)nwUb&fvU z#{hA}R$7OHx%#V}477#GTTmwesubDoZ8Mwb$4VsiuSCtV@qeZB1t0uonSGR`ZlIY# zIW(lY^yMr8RbSj)`Z+ExF*vA0Y8nCw`?u0RCsclye5-=qN={7Ev^V1Hr|zQH8Q$Jy zpK;(2#G8JA(ptMTkCxK`(#8>!V(#rD=2PcIIvUv3md7VC3q_d+X>;@Q9GN}KiEmgA z(WIL8jqm!eKTP-Ee?Rt5Uz1+?vX@~&V>9h}eM6V_OphLYefr*a?@E96mtRb8e(f#k z)wf<p+H9I7vu0E0CFd_oK%Lliv0Uzi(Qi_~rEK+W$J8`A3s*}j(v&}+f<DqxKxLoW z$-#Ki?-=StrEW_yl52?lh@4jt^eykbmb}F(RUP{?T=r2?&t+Aj>4YP1vel3I5Zocj zWDH?ml@2X1E&+6VXSy*(=eWd6qB*KQIsOJ+Rj5Uq)5-Dp8xm89Yu_-CJkWQRZ#gH+ z{_F3o8`F>uI^%az5c}Y`*BOthFM~|<Yz@X;0IcP(uhhKiy`iJoG5M$Lb+j;Ud6eOm zj_XPpEsK+Ni&iFY;o-;d$2xO!u=OE*rIUgo$07M5mlZUYQqs)+EDv*BRET8%k23{m zLz*Cy#}}vn^*GzNah5a;vm8s~7>Zx{jbYcvH5$it;q7`T0L86P2|vV1OhZU%wF@VJ zv;*an$56tDF;6W{q>It(?E$F@f-^&gY0%PaI5rqh8yRP?^TeJiv+0BpZtZ1RorFqT zDjjsqZ0cVRwM=^HM&h*%a9!--DOC=21RFk)3h30qHKAxogpoOop^&enbTg)3v_rcW z`=FkszLW4utCg-ki%Nk!%#LFIwZo@bwM{iJ&+BzNP1(4drE}<*b(x+GSW%u@EE&X3 zlTO}4D+{yXo4&4AY(Ry1nV@rK)eLp4V?fW|R{R>jb^ry(txcVAgz_fDll#%BlqqyU zA2;<0<OMkDt;r-UZ_e$C=r;6Vd=6AuvPOKySuJoaHpixA+W4{tpe(pys07=I`7yZn z{snDF!@O=r`q-rOn!(s-omV&NkDS7^9%`!sBI8(3TQdsj<6t3pu&o+aCs+*7%OImP zh5t+6vXAxs*2d)Zd8Q@0dCgtc=EJi2=RKFWdLL!;8-!Nx%zj}zX$GKe0+`jt<fRN7 zw(4A7B^lxqU}c6Kexx1os78{d9jFS>ui^wWJeaO^VwsXh-Eu{+6!hujK#=1sF-uS5 zGT)6rueD<@nP&6LB$?><#JLSPlWye7dj~#O3|Kpewr;(-mmrA8z3nwXehE+_^O--b zc6d~}5_IXHNwk>IQ73Lhy60}}0YCU)`oIT1kY4hVmz2<v=F$T<(p4wGt~zb2Zri>i zz4P7gO&9OFEd9xU{x8HkpI-gamteNaK{;ntI)bgWK4l~TDOYO%HRQ|uJGkfk0=)3+ z#<QGaHMRBKn?>VvGnoC@sNJMDhV;@r*uQ*Noc@&xdw4_vf&x2UFFCzyA6n}(jhs9~ ziFR=UHLcw#lyIUK=CNqs#!-AVb9jyvm~5X+J+oL80rc92bt7!1Lx3E>#RD?>8`yi# ze%WV&^xpj_jvd2npw+BpLq{RZzLH_fS#>^nLY=Bs?j?{uRyoB&8m^R=XFTc8$-U)~ z#%FW{2wFgQ)0GdIbWu5x&W)V!9rI$9Y85|?!o3*ZNdZ+$Y=^NS7%E3Qgl5t~9#Cr* zQ9SFp8=T@wt{c?bn)AL9d4q8&-Sui+t;ZFA?ho3D;7{x%-6v>Q?yvDUVzGs*%f?%E zf@Hz9c@bk=0K8S|oR9lbTg0tIbA}~Lm-Zdt1d9%TdQlHlX7voq?wv3e^-TpIg25iZ zqmp24`FhUu!Zd$$^k``28OA)0q_hK5MO$DfMp#{f)yry5CSik^SBhgsa5mV!Cgi29 z>V9P~8q%l8FSBeUrRsmdua_FGai~|UGv9*WaT=rzw3h+RvK|B=j`1$<{|>Koh8D`K zB)cUI(J0T9@7z&n<is+IR2TVL`~d;u&e+?zm$K%=r4{Y`If<~*OE>di2PvKIS<I8Q zHq8Q5n~<b;qytEUOGl}ZBxknrYsb;Rbq5<K5_U?vsG|-fQkGX8?UQ`7u4D+F!|tTT z@umR8N>m%VrAR9VF7wwgkF^hZDG|^Cw=t}|X`UOIwa#bxbpSC5QgQkp1oS!phkfVT zci*32L(L=%ub<|o9-S&QI*Pig!+U_480?8-g;yS&6zF0XH}|%w6@KFD+CP@ZI%ce1 z!{u08ntO;}5W4KyK4mT}hhQL%d*wOa;a8Q54(fUqV5Y98F$qGY;cCvf^ygo3)q5)@ zf3KxNfIKARd`JgLGt0?ct*Aa2lbeTxBc6sQPP9(ULjk>;1pr2;Z?2>CvC+BF)YY|( z$?BQ=Sq_=YUG5uQ?PK7CWygJ{3;m09%|d;f(7QDAy}UqOcsI!|&bu=T4nTbfS{{A$ zk@Vn052X+M(l23<|N2NHYzb3I#lGuu!o~*>T4IXJUwm)-zUii$;-#RstEVr$?1rn@ z_y^yhVG1<0a4>|PwC1?F0dV$R+mgJ?jeE9RvW4WA{PS*-<$lX|HqLOJ0Pe7t4IQMF zmN@K|^=*kP0C@9z%b{&vi@DrtGo9r#t2u$8-}A&O`|^~$u)$88f<7gg#^9f2)g0qV zQ1LvofFUMWO_cX26J7IXeovu_;Xj=xF%I|SDYj*kzt}F6koV0Yq(OjSdaiEzJ%=*n zvXfV-j?n0%MU#hhg-VZgT?@x`Y--t}O*eHTI8zNNq`a1?_+3tF#hsr+YD*cMtXa2~ z(Rdo>1^<@8_Ms||;Mhs}kFzT@wBD^j>%w=AYvO>@CEbgtIAW%g0Egf`l1HJEw63<> z_0UYbqyTN0iIVLtOr4Urcu6Z#bNsp5T&)4qkyCmSY@7zmRX%zF@UDmA&(V(+VFiSK z6a%HZbba=H8Pu&bpQrfda%l{#Fo%oKaqR^_*|?qoxT*Kr%Tj9_fV40hml*8a2LQwx zwHIg&@wXmlKJ47i{%1oGFNd<z53qw>$*lL`k58jWU3}WaAmu<%bw2rLImYp)onU8G zzEeW25_@KMc@WWJgZVVy(}2)f(vlu)IW7Orp}e4-1=+Jo3?4|>##^bDpM|~5{24^0 znFEFciKn}nXa7vctDR4O+gX~vgx&E6I0{y2yB*bVx<)w?ycx$a%4JRjxt9{&x>7ww zaP1@}m?s3bHXJmaoX9MKC`SGqoq4OzpU;9Eghr8;jM+NSd9}V{;|LFuyRI6;U-;#_ zbQl6W9RgSxIO67`;ZW;NM@U2okIRjHZ0ZP8TYQ(^RcGs-BtR3Ot*5y&B%7yYoG{Cv zw@%VaCRfX6HJ$a|3yj(^dSA+uDYHyVvoF}GcnI3rAFg0y=E0gi{!)4dFtQD~l>w9l zI{`H>%lXRr7-i++1Qs^1rI9uxrEOZ^7)_;W{6E6RRcT`w>$ZU20qVqw=_x0gb7O!I zRjB5Ws=_-6p#L*DrCwEQ9rgYr4t}g})7CkEAep7-{I>45=3f$bf+AZ`qv~uPqUan* zGvA&@j*q2>9(*{x?JaLU4eWaQ+h;%fS?mIja}@M&de=MOkp_o0(Iy>)7t>e2@}+d| z5AToXH@yCJ>E>H*&E@60p!YB*;NAIyd(-fiZ5%Yv9TH!|x*Bzij_v7$TL5@c6!Jy? zmcNEBGT-gLZlaRtlO8`@SG4s!8oS_G^#RpWjHA?HefR+;ojv5q?|PK)$V)=qf@i_3 z^<@5okB1sTeJmN2wg5n_rvgajT|O5HUI``NQcX>|2v}6n>P3aYeypi9vtl@}y5n)i z$^z;IfOx_>frw3Wd^4XrQSdSifst`nUCuufot3YbyqJerAp^mvrZ<6vS5*en=Tm^x z(g!@XPTR%-V2OB<v9coAUW&8+#(1o2H^{XUhxu%jA18QPAR0j(Q8hz#{5||7KyPHI zMw41ujQ7XYSvDt0u3&~vF83C<R3ndJmB|xh8(BtLFJ0sj)9{67(BU*4+n4Vkebj&H zfrZpw{ZnYAN})JoUQo=lVJ^5I5d}&`Xmie8{W2~ahx#sBYH%Zzrn}VD4HW>mhD!n( z=2rhV&W*<ZoHk)g?eZ+(?O>2_u=J$1X97TGNVwjj**L39UWPLXB>?hIB?C6vr-@sT zrv$f=vq8DU;6^S_k~7>%0OYf5$T3FabT-z9^k4@k%sJy1D5~Qd9~(p}m826g?D%s5 zwK$tF?3hOe0PY+*kb^~I-%pxOB+Qc%b8R1+#!k`|v;>&vn;_iIaSTANibVm#=Dl7b zYd&Py=6eUazxq`-Sl!(o>d|lc2xU&z!EbTqSSBoUSCVl)ozcsHEmtt^Mv2w3Kz7%3 zepY9681)5Rbu6XmG3a>A@(3G^4zR?29PkzTr8LGG|A)~)Gk#_kr;&<d)SY~(gB;w- z3{*40qtX&Vy83^4d7E@V((78H%-KBSuXU4qpSiJ=*~JNRwTd%a_NjUY48ZhWR{#R* zyXL*#+Zmr{S?!tekPK|V&GI+Lk-ga#=W>pW+f@%~;tIqRecz2g{xg4l49=U`wQpUN ztV(x5@5lsTmo|TJ?ih7|-E2IK1^wN)naOWB{-5?|=8Z={S3Br!DSp4{N_xgo1u-SQ zYPIGN%fDIbn!^=UttKY%Eu504#Qo^uXQ})7bn8oB9)XHvcXV_#{jb0Gd+G7LkEiSR z>`veQ=GW8z@qhmFbn+wx#(nB9K9PR^_x~VWef8C8GrGRN`m28zm57IklfEYk!@ca~ zujH_<lN=L$FnELQ%ChPN_hVQ{&`Lsi=X?86JK$8X>%eIrb~BxHEOgM{Mx6AKC-~PW z4&MnN2hrWF(o)c8h1oaqgoM5Zlgr0*lke5yBSQVl8=Ron$1Ia2kS{fIjzzoR&+<y^ zY#7kHjrJx_tp<@+g5HUmy<EYr?V^-Ru$w`4eq*ZUL1}e94CM6G4R1J2tXbw#A3aR; z1hFM<LmHo(@tj0hKI_Qk_c?e-HJ_)alEXTgF+cV#n%&CCD}kgz8M_s1=pt`q&Xp-u zN0fTH<en`?R098)-iA6F6%g&JQpQ3?SE!|1wZ1Ce&UowC>?V0lmgyXmmHJxeF=2~q zt}@^4ViJ2Pe+tu%GNwO`8CBIC<bM|=yb$PoJL}1+@{j%$x}B4BFm*s>96QkU+(PBp zF$F0CTmNLz?*3PuLCXOdyfLF{Md=%V?XyVA{Ku%=!cN*w^sG*`VbX{M1*htgZp6t% z7GzB1&4yE)op^-woh8MIZUETF89W5%&T{pen_^}jHcmJ6^aBdbhiV#Hq!8E}hmv1G zZc%LreP-fllv~Tkc{|8&mE&6KLdl#vpUtf@U9|opFG_ja0S2CB&w5;B%H<Fz73u*A zQe|!fbi_j(D`^K(s;i_oIw|xU0FV#j-xFYDUJ)@#3W7Hy4R+QTC(hMQD^su8oD^53 zpYQxa(2#n_Ttlyy#^C!UhU|ll1%GzV`Z)NyrqjPdWCs=pXxo}mo(ngCB>{CBCy}hE zLnrVxJ#`x=Xsex%J(A`)d;ZAaX4)lE#4xmv2|jnfSR~rk_yUL+nhIVPCQu3J#6UbY znwq4q?<_mc3(YVF?it$3A~XAm`yNR%muyd)20`BXKTl5DnO_H2)i|_ot<<RMtS{f# z7S1*&g1W_pDcZpp?ZUQ$LyFPV)Sucr*u7MX+4r_rRb}Q-SJE7s=KM-qlUAWWNrsLp z>9t<CH~$`$9Gl&m`shIbwdUzGMr-RMknPK`S|#w5Eho*92lIh*AR$|n-$@76M*UU4 zM;iE(4gyAX`b<+l`5j%4&Q$VJ!urkou$xN&`Cs`K8RBV{fDb<OXnND_Z%X|G`DkRk zg}e9Od($HiJ(xc8+0P+~Yfm@cd{f%CZAbdhhyFpN|KWf4|D@mf-TyiL<Xhhw{=ff& zyVL#m-JSLTj+N@0))1!3-gw*X9QJWfx@gzsytA+6T$o?;s1(zyDm_kmN}WpwxsW{8 zrsAeXL9$Z5vvH;;U^0%XGdD_h)lF5pF-;}tM`@|w92*2w0zxN4h4$8|0NTu%zj|l; z7N7`r!*Q`K`o7V!yzR_`NsKC@<EJ;wn_-)mRUgx^3_7FK#G0F3-OvDWK#sqb11x{j zo4n6SgJX<<-TXFkf_BSc`>-Nl4-v-44rp##w#%p_E=D8Z9qc4e+^ZXHdj6<xp_Ph; zj@M3JEQd6aPq}%vsI=9GiF7EiWA+k=<E7Cr)H;cIGv8{v$<xZHRUg-n)3er!922CS zV~-OL>7crUW3NK6asGI<VP}}~C;hD($80BKCm6GhTOMhBY)23=sE#=Isxr9eLJ6}g z&YmK70q|~^{2L1(!>}Xmq=P6uv|~{hA)@!2l{O3rQ&ev!(L|3nY+Vv}P;y7(B<q8+ zWCtOggVQvM;LS=zYRZZMdePzSVQEmq<2FF!--y$9kv7PfO5>E_qlv-kO)z*y!BZT0 zs&iwVI>wqyvrIa?ML5+eY?yA|I>`VwNO|JaHcH_P%mKLYtJQMpdo^@bVaN@>u}^a< zAa)a*E@ZmsDGItr;CwQiDY&D%j-QQF#d03aUkv;a%8ry7*A^txTLJS*)hFS!cHFH1 z4mYxOMn~gJbgsuZK2s74qKny{T2!lEEQd4}M9Un)<-*0Sr*|2r@^jmbY1e#Zzm;Eu zNth+t6Q_fK0~gs_HC!c%4c!X-l=f=w?j&GJJD3i{%@5p{hQEJLn%;GBI(75SX|``5 z&A@ovQLXTO2;IIhkmDrasqN5cI`P1Rsb%CuTI}jboiD#JHEkPA^DwDy08CVL6pJ>l z3Iw9ciF+SQbKm@Knz(UK>Us0aQx9v-PQo1Y&$UxhR-6nRK8bX>F)f$s#fDr7SHiD# z4SUBeJ=B*LK^zDui~lK;@z$5jfz!62#gnChww8eP-!CZd1@x-Z%X1FTK+Z&%t*-Ih z!m-26NNkUwds#{(35~Zr*P_Hfy^8m?CkHP>==6Jn@KdziLG+0AW8Q4a^0tTye{s5( zF9aUtWyFwwobV|Ts{f>g3W4&`W5?6L&~SKmf>i3df1sa<$O7MwaU$K0bnMt@>Kon~ zV79xbC;iDsKN0qf4d}7TM~@szef=CiU2}`ZMI{ds_u-?*0;mfB18|!ET85<Iar9LM zg2Mn$2XTwT|8Vwy*l^Is(+b-llvX`7S7mdkFIO$tii>H*q^hRUP(GTrn~;ZUpwTq7 zsU53rPT<W2|K(jKWScciaW+MP@DhJ1AGjJiCYI7!-o_j27g9xC*H3H=YI&+oI`jZ~ zw=w}fg4(rhq|i+pzuIW-#KMIe%&6i>({zLHQFmclv6A0v+?L6_TPEX-CL|yw4fAF_ z*lIiy*eHxQ91rU43X}z((!+1gLj=6iBGkBQ-pfVcZ5rk+;;P--HcK9g-*UxE^uh96 zuF}0^$hdOr*7uLUvy>U++6NF`KzQrYvDXc3stbCOnybUncg}(&g_46{3pdqk!@sw- zqOG(&tmZIo%O7(eq|T{C&4)VP`tJhZJqyBbB#4!y^iOkM;L!9Gc6U_^P(t7gL?ERr z9Ylb;jdxmO*o%p;Xh?i5l^ve>v4b|Z!(FD}j381wxJOOyV5#27e69~u!k+0WV1ft7 zY+R;eJf0BeQvEoayUe?d)(=MjC6=v#apP8>)ftzY#SXKiupO|kuyvCAE4q4O`QJ@r zs&=gHEVo@oXD%8$eO1*Q^gG9qtzk`qGz7MS?MWJa#AV)b{^q+JyJhl}yMF4$LBWj{ zN~E^~fZfct!2L0Fx0G7<A@#5f?oRIlTyMl#5*c@6kdzs(d6sb~J&W0EEdj#@CHO9* z_928zT#F8$R1H71Fz4zL=@FU7nrb}14}+kG4vnSZ$DT;d1B0pa#CYoZ;+NC$OD;-n zmt30boVMB7*PKqCV5j%tk<|bAzF<ZR&Z1a`p29}z<VD-lG=JOCn+SvPl&uN+9s?Y= z-}6vvftfXL-<0|v-kT=(T%J0v*@c-T)mK(J>$1G7-mmnv`jgF~gMoTX3n+NAyksTX zk9Dw`v;9T;UnNn4me9qE*XE@a7};~A7)kieFs5Da0<6@(<XOK1fDprlK4SqP(wY4E zYs>P{`{JT}d2}eRmOMll;xj*0Cpc8i;iSe|SGa1-<%91Uy+8f6zM5eaN~t^81zA)O zEK~u!H{Wz~`rUu{JL$JS_}l5d?|o<b>X*Nm{_11@C2iTdH4+>iMi02=?z;0kw9kX- z=9_ORua@G`0z?ODG6R50b)i{ANGFi$3fAnJrOa9=i49pS<Ez3@>ZFv&T2r{79o%++ zuXe|$0i~WuDRum=EB^CSu3tfz))}hKbbX_QQpuxB?2#rfy$X6mLJN;p)*&$CHtM|^ zPngo<dmI2#{b2m$E!525&o29_t4ntae!pI|A@kCU&i-r{s$kHqIP*f;IU8O806+jq zL_t)R=tDJ?59p#_-zh{995-}?b4)Y+LIWp0@<E^LC-J_kcODL+PHog49_%ZEU)877 z&8<J~x~P`bOSZ{EjBg<gw?Jp%q=;F8g@Xk7^TmGyPX42%kC;fnKpmU3pKkG0WfTPG z4Q9EXH$oCgxf3f^+fYf&lYXs!fIW!QJrxQStvmU4sWsEhf-U<s7H~F_;03=Mr+@?D z1hbGsGwj-jvGg+o83p*cEU7wx6+piZP;(rK=_r8en(j`(mgn5N6a4hPVkHVH)!RKq zBeHVi9YDkf8O(EaGF77~4AUm-V7ZCel6g`m)*b9al*clbJowE+Ge*e265uN^JgvUX zK0v;@U|oC@Fgo)pjdHcTx&YaZM3#e;xobp;#vzSYnzpuRA!3@%aws{F2Rnvk$`X#1 z9WKH^IQ4`~Njt<R_}dBC)&8&{HMyq5dJG_JIrM8io+VEtmB!9InqLReSZ-6A!LuW% zoxTZB5C;s9(V#b<{A`ET8UB1a0Z9`~t@+esYX8=E(){5gX_2F+OT!zy=f1Rf=l7y5 znwfD1_72t?I{_GT`ZKe|LBkGoEIaT1AqNgnYdl9l-y_Lgq%UYyB5|y);@0WE{bri% z;z;hTL##Sj%Q>znv&AQGGQ-obSV^yPHDq4o=7tC)pJS7*mJ624)LjR(2XM^a>VM5e zHZSIv$Vt7I81UmujDY1cZLq1A)g4v}!a2PI=s8eG<PAE(gh%kIZ#{xaYdyFqIm;Bw zkuTkskF_)<`O>$#eE8mhr7lRFuXQ}uB~aoGde#LG{zHx?F?D$C=#g~oRhOqeEG-Oe z+Mf15^AxA2&2a2%dw}E?`sCA3Kb?N_H$RyE)gS%=Di7PDO$eHcv{<ewfE`5MAYbU{ zAk~G5G&bAA=3R90DV=@ZzU>C7=`qakAxlta+I-fR-KOVcO`s|8jYAOtt?H=C4~@rg z{@BEeWY<^4`QCV?tzBUZAlbnNEUieW11}g1I#l9v&Q#P93~L$=_)4_A*ZIEcY|84# z%j2d2f=bG|>CZMz+ny3u^KvFf6fr^6HnC>fOvqs7Uz#nTVzZT12SLvqTlD=_@>GpG zCiSEVnPQBw{sm0B)mFLk*YJ{mh}em^!Bhvd|EO|jIn0ms;zqv?>M!VnN8g9wp%RU^ zhJhT>f27BHCjoWQ1TRq_A92vePRnzBfFGl0Coh)Q-g1)qP>|P)3SmF1(w=pyRTjt3 zjm!lgWniLNHtZ@av)yZj$xZ&M7^=eQ>bG%b`F|#;;q2p6V3rGjH`C<&{X%U!n1@V^ z!BM&xRh5+Ppn?RgrDCiUm;T-CB|x@;<QeMe9VIH>p6wniA8=ljx_Nb|ti9&$?403a zsgE=S5ITQ55i4xxNLo!Kjj`)n)e9T7hf$cS`nUqxamsR8M^7wgJjMnQnNL4}QGJ>) zKwXQE%c{=w97x=ZrfNfmqN{p8?SseXb^_2_prz!J)~4M_XN32WXJ`GHT9(%m90t&; zd#v8H(hnuO;qb4NyOr>xl%bzar%v@|&A>fZV&@cA{91PF);bWl1k)zp;rLLJ42-L1 zT<sDJdydJHhWnR&W<TfVmz1dI#j%MruxUq1Z`l=Tmpny2O2Z^U-^V-JQSnpFNAX|( z&G%JPOD-YzB8qEbS5fN@`-LHLC~ML0rsQ&31_wT`;cVBDc)kb(BylC{LHikOvUXyw z>dbCEeyXvkPpNIln$84i3p%pR)T+Pr-`iLFh)$`ar*-KBdI5f`*)uKt+An-<Khs%u z^Pq&%m7I7Nzm=Z|%X2lp%I9_85>GV_`DBUGPsN2dJ_;!B`tEnrpMU&Q>0=-J^VHkh zn_m0+H>B$@S$5N{ufR_4^++mP;&inSedt5!w?6p6^tw0PMw}(q5@YSk>j1%&a~gdu zEk$hVWX}YAbYxN$sl3a;z9#^S<$ENW18gMoU5z|Tk(!EmHJ@#)6f^<y)B$HU#AGk) zqzbwOyVAJoEW7+$r}W%*IL<y_ZS`sarOl07#OoYS$*>!_OiMj-&+W7xElXLV&mhu# zFN4R3oFDn1;A5DTxx*ZO;{JuMX4)Z*Ak<8V*zz@UzBaFUQl{h;t07FVdg&j>Pytag zUBU`_n^3WFQlYCxDXn~=nnA1<axXmvF<Bp6d(?X3eZItZ%V-;|##KDI+3;}dM5v;< zv8-%{w7g2n1^E;;@*ngmjlLFt{lz|HU74QsQSwpmZ`EhQ2-x!;kTPLe)%TCp2Wh29 zOX=!igkPHQZ0C4wf#)FYZX4sW`)4)+daZNS42`>NNORI=yJ;bf<Cwow;v2$1!7u*u z1d#(U0LB^sxBz$|%6WBEM(!{+eC@_zvWiOSNAI<CAuC2#q@IV_y{(b>B9Y8rmw)ZR zE_W9Rjtzh_EtUrP65n!&v%8ZY1n3PWk>Q1D>9TnwB(E@pNx<&}O1`RL$gs3y+X=Vo zhJ!vmJ;4#fESmv%gRwFosgYaa$+4~do2`Z--NQ=5MnXEEcekLo*n}jK!q`bPa<6nY zR0bG`Jdnc4g--q|&{c}tLWkMG@`<zzFy(hDvWKwl#vP-MjNbz|tl#tHjJlB&qNHbM zuXnZ^?L9YPAGpmOvKyjyeQXV$p}_(cF#2}yNv*fMrh$j^`)XkUD<S(IWDv{dwM@;r zi@KuhmRH8sfHZntc2-=a@*JoI4$Vr`4eV!qgQS&u`OiA9cZ;+KB}f6XPyZZAG!e02 zRB2zm%g}|lB&IIE{kxIB`fzJKt83i>SP~$ZuSU)#-q?J_XS~)5OM9;YUL}hoEa}^) zOALBbbwXRU0*n%@6kC7gzEPUK(~qD@S{5E>HI)3SQX=RVyz0t?+xzkHlWF_*Z2@+D z9$-`3?YG^Yp4zuJ0Pj2l-@pHN|0cchjc-i9_G`bUm+VRbYLD9aodx{}5Z%o`%Lc-x zMHEt@zMEZ#Dd6bT0QKPsk;~;j20f+-vq=>Ps<J_Ii28OO?FKH1VcDhuzXH|5v#Z&W z7J}U!0|M5j^z7Jj`}0&cb>`&(re$3g5F1PJMC4{XSAuN$PJm<iKPMd<#7whFLrEa* zhXD9pZ1_+o(mrD|QL-sb>h)dCuY550Cgrdhw~LT#u2;!7`8$YI*Ya5A0PTQY{c5kf z(8{<%ip*8otD2#@gA!xI8Lxhb250Xuclt$7dX|l^@U(@+l~!;pH!`KP8Rcg;O*bik z@lSO#0-Kl27cCoL8vi-|NMzL?LAR%iHCM{Is^<nDEKdQw0{OLgd4u3Ds#ns}dV{pF zBI#+Ysu~D(oz#RuQyRe`PG8-`#)$2J-h+VNvVUnk_2C51jcR36ziCNh+ol$({Bum! z_P^u3Qr`n$5LcvCd7w31aOax>G8-$z#vo|Yj-Si@+W>*S^P80&GhME+w96a6)jR#U zjNUcJuI<`K8HtAfWmbi$)Q3CUXPKa&H_wchn`FM@*Z(jp40MrStQ`P+ZFDC9T%(k6 z0AO!9RReIwt+sDwU+d42lwhG3I$?*8I~m~m9KZpotR_m>U&8<e_kuvM!H`5dNVqAj zIAawcj8ND`tUP#RvX&j9ko>BeAy~FP^<$^<unC=YwccDsfb;kxeY-gA&iqKVGb@j5 zEHf_OcQ8VK|A9m4^N$`&gGhHEWjN^|1FAX)z~XFARp+PDW(`;UT>WMk!%iTHyJpjT zy8YU`q(#$QqI>wSMP5m=_U6nN^AYWxAD5zwbFB06IE;F@h12}V=<-+72MFUiKw}A1 zxf-wjt6?gim)=*)Uj2SH_of-ZgTMlj)m-5@;Ep9HA5j-l3D*>d&j`9oof@yI00DYg zLaqdh@BtvXb4hbGXTI!vZtx17OVSbuc&`ra#7uMAef1UT!Tat_yLVp;X!F3B+)sDy z+Lb=?k&mRG`I(<duYdjP(_ek+lj-9h|5*A%R2OuA`llaFpZ@IMra%7UKTeu3n`UCx z#)e3Nu>e|dI0rI%@V+0WYl*w58J;pTK_4m8aOxHW*4i@9QNAbO)qUyIG!yMwacm!_ zkeoYF@MOyXy>$f*8sTvhN3tCSpOp$O^-=Y%U+w;G?X&!O>f`aj<A7z8WSmYXNN=+Z zz2=lws>?gCe<Bb_*#Om54Z8El|8RzqMajRb&hKoCM%o5XuC?cQN1RICBzKG_wLk)7 zCqCv%uv%f8;loevAyJ)Xj7^QIWJKEhDCrf1cVS&YaI0X4WMV}oq}`rKP>a_z&Ae}P zZs-KQ23U2HvIx*U0!`7xSgI3gC_q<|thvj}*_=5ycM3_Lz&OVg+E2AG^6$o@YfiKJ zYyWVww(Zq2lzdhFobjIUhO{p8<oS#tUX&h!FG5?#R5$3KpwYSdAPuD(WT3@aw`}-E zXhE%or1x3)s-&q^J$I`+<I$hvbhR#W-1(jD_bBOWI#pECYn!O;9l8K`SEubc`C`}7 z9G6U`%w*_y%zUu9$#pxb4OWx=QZQ&`D&esL>z(h6Lp6d<EHWHp#!DXzXJ_<2cv5}9 z=lCph(q5yI0y}MCA|+b05X%=Nj@o$I-ik#78nj0e3ksc$<z<GAgWZybS5H-wW||;d z+1#tXmhYva>JU9LO76|K;q8ESMo+GrWl6-Df4#Flj<5vc<}^3Iss5n8kU&?}j8=g3 z5C?O(8BeK;>L_lE^RzhAINvVPs85JuL|MqZ2M#zWPtoZ+$&>XXXp6eCLUk6>OZ=|? zNB>GRN5*H<?>#(~-i4l_I<pSfrui%n$B_a_=j|YZVFp468B-l+;61>Zq!YB2Z6L`l zNUw^dY#IP$*ijnVAdPuDrqH?=tV^5L-~C9~e)F1UBx0Oqhu<dRu-%t3*tZ04rd8f? zyFO>2;tX7ihoYn>vE`^b&ak4>dRI7gHGI9F=izxh*;$Q7nj<rOmc-?{D}HS@)`@hl zPeW@ZF6kHG(y-VBa+>Ha{^D}nv=b^&P%5zfn=gDZz4BGBPM2JIS@D)`yz$2Lt#5rR zef{g-NPqL0PjhVW)^zW^KTJD!UX)IpIFXKE-Qo7zZwL7PX`12?nOVT?HP>8|e*Wiw zo>S&9Xp4LL>3!+$d+$sC{eSmfPVVaBkc=7Htx`^G0CT*%PSD%J%2i+Ucxqjoq22ZY z@@V0d&+g;tgM!jc0K7&G&GHO(Wo|x-#9Dy3Tv}7ePS&%DjdQA5X}>jqq>Z@d{O&RG zg2g^0>wcHEf?X|LDA{zfU_BKHve-D&Ge;tS@+3`ZTklk{Xd*z=7az@|@u{*PFEKsu zjnDT1YVahe5C99(OIlw0$zv;N9Ycp)kjdwW!;=|1kzjX{mhDGpyy{%~uT@iHyer@Q zuDP_yX%0*Q^bT|l;~%~<!M+s$vKw@Z^RA1wq-6+K=(^wy3(Z(2A^(=gd^&cOF-*Ei z6KQ)UXWY`(F!Hwg$?jU=OWI1VrITtY0%uoFoS3X5`L&{d!F;nEmPUK@?w9e9DQPAB z1)R$@wcIWpkB)*7wy_Gi4ZN@)JLH7m-?E>z3RsP^_$%*>!?DNJ2*>2jjMLi5_xS?g zEz~-X*KTGQU6==&sp+3Y1EE3=VSY@vT}iJmajR9ipXFC>E^t|XY{IA9IAkiGcyhj7 zFg%&9`h75w0KT<WR&8uOEF%rFgTPMhW<3vSP%@fx{M>Sx50{V@Hr<kH<2dbVN`%$M zE8VUNc4efiF)#;YmEoN!b|cl(X0kh*rSbrq;j9C9WDERULUU7IKXs!Hk>KuJIy<WQ zG;M!p(Vd<|_s+p0UYZz5hH1LcGtTYFF!T6TC%hMZ>WNvH3T2Yn8?c#WCF!9*<H;!) z**YBQDfz#>uO)5kfw@q*wg>gq{)bl$q@BZ<lVcL_(9@&oYmX~&=9p5J9A9_we0t?I z!>OC4$EUEu@TG^bdJ(!^E=SI$f3&AJ4G;9DqbE+LuRJ)B4o`AqGr&V;7y~)&&tp~{ zpq=D7z$uAbsz=LV@y^0oZ8THLrP-|@N&IN1b`$m8tElWO<35Y*Ja0j4z4l!<O7;L= z)FrikA<YV>zpC@uo)**5`i~Wl<x{!($@@ZDdCSn|E$NC&FG-*O!sj_!_*YUVhrB4| z6%4=n)vpE!zbYL+b~FtR4gi+&Bt$9hZ~n$_Al+kyhRO^n5LYF<+U(U$OiXY}+ux*{ zZ`hNzZW;toVegzHrV+BzUbD%!T+*6a0i340eIfwa_)HHxTyv4OMrk5P^RDEa+lsS2 z^#gh*A>M=%+d6NS8Eh7`w%<r&rRPd;7m?}~|Hg9+U07Eg!V(AR`A*5MhXvUed=8)r zPg>+%)tRjIDWI-*z7a?k6&jz7Pk=bh#8evECyd*8A_ji!d*&x5{CtS_e9s^l+p9=h zk1%)ez3fJbtUA6s`m^U^U1EXB#EFH;G@SY=3!W=Z6^6DpHa)Xys3h3%+LjLXRr6<& zwE4S9d&T6?JZab4{7RG1pXH{gU&#Bg%(tYrQSx0$w&AU|gN@4xMyZ#E9wQg_1OChl z6eubh)=DRJlWi(fcf?6nUi8lK$@2mZA|O&QRK^r(yB2)~!$(*N-oZYGov0ojz|5!g zSc@ips~5O6BB1H&*KzzQgcbG`$bA9uHX_!!d}otBMWw37P+yVGati2mbCest?9B9& z)0}3U?7;oZh?*DBBenC@d>KZj)F9Yt@jRCoC4L#AjKdscQ!_bl#;qUo<@=)oEkHsa znR9437fz<3PA_BdQu)`4mu8McSXGKF$yJY7$!<Bsqm-#W4&N)`IKqszi9hpixdxe> zsDHg6*yX!NLGPnOO;W!@ZeTkPt}s~Bcaz;IfNL!A`l4C@?p;Khf$o0tN7;<+W|A@l z5Mh~b3cV@6xQN?Ao;`Y2VBEn>yEDpAjns%5JL7c;T7WXaC^CSVy#Mj-JJO!Zx2NML z#!?qnIbObdOIrB+-t-^un@_)bQ&;-Hn=hqpaF7Jj*_Z9!ly1E8WcnwcdMfo|#o@Pp za!1;A(Ux=s#nD><#V@;dHvO}|cq|>BV51=*)Kyu=V9HMJ0s8^m$%B0%K(CF1=k?{j zahdE(w(sJM%Z)>-<|wt$J(u_+f)~M$6FHsWOUaqi%-pEr^@<;T7MeH*Tg_hyBzXfX zR_I)UN#oeGM?bq}&-Lj`U;0Y=t51I#6J+mYhkdrODVP=bZUz+Visc3GJ1|+~Un8f) z_fvoQmtn*A_Sf7LdYOw%$~>^Zs-2k^_PWmI#u)BJHvlrfwQ*=iGfU;VrLwYYJ~xMz z7VIf6zYQ<(BMDDHHxFwmeR%n6PE*NW5ggct4b#uz3EHqWoX>^@?_n1>Co{nJki7GL z9+cdgZE=O_f_m8kGr`nSMhPab5?rftQg!%>y08yNoP5rD%{jQh);z2Xm18jPN-UKS z3n&E1`qgHzX?4(9Er(h0z2y<K4xj?1dWq@^M`uS-gY$5o*0i;$2f@wCv^rRw8lP?9 zP?db}hVkgkkGI+?_Ro9Yxe8?d<=3Iczz5A_6{o)}v30|;wDrxIU62#6(pH+R<)o#5 z+Itpw7w2Yf#~tm`+WwWuo0pi#7f&yut0i;ASwQLPmu;-79<$z}Jd5yVC*#hJ(CJ-+ z(NJFtlT2PYizd3J6@CV19`%OBZQ6*F@eA&}Q$R)_Q(JEO%Si_41%Ua@U9(n-AjK|f zMTOK(owC_%{%dBsEgd8-zuA}MU+V9A`ivmpN9jy0IxL-5CR1gm4ian^V>hstD4t)Z z3IuQ^%%ki>iC#4Z8J)9mM>Fr&qFmSy#D~LR3`zu(?k?-?2P_J9t&6PVc5cgRzT8}+ zbqEKEDJ0H<-nAKZZXeM|2ro}}DYgqhtJH1*DT&A03U1YFo<}M@i#_E@mX&O$-Kg2D z$3?t&6nLIso$l6)dIRh}x&Ki5-~aNd^y(}6(yzR2cY5<JJJM$!el%Tw5xUfXk&pb% zlj$FS>v;Ok@7$2CzPLACIWUz5F)_6ZTfFx?b}aqIpY2V*_qMI+O)tGHz3Zm_^ao$Z zzHdcpWx7_FZA@u`oy8s49r&^Ll)kf`GBonDJbXqnF;OUBw~_yNXP#bQ4)UzouAggm zEwX7yo2Z9cguXA|YOj_qXCjmF8F~)1vUU6R^b<ev#`L8xemPVV-u~9Nq+vjAecKoO zp2>Lt#b-YEh4k2?kEEY}?@y#lFWv%JL<ms>BsQZC`or{0UJq(*@vsW+7dQzI(};6S z=%%Of#N<a?!8X3$o=zl?-GCRSVm8JoTrQ!}PSVdt0C;rQ=!51_Z<f*YTp@AupU*|w z=XYtj6*VDMA;wV!2><vIXL)RQkIVN6tThX%bWOf%T!ytTDm`TpE_f2baK^y1Wa69t z_`IAcZi9F8Qk6A*s}t+EC2;dFhepoVn%z<o>;y@WTUJ_3YZEI!2gh<8mRFi+pSO#+ zyU`7QcKQUXe_gDY^`bH|i}ZGalNY=4M3w{%GdhLsb7&|)G`!CITYxRhGx|9cge=xd zXc_6f_*EhtM=g_&TCnhAQ1R~^{z5O8ysXDXI10Q#yz==fkTtxq=ttV?v|eHU^ON86 z_@Q0;i{QDcu;?Mi46YSS9^qdMKbB34Q*KswBN^4dRNnRGzfk|AYAfKMO$%M=2pdS3 znw*K?sTl%kxBS49N7KZU$7$bGav|<I5-VOW0N!;F>$!Td;ajnV=+*dq@65<U8WuEV z!*lT~Na>ixTnv&2rMkLuqL+Sjc77!kG8#Mn^W_A-rXMrgS|-%z%}ZRukmt)eU?34! z#v9YZ$)J@qmuAkk?OfVFZUkziv*yUWYU)P$57klwyOW{zppLdjCp-9@b4MQM&~=(& zWKjw-9m_tY_SctMFk7U)f?S<|S*lDkvtCd&L-h#$`ECKmv)ls1`>H<<LQ0+l$vuG0 zqpW@3@q>rc9q9GmKh~M97#(MzQaa876-?aSq@<f<S@<d1^DL?iO6%N+_NFV8lBM*- z!Kw7rTzmS)gU8ZqUa~b^d)bb3>Psio<*DV+HdZS?7bzZK3r^-zp-i_(Cyj5T4syr9 zYP|M1B|5h2OrOTF)$k9Uu<`fj>usizC8^QtTxP^5iCR5(=|7A_HYAn2E__H}YU=*@ z&5cA0SO#cwg@l)$#uko?pfHRya<vY0v)H)Wb@7h$3-5bd`utb#O8@rX|51ABEjOhb zZnz;0Z`vGfC;MFO7js0%j-cavZ~DRA_og0fI{)(f-<Gy+84f`0^vJaAwqBc1ooR0F z<?67=DhMB%n-M2zse!ufMP;Ico!)Uu9*AzJNA(8UwZNGW^8mI5CXGt=1g0Ln>r%dc z{I1GEH*-l(EOg^rKax)E!q!V;rJ2%Gm+94EHy+>F9#ysRpobj*H9@7)#?VQnPgn-i z3P1<&%9a+8rZUlOX$P279)=kDB)nRlGBv)W*DDRw=M^NXxntiJ{8IRcuR6)FEPM{$ zZpNH6*yl{wcywMn0p^>r!+V7M+a}DvpO2&JaDrpT`>=x3-`Y*SIsAj8$mdX9kO#|O z<<Fz2?Hxs`ZF-hXXT08TA>KZABA2%2H{WOBl7L-+#5?@Umz6}uhGRYAoFHg9!*A8e zTK>AqFL7B{p~_*sTA-S<o?U4W2p9f?_a$cydLm~B`w}dJ`F7lKG7%t|I+1=aHfOmu zu{y08Qa7uY3C~8#VY`%8PS*M$!Xm16M_Gkzfj_trvl-fq?K__Cf0*OzQFUu;?V(NE zM-5eL80$>%0^nUIp`MF3tEK$aSC5RNymMz`xi>w*ZX17&3kB%<UT3F~AGyPKkc|Sy z|9m@_KNs9_Tg!|WnW*asHs-?co@+j9(Qhak7xXpJHOwZJlK{U>beKT~-f1|`KFpSA zGEOEd{Y(5_WyYE(YoiiQ0S3DnmQP?P^Eh!t2PcGE>D+m|xwhoGp^UA=vj<8DRu>o$ zmRrj@0@l0;DrXm2TdX-t=|AK2FUrX`-?by<%Fws?KK)u~)X}y8JstRz*rc?dWye4K z>I8#ATe_%gKE3_rm&5$q(!)<Z4HN53pSyP&06Up}`OO!lx7~t7cUyP*;`a`u?;L4Q zKU*_G>L9&6c$qqs01oJ%^OpzBPS9m<2fb!-nRWR+1}z3^mkAj=W6)lz$kU6k`Wqs1 z;GwyOb6|=ofPIkr+Uxjcx(>3w^S<1y=|_J*A{Y5vk>iyKFXemX>s6mhd8LPgz6a=N z?nk?ts+IU%i!Dn1Tosw4ZMj`EXyZ3-;<@J6fi8Fg@AZ=bGX8leG*r^NYscpFcaX|H zy7$TS$m5Tt?|uL7G==W1?V|v(rBouK9Nur9rnYUkH@)s<*QIN(zAW{FIH%~p)|-_q zf08#@&n|)6UbS%xXN`BEr%&H+W7AYiOCN)6ZKVbEh%ruE=tIie)zcf&;$~J#+?H{i zU1l6C7@*O1WNaRL+tsdR2LUcNV(B~5!jgOPnf_{7k2de-9|2K641OGNEP&2B`Wf`P zajTyVpY{*KO8*Y}j<geWWlIZyIrv;_XFs5n&9~6Pg3nX_Syl`wb()&cjD$JVapk`N zT6(z2%Djcpg1%Lp&p|8R2^@7<cQ!B2`|P;p33Z)F#5Z%axKdidtROLTVbO=~>m&jY zsi#?5S8W_hU_Ba_o7_$^Nw#cNr=IU-Xy}GV%UYcEsgyda9Mm?l^4)wKVp8U@@E&}m zik-nMj*|-W*c$a+Vmk9R!a;-JO+=>IGDTIYau{zVTPq^7y~dJ%txWp!*7(f3?eN9s zEQ7rFA|`@+r{-e<vC&dU$CF5ix4M^!`t3nYh#6Ws&Um-TEOFnxPo#(MelYF9&h|~W zy*2H+>@w8l*lcRM2@0;CYRjX>`omoCxj_op07@h9TI~=81eU8&hkqDkE0V58Kv$;W zu2eVgc$}gPuG;yH<N0uzi3rYQGs`Y^xRPfj2hIQsEtY+(|4zo@qN7^D-fzU&JqDN^ z&M|vD$`Zbt&7_^+cZ_^_`io|M?0`Cd9h5cB?q)PitXK#K`6d|oB`n7U)54>YVvV^k z4ZIP<x%sKKm$Qv=EvgqPwlTAAV_-Z}dXh)u_}5+Blx}@&G2MNP<xAS3^)XDNJTftz ze(hDg>4qyer+XiHI(_Dzk#s56^J5TYu%Bh{QF`amu}Vx%(q8;loPesd=c1-#{vFhN z;aIP|Dg%__->bo8yfREBCfYM~iS>+yG4LABd?<YsNS8d-d$-QRpYxGQIja5wyxYlt zgw7>z`&+&9jeyhxR0OLV&6fTpt!4%_kr-BJs7LAKh9GytYvn+|J3oH{Fq4NFC8N!3 z5NoI3Ow*f`CXNH_W>7KO#(?RHmh@8}6zmZFPY__Z{_eK)s+V4uZrF20I(&2_%#B$t z+l{MAt}t1yC@nt%2-SD`IF)Z`crbO-E<Ksgjg$ep_#SM^@U=<{;6X(y-OQV~Seqb^ z?Va11UttE4`h8;WV`(1~xRH^OG=@#!O@saEvP&;cS6y*M+PZm&19=8w0=&RREUgS! zASJt<ZK!Bqdd%`n(f0FlyDAfaH1eXrN{KUGS?bTHIbP1>{5WRS#+sR|0>s<3Bms@2 z^EjrzJdnaLZm3e1cb+y+cEeegS<A}zX6k4Le)r|CeIuPZbt+wb)s^Y$E3SgZsL(;9 z(yo<Ivd1{etS)U-2JsM02CKvsOYnSgRZ%*Y25)^8d$ra{SbyN1OZ)wl%|3msW~0|o z6btDsCuDK#xHU(RsDEj79B@2Q(_hwaamK3(gA#J<sOqGl-%Ss4)M_+e2jJaWHlipi z-b**ziGM{Uq#EaH_r|06AU5^!U>}p-mchTZT>ba@=e5GVP`^1w$_KWf3ik}^nd_FA z*9rtVLjoVCu~AP4SS7iL6^TVAbzi&V?)2;v2h;n1{%6BNORa}T$a1o1Bf7|wGe=nY zHFKhs?=C!@LkbAX)N#4Cn>CmXx)DIHv-{FfWip=ouAN33Rc1JJvKL6NF&nh|U~Y`1 zFtA);FWPREnQ0zJM)O>NZypv*O^&;f!sC~<$-eg9bbN9Y;FZ#qUES<N$HW*!^e_p5 zu$v2tGw%}&$aAb&?O*^>lX?rAL^OC-E8bE$?fB=-mBh|d0s^vD2Zb1X&Rh;j)XS*2 zXUjsm>xk^d!KNwg9h*(RdUJbv$7`-ihmVh^|M0bA>F{)W8m7(uqxW8pb%w?CFFyHX z`t07x^snCElHPdBw)77UpJD*a5@<n)16L>8)$_z7=fys7lKOhZRwU^Fheo8<XAC~H zLG6^<KF$X8#<C>9!hDzx-7o-^&-Kn~G0%RAiD$hBo{OJ#x77d=D<d+F;u>V5d^-JF z4Osi?D<y~rP@`&Rb;yHo*3)(kCk?zhQ5g_0#XDZ|UyA$ey>;g%$mxY?9;rA8S^nuo znjM;*VAIkJlTZ$(F^nJToB*+;F*SuvT`Kg_i?;<(^S$+>wFCjG{KouQ7T+6IDe5FB z&Of)LMf<9S)4x0vuTj6Yu?1C!2rOW;PjvQR!2!L}X=wHJuYD_h1JJmC|NbanUw<DP z;6_qU{~!SJ()8|ky)#{U`IV`kXZ3?8wOxkm#bV7+H`__I($m_@DvFZ~?8|B~1yHPQ z+K}=B)|7O)<9#c3w5ORsALV(D2?X5+(JrHjc_!l=I0$eS{AIco@Mf8HF*Z;Z0ji)@ zOAMd+{Fl@B?|V4?Prv<ZNV~5lk9Z7vIS~;o({U)X`jQ!}8xyppFVI|&63Zi?YsBxw z*tE<T?SV8ruw@#is&P#LWaNSP7AT-5+Ggev7C;j7$P^d*&eRDAWDva#;o>ATR}w7Q zYQ>1S{UMsL#?W5}c1>NtYF(DiWI0DUsBKEyypdD$l3&NK@0=((>4@d?%D3umDW&n2 zP1?3}^8~4Kzpo}*4gBB8y?xHpR417oji}l{xz|e){mHj&`~G=A#UWO^pZMNG>EM$G z(=YzgFQnbqUb`wK?WcL-malrOg5B!(3xIc3GM>8+R;Ey5z0L-p>6;$7oF;*m93Qfs z!_3(2a4$sXEL-y=4lXi_s#7{46NdK%vye7YW@ANxIWu6)64Hj98PfV<aM0~Q!nCtv zChea(g*0V4mSdbiXijaG%@oss-fC>-PxDuHYE6O3^kn?S&yS=YOst-mRl+v7FEikI zR57Xypn=yI?3C`-h}p=?%6H_&f#%KEr}V?a^XZAPRxB^fr`PRlPw#o%73mn;)Bo8g z_o1$!ju)oG(0SN0*aZk4O^+OzNq3xVNr&Sos^)ar*4}jN*ujXuuX8TlOW1!nv^n%8 zkBuHhdH~HSe>cm(@4r<WyhwW)tf{iooMZ|K1Dx$_KyM*)X;meG`T@ASHxJgo18IOK zBdBvrej0qM^V;xH5T}lKk(`w4Sw<ImRjMh-5ODS|(P==+hIuJ3EpyR%ZxlA9xhzX| zc5H?ZXrIcdzkNQN?K?%GoLJf)VRg~B1P^PuGN{cchO9Z`oMUohX$qaa#^l4g;d@L- zxS1y*{e_E5UPjInD_`WiI5`(Us+!Z@-V;FYfd?K;pZLUIqQcOX-ujbo<v@(<sBd(2 zPmP6L;3xMzl|KF#pGv>-%fFPiY~6~!a2M$!neORkg2rJb(0CzqeOYG$$V$6;4DK&r zaiyJ!v^usnq(L&@*Ex{T22K+IwXID9F__N-_U9*g2XC64V7~$7m;xXw?bKObPk>av zJ$Mu4^<9z3O1sUQhSD{c?~0A1mJd7}H0$7Co@VkF>P-04ub?+9FR;2bJ2giB;dzu- zDSQh81FgHbiAcXXL4^QbosRjLQvu4U)KH~p>F6U*9McZyJv9fwCvVu2Ni*1Lo1k1> zplR#n&{!6V)b}<04<OmqUU9Ca%%<#f(@t#pUQB;+dzy<05N~r%SAH%N1$nxYxN7*4 z7G#F5v>pD8#L0mYT~`dHual5-;YxbvBCh8n4ngiV^?4^*y@Qe)8Q1meMALTE$}DJP z|44e^zP;()KlRQ4y9KmPPEMw$p4!J`GEaW5VdB<Cn&rDI84o=0K&)hRv%2$=m)yYj zY~97SdI9kM2wH}nNLIUESA2HRsoG&QD#Y6v?AxKESYvYQjqmyJCj%-wh+~AU%Y?dq z>VXxBZyChvyfu837VR~->j4Hf<hB?{*GFd=U@xi-1Fdr$B*6f}U>u;9>uMX%1m@k0 zBr-ZB5pEJa(*WHt^Jn=|rmD(;o66?VZOW{F^~h{*?MT=>G~*PKv^fW(HJwYmuqkNc zKyLgomdS(~gtHC=5?!>#cVFL}{{9yh(%Ua?Prv)VD^o9rGaNs7BE9crgXvdTiavf~ zJpI-8N7J46?Mtt^;j;8k-rt&j<M_#R^EKNz9AF~d`N+X^6w_lri7LeFZrGB(+tr$` z*tv<yoKN>Yeh71C&1o-^pTB<t`qYCi)zTl#z$(uC+MYtap-6hq0H&%@HPh#mW+|97 zohCp;BN`Y6@<iu^6#3qlbxuDuZ*^bJ{Af*_LjQU{%iP}UJn_#%T|72(wS1i^X7%Mf zQg%|1L<WmFp)-Z6eqW;s!kgdY5DIi(mt7vzn&?0RP5)KPP`zIYV;%6pZ~40upe%ux zBmxj=9BK{5$vdB&B<W9}k~b3NrEqXffE$~Jyu&!Bkt_+i)WsM6$H4~19qItH>5lK- z9Ru-=H(Zx~?x)_7x_kOL_(b)HrnK{-OVS_x(SJ;PAA2PI@P|K4x4-F4sTC0EM!wB` z*s7uJO#<!~k?<~%PAhz;9Ua7$*1j~4Bv-I$rd>sfyz;J(<-A4ogvSBJ(y6@zo7t?W zw9a;=v2+5kh}0ShuVaJdv3U#F1iiWcN*BLb=1c?ip*@Jh9?h#DW@jhhwWF6jv3Zqm z+KTrBU4T^<*0Y=p@i)%~w*^+fT05|Nj7{%2ni>CdE|ZbI7G&B{OKD+Qdy4ycK(h9c zTLJH_&_Snp$7bT6r2lGSuD!Ptu+P!6Cr8o*_RHpx1Vhdh&N67#p=x@}^sGBo=j6u* zQJum=XzGG5#kJOZ+f7J`xsudUKNidepoJFJfi{o1#2+LInwwu$sETxXDZvfiSRL|^ z)$+N)=$;qv=D(A=*Tm{Gtca}F<+2NqDLn*jqe(sW(35HBuAS-DTVA>%n#Ui1JpJLn z{1@rY?|wgBzvr6tfB)-$lQwPgBt!*K^XbDM{&4#2XZ||9;f=SYJHPYo^rqWyPk-+> zev`J?ntpiiJr@A)3TnPU9&Gf%z~O_MpK&9E9ZLqTii7&QF9s**Xn}(WA{WR!0*})= zG#E3Oiomy+a#>&5=on3$osGWF2^#tq%ma0EAVdo&C(Dx7jz!A>n~>g2v0GUig3eCu zG>s^0hm7Mexn?PE89>)g<D7hjcJ0_FY(-k82{AX<O#on(m{pyFST*-bRFuf5$JmAO zc5UBkc1(ZEF5mmx!ltrG1~jcIv~n_y5-IianxSVb7vpJVSOVE5$;R#-t?5HI%%*)O z39vYoj*U*BJK2<OxV$%(pr2})#!hc@`ta9}6Q(s?ciB)H>g`U)M^B}{{?5Mi1BAQU z*ZmJ)cq+Z;mD|Hq*$n31KK|8b(^npwXSJX;{q*IF=?&LdOSx}QtTkPf2~RGWhNPDn zg9F={oMct?GW1C)pz&xSgT4DT%K2v5l^C6n_@z8A`&hnP8FKmkYIhMI5l&O*n*AYL z0aOGrLx72H%Hss(Y@CBj7X|HP5@)@x7R#B+<9D-Q-w9jcX0pyH?X7n$3#hCxX*K)| z6Pu7=19;qYRCRv0&&fLqNb|cuNC~EVQL3xMS*UM*1Tem`%1zx#Qh+2TFK(n#m_V$w zUpxT5_fH>(9}I?ilN-L&TV?DHXZmBKCy>a_r%NurIQ94Sq7yp_{XC$A!)7*bPOp5$ zt!a2@5dCEpCo))^$EwQ6*va(F6OW{O9(p{Du)1Mi+O}<Ty5%Li)1{a0!WJ-k^X;AK z(6i5^Z{PL(bQC}Dc*`4Tw;ky#-@GdwIIus!=<eNDrQJ7Q&jb^RGu9$TW{z=a2Kk~a zp1@|?7JOr9g7!}NP`gsqL(&)WTSvuN`euMh(*h?%@cx+t2htDjdmuftZ(q=<x34F? zlJu^==IW3@H)*B<Iy758==#JHd(-#teE@0OA?O6?-?=SackR`vN?gIp44e4iSE@xQ zT{|&$B0culqv=8P`HvhqntG6WU%UJ2blDYGr~ZM#wAedD9~({cq1LpV$6TYT@R2Tg z^jRm*(N?qd@1KpxZ>ph`O?2ULoj)PvjXKYhg{%)unuL$znx$(su96YnnZ80OCsvMk zl~2_WYu;Ne)}Qs}q{SkgO+0HR@+0~vKXRhyn0lPa&3Y!%PT<>UU+#_B$;QI5k@0lw z$Vhtkd)^rn&LX|F2%ehw|6;A>bD#TM`m;a#^WZ(DXy3i_+v(r_%l|EX>T_R9S6q2z z+Pimey6UQ{(tCdDr_;q3Uz9%j(T`pLyoFdV#H*c5`=jG9<kA5&^sg*JDMWeqLd<)~ z6MZ)%QVRfImxW@9%@L^1DS)(G>t$FD*q($Y5OAjd?7}$57f+<2_I{RVF&#wws}JLT zW0@Twxt-;?!^}pfW7$7vs-CWvLD2pb)*QM4Y@33a*A?JAJ(?H6w$A$wM&X6U4x~F1 zP{1~jfo?lx)*h&*$8`bzJJeevfD)f6B{LMl0j~fg!?sX<51eR6a-1zeFtz6W9LDx% zk$jtAGs~|6=T@#t(PhRu!<)JwL><5P-qM=B^x$;*U;gvMX^1gY9|De6zKu+`a`1{9 z;uh0C{@k&2-QYn^;#*7)9dDrynRu{UTcc!mJUN*@`S4@uRa?;mn`%l2CfWdGt!dBD zTzd1K=G4<A@FCq=9!zB|NAfWU$>khO%#+K#t2=>{c8=ZbV;h3D1XGGOi=<6+Q_V~U za!ss^MSpANi;oSO{mMw{o-C$d%VW8(Kw>D+E%n{S@<OT0x?t;ilp1oCGm+APJcQ&8 zV$E?-F51^3Qs`#d-FjSvYo@nbCuD%>6#x_9Kx0yy(@Ba_Nu8iAr=Nj<W}F)3S=t*$ zOEH37`AnAT5((ebca{Ezog^*!s9?ndO_bbi?SOC4zGFfgbYAAUg0236ekSiN>7j=n zO)tkZ+V*W*XcGWt(HAQ&uY3LL(<@*7+I*@TpiqhD$<fjD`M>#m`r6m;AaC#+q_neu zW;@N7zWLqs>mT@;bnDGGh6ME#_Qt+?$G6k|gGWN=_o2t0NcWP~AbP@70buxh>1W5^ zn{IpaZIp}6f=G_XIiTglG%7v{Kxlvg04cvVsr{3Lf_7<U9PuNec+hHtlx)SM$$bwz zls^3beIgw{dNicif^zkbzxK^L)4SesTYCFjZ%@5_15BQ2b4*0<{N4}JpZxi!(kO?^ z^kV8wntd0uZ=d_yucr^Z{~hVJH@rSIbq{h1+k6^5el-30C;vKq5&dT;1D)tItKa+; zX!6F_y*j<~J?|y%ery_Zirvget%kVZg2y+puL2;{G2a!S&^lHR*p&m#p5=1oy0rZ` z#t0tceU9d|U)z8#w=mM-g|rheJGl&LE^!q7@!~IsI{nwZHA;D-ZI;MS_qOI6l8f1y z6FvnExv#Go<OTcDab_EnxKq@dW4fbPJq<0cW2*Yq7opN~g7K!0vDG?1Fn%J9ot$7o zbk%8P^wdP1CntsqO~uDmS6`DpSp&Pi?(gqsQh8}?a6Pd9K)UnJ?_2=96?(nkZtb+5 za%6{c<;adHznoz!bWF7CThR-y1UW-y(*`b6k%>5nsxwt25Bic1%Q)SY@BNva1HWf> z%V^5X+731~HHze`9cfJ;KrWlPX%v@9Xa}?p2}?Ub><N|+J&-~tv#EFH?G%HE=d?Q@ z{3u<0H3xI#rBc{-B}9rOfeN0$*2Ew)ABON*hJ<+vTs^+itwU9)AmA6+^&tKAegeI_ zWmoeF85SAL)t8+?n%>fs70O%GZBzm*dxBO}K``kz?O`|gTvz&|`_ScLlUk;6{??(2 z0B%=rb2>8BnVx0Uq6^;D!$56#T_5TZ1DGd!`Xr{IX!HGG%gYAl(%bhqkTs?KBS;T0 zW{;LcaL`(?2)o*keoj+wAnw(ilHGFrvhdQzILD-5dUk|m*r6C`t3b2l;fxYqiBUYS zmUx5r1`+UT!?PMZ`bq=;<yEx>ua<PxPYGAO`rWz#14LccfAf3fgPVD5>?*x)V)Eqs zl2`BRo$s{p(8)wzwTdpn5m8upuuTX|HS1*@wmm0Y@;+abczIgk?6VG_=2r=wpv8K( zs}eO*T~7VN?z7Hc<C&#RwNW^2)AqM!Ge^ExRS8xS{7IndAp6=^zBJu~L~}0^(Es$O zA4{)z>CI`^71yK=^aQ)Rd!P}^_e{R!4aT7^p-ZTL{E`2JH1itte&3#Mz5envK0cnl z@YOrhgAYBNKK1F(BN^S1cCzB3>VP_jI{?!E^}dJFt6%Zb^#1q14>g0C^zCooneGLY ze&g%kN;|K*BwcyMRjGYis}>XVPxv4UKEuoyZLg{tP;BUsm)WJ8Y7#uwT<r#lni~M0 zefB{5*k61)og`l`f9Wmhjjwrm>hJAJ4?g-t`Z|F3FFy0PX^^A7-*np>Q#)!LPdv3R zef(2@jVi-@`k8mVCA}X1(&!uCx+{I+ufLo=^3hMFi!Qk=?Y`lrG&^}JedQZ>0OapX zS6y~-`iVE)mM*_^M|$}21L^C$|K@kTn=Zfd^7Qgoyav?=_!xhxYA97zjcC4QK25hx zu>!z^g9_<kRlt>?X}-x$iYkF+vs40ICBNz>TmOxmb+4|dfA%Y<HO^UV<2pHCY`Bwd zwRrQF)qmxIj%&8NZ2Ne1zpH&Q|JId<=7kys_l}pof3Z2+WH&Rdov64xjn#%mWsuxE zP`Oi0P~n}M2JOEG5G+_X_Fe5;*E{)*b!(feI@8>|Wo!JMIyI5@A9yBx@e7|%fA80S zJ*2!(KKUfPgjIoRpbPgeEDG3AT;k9~smmsIRsrt>BByS9#*5I&hHT8C>Hs4a_?8|) zn~lLvJYwl&BxPVXoPW~9_s+ye=nygq-|5P%c#KY?=j|Os`NJx|vJ>`6<Co?CrYY#m zAOLtgLA<6_ocAi>YkF)mI%=l*d^+i*>p|DAfN#w$DdFuv(mOSuPfXLUWt$RVb_lBX zTbz@H79_ULrl;7HGLLkw(6IPfzAi7Zl>;jlLV`2}bM9c%3<EEo9W-o`@3>LGu$Vpq z=+zvN_IafjLBe_Ma7mdb%VG5w7xC~c==7k98;0l7+je_=DEftX<TPS7wk*U37Hv-p zW(qAz9F49fVcSr0m^ZR1*=kgYN{8Hx1JX9JniDW(Y3Ono?~Ipd!-3u6e(8OFo&D&q z_FS&D$7t^n0D?e$zYj0G`lk~>mxrji1_iB;D+1PjBE0uR7-!a$h^wAfyC-5nQe>eP zt{U9-BTdYbew6;Vwr^&@f=c{(ysgeK)o}5$_Q3&eIKXkFvb6EXc&YwOSFWZJgB&Sw zyQ;Gu{66EUU-HaK{rb(eLMIMa;_*5SI>I0b=`Gi{5xE@i#BqUDo#w9IbmL2|OTYRn ze<ywVvwxfJW$FL^haO48!^7#iYpzV!?zt{(gKk2lp~V9om}I({svqg>Z~gWM*(|mx z-F(X}OsrG7@+#UF6LL+PJ-PoNQqu9Xlb+~+E!Y|z9ZNs=)9*-cd&`@6N8V_(oBO-d z1CQ)YrvQ+nhmWPf-Ma(SNh?=wJXH+Szp0f?UD~wG$E<1f000iK1viGI*N(U-Pypzu zYdcHX?)t&~>G5X{rOPkbo__irZ(-^85_s}F!1QwTjwjN=BgZifbyvFeWv{@j+NO{| zPqS&TgF)%duYXnAwDTg;TS#yH3Di8~3sW4%GmQwAvK%;gFn#eW-%0}med%34`R4Sx zH@qgzaU$c^i?2?TlT+zwXz<X352x#{zX>UCA0Srsni=XJde8`FTA8f#21PX}Wc{e7 zVS9-rnWWQ?)yRl9na>FLmGFD|XuZ>)eM$Y&2_`3(v1+2usk}vS=~z1*depR~RhYbO zrlePmU#Tpnl0zlO(>V2aHm*pQU6G2F+~*M2*`$B2!q{hrn9QD}4IZUGIOZ3cSd)(N zo%FGBzFW(7_@f-E)Qm92aVh9*$E|axzghMm2v&bx^%-?}zx?Gdr+@lS|7m!Li7R#8 zpjj+OaN+KSK><O7=D}?Q_Cr;j1Q_!4(uiIdIbDA)Y`9^&kaE~LigU@z4R3<k5loY) z52V>5kMGShKlH-r2%7G3xwF~<qLUDjOhenAnL1S;C6(nXTS#E8t?3e$*gH^w(@c<- z8xE7UW27$Ut|s;5dF>b@$a(*9x4SuVpp;q60%%+5(5f<E|2r6X7x(Z@0PjjuAMQTy z0xWAkb&A1D3Fhf8m)hTamwlLKrUbAj2vGyX+{XY+1AWVNnh=^xckNqD_aDnrnE{OM z+jdvDy615QF!OuWz(V?|-3#gJZA#O#<fQOE)6h=m6j{~)y^>(xoyqA%rYpy*syFz) zWW%e^*1Ln&gvbl}E+AQIY36h;24ca0fUks#Fl4|yD1B<=O1#!p1xJThW2(BSPhQM; zfXj1q#uc%Y0&XNe+f~iQU``yqu@1#do>FCTt5F9;#*<6SI)C$BJTCw6vV^PUaOs-| zG@Jl0$p=i!3DGnwS}bI&64_GF0Lt-1I1iMu9&1BqfX8K@%jpZw^~*ti%Z~6_rxE}+ zeG>eLiUNE{DetA1>|*);{&fHS_oZW~0H}s=$2Y%~uD$O1^o#F%XS(c?i%{W$r=VYZ z?VgvUn{K`}mQ<(VDHAa52}IUS0N$bg-gNNrktI4r;-qW2J5hbGuny9*l)Z^bSYLN{ zdJ@~eh&5@#sP`~q6x2C^lujq1nHxyuVe$iV%r{QIVr2%_77}Zlb2zW~QMKUly^ry* z2;jX0HH~dd7}!`R?_|k%&+co}9e1i%Jd&PaNqFmyi?Bekc`582cix>|_Oh0=X{Zmq z+@ACcKl@VvS`HiGpq_+js;Boo$!4^Pw38#EyV2Wy8cP;qr<h#Be{7pWOc3@TI2dUv z#3;@?+eIrUGWO8Hhe7r2sH)8~!R~4rL7j{5_-{uYWw|B|!<a~=+df0u$^co4Y}~e2 zZ5%sx*shKsJ>L$TE_$=3TlkGS-u2EbhERpPQ%w=KzI<<YapRg39mOT)V<WD_VIIvh ztU36Uiyup>IU9-a1>)DuwI`W4YLP|SNiWCm0fa|0Oft1`FTj;tmc7~y3ol%6Q3SiX zJ$v?~|LgaEKRx>J!|CsS;1|;W&)%CrS$bTDdDZ*gJw5vh%z_;R0g5C@03<*F+(}WS zHcE1+BU=e&Cy{ba6xorJI6BEW_OTp=K8_qmwxz^e#GN9zNZbGcB)E$pK>#H7bujx( zcTewozVFtn?!Vu>p6LO}!H`CEzxV#7mRq-O-MV$_)~%PZ8snxlJ%WJF7sC0Dfle4% zD_Sv`n;k<xg;Vrc&s1O0qtEw>)WIk5E40getd~K}l0HJ8t<Ay}UiD*qgwt|{5PDty zFs@5>wIn%V?OSF+7~<%I002M$Nkl<ZZo#x?5cG6GRzIlLqSk)0W~CKv6QWrRn(i_+ zRE1v4>Or8?@~vUPk>Xr^F_@#J$%6#7liLDW7lSeg4Cbr7ty(ID*<AmOEu;F8_2@RK z9j!J7cVQEpMVMTNV&f+ZF{NdhPE9d7yePAYfpM0B%_T(3Fi-7WWneGgvzV^A0GDO^ zr_xuSXifJX<%Bu~7vl<U3AKBlU$uTdy?obfdgWeD!DDUPXd_6GL(KME*>DWvKic1u zrw-%Demz>P=m$KnW?Qna{`x+a390fdfI20LNu!cG|6W^%z)ya(lqaGD69@H8rIhlU zVX_=)vKq)Df=`#O>*Ca+obq$F%>I-NY7YY5m0+zFwc&H&?x#B-XT>CY6HDg`zz+C^ zMp;*@Sn8c)H~tR%5YfKwQMw%nixZS*TJv&pAJ>hO$5Zj82~X?+fKVdOnp9%*>UE(P z+l6Rf^DTLi&TH$Zkl|8!E;m1KW&>86CzL_+$a1NF{igJ4Y*b%)-7C`}G?+g?@Vy_G zWsf}aX!?uyeK`HYzyBNTF5kmJ2MF%ixPJe^2h;ucf1k}~hd8L>Wb`8^O?kzk?x30g zTHI2$Z~%xKs$@!0Kj}{)HYQyh_JVoOkx?r{-8fjIwYwkuWwQ!RBwF>(f)|udMtN<P z&AuAEpFoQ%wzh2BN)15(t37kG<Ct*_rXAb1V`hPU<;jz2==d=Jn@_uUY)4yrOZwzz zzm(qp(c99UU;AddaL2Z^Z{MDDIh)pYZr@59uyGjPGQx(vHk1`p2>b8-;KyRJ=mf)h z$>&|N9vd5{-EguN4>NQb^9b$O_v^jBi?L6QE8=8ms%;<HRtSQ1l@f2ow88OG0k#Br zSsy(71bj$=YXh?=l`cjx8$YI1W3DZ&f^ZdS@}Ln+E@oIV+1jti9tCSAB|ML~r1zi_ zg>CComz=jNLsXeUh1rRY<O;}9rfC5+?)j;Lu`-kM_)dJPLEj$sysSPlX8G}mXNlk# zV|t9Ib@g*4(LSJ%x>^vwMZh(V_YXe!00+X1r0cG`K9XI0@kP;3pL+7CwD00e;$WE7 zb6l;Y7oML}3`7TpK0Hcsgwu8GoOX&SG%RJHKc@iw7z?vQ*y;Tk{89Kl&L$Y`Y2B=) zrgnsTPeC)j-{QnC2gpXjr^cIPX4#1(b!OoK21nOZn0Dz*)~e8JF&_6Uqcl%7LGv)* z*m>&9=P}3xg-I~{?EqH_n(*G*^9<ku0;$WGF`)3S9qrN#%dQjH`>Fxzg6Vgnk!eEc z_2^>jZm!ztGNeS^t-k}+B&H$?yX`JJ5lto?0x$1P<p#JItZG2nK3D8qOnW!art1#3 zq7|&!ViLC+a`Z*~@y=n3h=v51)#_P}F3H;am;_-WItk5NuEAfFQRxuAJ8|!u2Js3Z zAC)$0Q35wPcIDgmeu(4-I5ToH9Vmike8&av6-W&JIB-t!rG07ROe1Oyclo*+(VWO~ z39b@jwO`|&E@a5gF3;2Dx9YoELGi;^;MZD)0JdtXvwK0lp<$yPq%#M4g&AvSx$*-A z*+$s&y&s!Vt-Zow2#7@Yc?e0R9V5T|UK)X%GXl+@2hy^%AMebU_g!uj#Kv9Cy@w|# z*i0k!NP8U}9qGc|d(tKQcBhxV=;HL=58aj?e|mrV+IQ|xzq032OdICY!$16f`j7AZ z2m<76x(w5Ym$KOnb#0u|rcL3Q`BJV&tqMRz8&Jni@;Jn%jxGdvH>~M#CcGV>4qQOE zP{37SXvZDg2K%sx6@`Sz%evP>h5_93tl7ydykQZ(X$bdbB*-|)d{klf4Y$4~U2@UB zbng!yNsm1IaQfbT52kN?=U(vDncn)Qo6{R#|GLzT%Q1ys^Op~7-@ZL{cB1*Ue-YdO zDo6_d<{5BQ;4+TW%afQk^>Wx!2fmz*?<9VK{whs`w$+FYf+yL98KCvzQ>%U)va%Bp zJQY)WTc4MAW+Q&WYXgL5{-*Vr{NYjTte!aGguf|Wv$HEEP){D`pdx1c*X#uE@&|(2 z-8ia#6*aHr#iRy$5*uWnKU_GrSe_pRY;hkit3dMTrzKcVS7_ITGDcie5$aYWgTOtv z5&SiNH!l17*bI62(1Emj&%WB*l|RyrCO6e^^zhMi<7;ll*8cnH#aCUG?)mQb(x3j> zpQr!+pZrg0>(*^dRBwDi!&^nzd3)^u<5E>ne*T_e*Ku@)^A_l}0p@O7eV*3jj9@aJ zeCAS|9l*_2M;I{d@A7Sf&->X(V*TSd;CQ<H<$DLQWwVCmcdK1RXLE3%B+K%CyKZ~< zRp>Q%ZFv6iE~7@Xz@R#faM;c)+D&A_C8HJor2x>@$YVsiFnDwJJd0rJW;V6NJ{S3V zLvSI~VESOlUhz%_Kf&(o*~MulUcC`FB1U8fT(uL#LnGsc3pMM)Cp^-r0?butZe`-9 z3$qLy)5I6i`VMYx!bd1Dx=D={O*S%d9Il(0$hQm%<~KB<;GMO-YG{;?EJ}@Cqau+P z0<K9kb{;6Arc4L^##OL4y_=a7z7)9lPve+dxTD{4eP0c^3?5eOK&7Pm`WCpWX?<pP zB~J%fKZe>*zNvgyi!bRbuOr=394}VOs3d9>M|M*~<Om)!7+)eNfNa1SLw((R*{FVz zsMc|PZ)J14C`^zq57oL0V(oPZ3{{Ywa5M^@iYV>%YjaKF(C(TEA^#}Il2a{nh1`IF z_fC2YP6PvPcu+BU@wv|s)xwPBe(ZI>_Kk0n*L?bgU-*TzZruQf)8I=NI_kuhb?=_N z2!OlO6Hh(G$!namO?`$(#?oKkemC7`KHYrNP3hLx-HN8TBR0V8fBLC(@Y($+Og&Xf z^94f<pnS9PyYkAuY&|{kkv*s3VhtDkcvt91L&HPq_Pf6d-7et2^lI#Icd<QzJ`WL_ zMXo#at;(DrTDs8SD(W9UcAWg&`#@fJtT678V@J`>VyjOF?!(4bTup)Vd3eX(Js0Al zZAUtK{YzPenM@BO=-+wQSJTID`<t|F+s<_Tt6z=hh3?Say6NxcTW(ETw`~gn*OKKg z_AhCm34y552Bm1W0GzA1$ykzJ?C+t4<+_5Ns8^|5iKk#|a%-)9uL4+}ye&mvabY_5 zmiTEVt@Jm;iqJUrNSabG$4Czz!fOj9bH+l{<(cDC>Edn7ys4MzY4(88$y~vG@KoN% z)CvL=pJX4uB#FwEx`=;XXZ}+ju7L8#cT>vx@#VNOr(FL^CAbs|HI}j*nF=e&>X~HS zhIQ%7U;au6ywOK9)|TQrdD?=hOjXN!12p&Xk9|13=l^^U?#nKU$=Ihq^;c=n?%k2@ zH~!wcUJ!VfFnFF`Nc0Z2;|w}>iXa|f#k))40p}^?YXgfa<$*71#tjwJxFC+)q$fI) z$L~O7X5Af>F5sw7?N6U%)5U5*O~5SL3bl?+F!7AJ)nfY`ChEXZDNESY^g1XXL+Bkt zxEw>c^Z<xpP^Zi8C-_ddrV%Rrw4t$W#kNhAmF5fj+Vy=2YEC-P;&$UQN)7NtO?r^7 zS`jA2v%6#6@V4j(N*oz;-to>xIJE0QX~cKfm`2On(&T12Z3J@~#s!!=lagBcJiKNI zEQjo}AX|W1?bkB+7|dguvU{4{J)bpy>$^QFSZ!}M?<sBI?-+9ucl2x5XL*KJG++*@ zg|y<KUpyOE*tKc|Pk8DDg&x!D0OcmpCe|z4$ZHPM31RY7D^ERS13S+%&6aY++7ugg zrm+cJ3|b?OCNiZmQA(B{3(U1gQ8$~!%{YRs5M>=LRL~m*%e7tI_^GY2@WwMDo5uX6 zP)oWJ?<$F4)KIb_JL87-l$UC?N*o86xswQ!8XP06&f!mXL3oG|ZUvzk`A;?2Mrui& zaI6-DOWJZnnPmlBAg|b4n$G8eHz)Z%AQYdvRg8Gui3aTmYW^<r?dp)ab1+}Ed+v2m zAhw{`JXw2R{jrSr@a6APp<GVt0KIj9zP^xtaNqaR$mm46@`@{1CcQ3}uDhWR`@upJ zT0a{=99cM@<HwJt@v+g^g!5v2?(W>Y9=e@D;KfHN9udaIF&ki#=>*H*ca$G@bzeD3 zjze7~noiOk#<orOXH6oXw;lrV&F_3CJ^9oDY-&5x#rt+go3vBrV=U{AO^nk%xB%?c z2_Q`iZEVMs;a<E#Jo)UiX&AURZ`i~nuoaIaE$N|$A4x-OsvE?;)2<75lb|(y1D9m? z-G6_&bnk9lvEf}|T@SnM2hw)TDIS0H@$}5WL+LQK$r8?1w7Pnd83PX^BO~b&PN$p1 z8;&H>MgDrn(LcBv(vi_I?4>7T5?;lGXdR;uhU+zft_A5#x{;<DDN@CVLM`1X=qGG* z!INeC{B*(B@_|@2pkKP0I*lFw2HeIRWOv{U^iRi$_ENa@@8RR~oT@h;rVjQg&3<M{ z=SDU=jwf_V8sSC5NBkN5Hj4GE4>=Cy)Y8_!|8d+0@8L^)iX(B;2$mm5S=Brw<Kh*m z`dppCJj#b%mt2tUx$8S@YJ4DFcKMZoBsVff|02OlU-q(e@x>RjA#xy+%Pmyk{NgYD zDw^Dz)00m;mVWCu-<7uQ*p=T?sqIX-V3jX~^BDs!r3|CNa#C(*l~A0qIzTV=mh-s+ zYk<v8Ry0Vmkq!q`9!_B6RhF$}4DxlETZaQ3c41Q_s_y<=Q4|F34&`P(%R}di7<D(9 z<A`61h~N{4Q9Fs{E7%-GyWx_e?o@pCd<UTrM&X_Ww&LVJ;|sc>65Zih0wDvO%qy7k z=f48$=nR{3V5nNOhUtS9BC+Z9!Rw(F(w&-QHN#FI#$n_k@G@BG+Ds;7{Kf<+7I`DL zKZ{_F3iN7#)J&H)9Kbt+M+={rU;_{WXynS5f}|QB%))B0P{o=+drGl@Bsf)&PGT;k z_OcCOQ`3bGMyxE{<<#bXlDuPAKY~t`Mq)LA4L0+0(3%^TB1wUGxpcCqy<7RryCQCu zDO@b^E=OB&CES*wU8;73@`81kbU4U5SZPN+gZYT28g6<~e$Fth$R_G<pE5t&*t7;= zaZx*aYM>=}$A1L-Ut7f%)`tNP8Ofs}FXEK=E6W9M<pt?1Pk}*KQW=i?(n*W)eD4!o z(k)^)Y1vuK;2nRuYEuKJaFY2zE-lhP)7k+C&$JvKy41hcU>>u$F>3*~ofqs*S6%&* zbkBG0Nq60KS7@Ow$356=Hyd(TCV1!}PFTDDhX`eDXnOZX5d%HFF#sz_+<V^xY1`KI z)MqjM-4CBkcYWn6v83NB522vgoJL1=89vMi3Xr^u8u8_Gg{8O$IkT+z9bm&xH@s*N zOINke9%p<xnyn!`J$&!J`_mSVINr%-v{4Rz_}mxoMCcq1j}aH|z5s152h33ZORu^t z-SxF^rvnF%rqBQFH_}bly)^Y9;NJIxgXtc8>yC|2rZ?X5>a=nFI-mmk3`k%2+q=_~ zPwr3s>-y6kOf|&wA++0`s3;Bw(106v<ECxtnipN3zRsywUtwdPzEgMZ*orA$b9(mR zNc!%5KS-DDyAUr8SEg}zlqa&eX>J9t00#=ZVb(zVEz_uz$}IGTme>Ys5ESB^{HWCq zp$>!x4jaTRk9==BkD`_bShk(22?O)%_F~fvpO9XiVCz?TF@*M%o;Wg<)}eVctqKFI zU<jI)xZaaPecAQ*wP^7pZO8|ub$R^h;#Sk0%{8DxTRBCTfN&i`{3`f7o4i+xYrP<k z8gbXf;+<OF4LdgC0c3OfBrfp&i~e=c&5no|e33Z%ZT3?_;0c^dJDWCbijVJ%ALEnl z&h=TafRgnKzvl`A65|j9aj{*L;AykekCw?Dp<e$igv_w$*0uV$xIVy0J=x@r_#FHd zAKKCC+s~cgrYrBOc*t>?6mWd7Cj=ECuo|b)wVO8P(DHVn>m7%&pFrT!SK|<ZVPV1! zPQu}Gms&9{pSNJ?o=~L_FpaRQ0Bi7+Cf$x@<9|3y4M{RiwwaMiTSmJ+FF?9>y@>-A z!iE`~x*5c_D9pu)gPP<S@>j!aISWii)S`P}#cCllYIH0hX{~Kg%}d<Ip&67NcGKKD z(5TVe+=ojW1TW1QoD>4K#YEdw^QgZLR2Z=?*ro>U=1%fat7oW2HI9RV9wGvF{t%*U z@DS!X;B<A2<oNa90aNYaQrc?4^$BYCrc=wMA6AdM_V`s#VN_uEc;tDWEuuYJ4WQEB z%&z{rnd6;(*2GsR?rT7b6}3VN*CiM);!>2t{{rPoL-v`1SK~^jar$3L$gl71$F?B~ z&&Wr?*6K$KaG~~e9Bu#13<tmHyOU*lX)|~LF&CNHXvbQ5qoA7JkD(0`EQ5M}a{6y! z(sbq|8t%akI0Ck*Z+OES(j3eC-@W(y=>zY7f7-Fb4P6~+oFjvuK6otZ`_|Xqh<{$} zbg9fbJP^EuV~9WT*)N2^_vqt~;|6RpoftZacIu^gJvfN_q{l<k>*i5EQ)oX=j*gQ& zYL0N3;Z$?38?RwDfyF}rRO!);AT|M<oEI6|(XQ^^bp7?$rKb@-@3|js>w#lw)5bwG ztP|-3o)+2>#@_bxZ@`_}AlhJNgWzx%0_fY{bW8fsCqI|&_{uku<{NH++kbcn!FeS8 z90KtTuedg}(eu>*+N&>5zx<ZhrQ1G#S9%{C(YE8+!9H{J#PM_tvxsZ2eR<lm@8UF$ zpxlLLiC5ozOL%$sAshQN<JgRs2PYwij*X;m-urO+gLl6(U9|6_)Z5vShT&PZrNVvi z9;$B}>Vtl0av^QThj(dHF=IQ)gJXrj8BKlQQLJF_+|6XhuaR+m%!c<)Fye3#61iUn zhY{et4eu~HA9+#Y6v)NJ_L%Is3Z#O;u3>rB!M-A7XH#wgM!sTD!@Hv5`SFTx<5FCd zY2=c2MWhBd7GXcl8s4l8m&XBq2<~T#vj#;hJ+dtEAdXy-)az0nBkIO+a5fJwxcvGn z(>-^5C%ylDA4tFUYrm3q@7@!znqi?2udAUv_qUAM<(ctX{_ywz>p!X{c;Wi|!GLtG z=E==DL3j{KH|l<Orb|3OE1`4*JFLMUozXjJj-$Eoy&nftmuR=LF~iyY7&F0oJb3Q_ z*#l$R)Xqk%Q(_Qd)u6W2Szz9na2PGJu4@eDE4$srMwWq^{jeIa*eM(_&dryd*v)2| z5O|&ap1M<5?XLEH9U%~?@iN{tCJr5;;l-sEBdD6%4xH@w;+9NPhYsTFtJh<T6<)=$ zo5r+%R*0U$t}l)#Rg+5<+Yva_?&>R3QM*x)iHS)C=}zK%`dcw~XcT|-XEH(rDAMan ztxEO6qHx!a&^yh5=)hv|r$$Ec>vj1=1&l=SnR!s%2%u}}w_N8ZE5Ci`fNg&)AD{6b zA<E(_etB}n-;%IFdNa-WWsKJ6Wx2xOuN$hy(LftVJn6cL!@J_0`S{GZ^?|*Cwfd}l z>E@_5PQYv8qsuE-U@XVbjkH_!bDCj9U^NXN<0%Z-CJJrRX*?s3yab%{Dc{j%#8=LX zcI2AP@Npky@_b}*C=I8R43aHzNQ4zt5L)Df#W`rS1)44<B-T?cw}N6fb2;s^vu;!z ztgNRn6dK4vI>)!8!8^t#Ni|K06%B1rd;16CxYC`wE=cP)tWV=C!4Hp2pv~-$BY5BX z`kT_LUv)iN)^6-kJ*jUlUAS|5_@Gr#9v&V|JGO62@5FW44X=24I*I3l-kvTtbM3(9 zb$hrj8%Ai{FxZa(xF=kBInhw~o5o|!@e?P|vI4_J7qJ0nJKhy$)5JI@L~@*WoP-G8 zTj|eRv3<O3-vu0Cu?`^&_m0O$LNLGjnrqUp{KA{ki!Z+{+GBQdjC!l}MC-bBL)yo| z5MpK&p?VzR*|v34di{;prZ>OgbqJ}OG3~)$H%G;GAT(dR_d@EjHH69i&mM;M=5TAa zJ-zBxH>8_hb2Ik7xDbPXD7g2Dw>^8(;6OJfCU|Zb83#WL>9UJ=r{8$T>(eW*eHnJd zp3sNTkBOSTd=-eQ&E&OSG^DSxG0b)|@F-~BH1fP^P!P6lwRx_4RgJdlwR99TNhWG- zm8olUk-(LuIf)Aaj_Xd%pa4i3Q|OiM^Jd6=y=p<LyvX_Uk~*w5&hRSAK!FXPwLj!O zB)n^>vvEQo<U%3Wa{QFOX#UoNM?X@KA2_xMr+JUiM^4hW%>R^7tGEY|Y}vIXO`aG{ zci;JC`Xigrp}(G3Jz+EkuCxA}eD?l^Wu5}W3lGjY1|-HKV~e;#ak&eEfly@NTl;C~ z=yK;Aq@P%U)-4|juv~-!<_Tu}`s!1N)seNruI|Am&@w)Pk4HOEeP5KIcVXw-%OE&| zMR48xak+q1t~yAiEw7s7;|RPCq=1Jzm6o&_;W29)DVG_EZdPOz=Q50gj~O(rg$5Ld z3~l)9RQm;~#E78-{4um*{hfUbiY*Ac3Z5?Qs`Yj-P?%Ix=ILw-%rYgHmrpfQFrGop zaW*qigiyPxy3-cOP$)F34esO<Wdf@($e5mM5Y8?pFM5;+=3L3hY&~&l5@ByfZDuWm z4KiFdiUsr#fcTZ!8p}3|L6YC7H_xr%b7kxqJ9z-MOv@<GPIv7<V7wB?-;63~4#1+P z^FRu$#`D@fV=zq#*2TI-zFwm#*?_r&+9{V<ohX+0#&t522S=WoX<eW>)4^fPM{1L9 zVcUXsU3+KC@ZLdPEnjRJtEIOL->YHs*FtSO1r+Upmjds?bb?0?w9=NZ<$I${_KmM^ z-t~R+sSnc)%h7({&1f;nTNptg?MK*P^OY4Mn0pA${Hooxe9b1LLF-x{gweDfF|1k3 zv2k!s8e{srn}JustsDQiok;rAxcZvn<1)D`B`(GHV;8FcImN*Xi*pl97W%+F_Wumh zqhn)XU)#;j^S<6}elUS%c+43I6G9KD@Q7mFmgyU}6#=^w18gvtCzimVYcE%9;*>)? zL`=c^hS1uoxz1F=(mMv`Jv{>)%);al_hKVxcFoV8+S%0;zH(=|U*uH9iSZF?*POaI zJ<SQMG&9E1#iYv@RJ;uvTYdjFv#E8KO~W&jC&Bql>fp%WP6SljXat+z8GM_DhF%3l zXWnEw%>=|cHz9$Ew|;C%nwUh7;(|;exCJ~bxOlQ$n5#G;#ueHuK93b_Jv!Kv_G}l+ zG1wlCfm;WpWheUidHGhjHLe1u@A4!)Pryo?=khD<=v&u*<FVEDk(_^~8Oh0&9dS?t zb*UKdg)8vc0OqBLr@4?{d7z7CeB=}#VUjNWHRv_P(uGAh!uD90Xwyca*u*zu^3+V< zQcxDR_2z+5PvEy4>0_-zv}KyM!0EL(5Fdp%JwZPigGOCd^mU_P9h(8HiTwyiA3cPb z&I2fFI`9R(EheE+NaWfmb>nAEqX+Ic-v|O!2+RjQUk#W@@WR(m6ay0QNqkZs!QZHD zV~~h8^)+ED<bar;{j7XzgXuDCH58#24xTn6>@t3b@M)~4rpIHZNMBu|Q=hw$XJ_XI z221TJSLVm-GXyaW9P{J&37kyB3|KJ;^EAI%{`L8G1}rtc)qZn^0)C{|)@Gaybh8X9 zg~eLOs<5k8Ti0W5x@kw~?`EPP>|wo&aBF<MIm{st7yOi8t<A#qkLsmLfPFI9a$;L( zZi+xGvY(ADNwVb{~@baAG@HVyt1pr4zDw+a9zDhR!84cfHezVNY<s<eF69olj* z)rYmuwdZuQq<x<KNbRVb(qe$(zT{c*I^D13s(I?yz8GQ*Q<p+4Cgj?2&+^(U8GAW| zIfBBOecgQ8F-35**_0kH*a+7QgYQLvX<tAiM;n-z@unFBC)vz;lJp7&rZ0il(ca!$ zH#Om#@p7S+MhMZhxFIj|6}E-|Ll=ur$;T7gS}5!YE9q*CEkl?$v9#R9K_Vhj8ng@t z5d~ghYZSDFwEm%ms{m`63XW=&LyJ{Q@5aO-ymIh3aJQ}p!LvibdlHx^A9E#SvM4W` zk~AuH`PrESUMYDRo83d4<R=I<6h;1>)OAA-cKZm83b8Hpr#M2GNMkhY7?a{=+Nw9~ z;HOA~pIui%pjS7{wj$u=zGI(rqo)cCm&>6!1ovj{wT;ydSE1bZPT0n##@Ww+@XK<) zcoz4*)BM4WZ&NI7R40-O+<m>>X%jYYF1@!)NF?$I<yi_FoAd-mDmObCt60`jKin-$ zlAD<<x3fW4IHOMs1MM<{)^(20EZSWjQ7?R{cJ`-sgl;#$>0V5`cFpdl(E`t)&7Nd) z+&GSZ^=h&Ot#o@wwzUkus=(8#Z8;NVePLVY1y-ThAsLNj9mT!&^2f&V#3NqtCG5TQ zvCSMfW1MP;YS9*;8vJBhZ8W*5rdiW91!Wsx@~#QI=3f;6g~jsggU@5)4O||kbT%RC z$Cq_>^BbrR{M%=vpORf@W9u@FGD&1Qh5!0s8-~j?+D&sM^Mh<?OX%>_=#kts3d!bK z>Kzj;?yJFg_Hk*nY_yB96IiQRTh2-7(M{)dSyZ#j*F?zuJC8LZ2Tr8@&m0KvAywKx zHDTi?tuiv1zW}KPi3uJz0-`%0D`-Vt2<ILH5?C+GaVJ@})rFGuYdfj=aG9>w|IR&N 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�$Z*Tjc_V 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	Xu_na0tI7vF?E2(X;TY~;`3dD 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 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/interchange/medium.jpg b/libraries/foundation-6/docs/assets/img/interchange/medium.jpg new file mode 100755 index 0000000000000000000000000000000000000000..21c6a702ef751587087b4c2d9e0fba362374ef03 GIT binary patch literal 44438 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 E+4WHpL;wH) literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/interchange/small.jpg b/libraries/foundation-6/docs/assets/img/interchange/small.jpg new file mode 100755 index 0000000000000000000000000000000000000000..d447fbf1fbfb9714cbd3972cfb8051f4bc3e43e9 GIT binary patch literal 28474 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 Q+@Ik80Ks|x0NL69*%z3Q*#H0l literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/logos/sass-logo.svg b/libraries/foundation-6/docs/assets/img/logos/sass-logo.svg new file mode 100755 index 00000000..194e860e --- /dev/null +++ b/libraries/foundation-6/docs/assets/img/logos/sass-logo.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="512" height="384" viewBox="0 0 512 384"><path fill="#CF649A" d="M440.6 220.6c-17.9.1-33.4 4.4-46.4 10.8-4.8-9.5-9.6-17.8-10.4-24-.9-7.2-2-11.6-.9-20.2s6.1-20.8 6.1-21.8c-.1-.9-1.1-5.3-11.4-5.4-10.3-.1-19.2 2-20.2 4.7s-3 8.9-4.3 15.3c-1.8 9.4-20.6 42.7-31.3 60.2-3.5-6.8-6.5-12.8-7.1-17.6-.9-7.2-2-11.6-.9-20.2s6.1-20.8 6.1-21.8c-.1-.9-1.1-5.3-11.4-5.4-10.3-.1-19.2 2-20.2 4.7s-2.1 9.1-4.3 15.3c-2.1 6.2-27.1 61.8-33.6 76.3-3.3 7.4-6.2 13.3-8.3 17.3s-.1.3-.3.7c-1.8 3.4-2.8 5.3-2.8 5.3v.1c-1.4 2.5-2.9 4.9-3.6 4.9-.5 0-1.5-6.7.2-15.9 3.7-19.3 12.7-49.4 12.6-50.5 0-.5 1.7-5.8-5.8-8.5-7.3-2.7-9.9 1.8-10.5 1.8-.6 0-1.1 1.6-1.1 1.6s8.1-33.9-15.5-33.9c-14.8 0-35.2 16.1-45.3 30.8-6.4 3.5-20 10.9-34.4 18.8-5.5 3-11.2 6.2-16.6 9.1l-1.1-1.2c-28.6-30.5-81.5-52.1-79.3-93.1.8-14.9 6-54.2 101.6-101.8 78.3-39 141-28.3 151.9-4.5 15.5 34-33.5 97.2-114.9 106.3-31 3.5-47.3-8.5-51.4-13-4.3-4.7-4.9-4.9-6.5-4-2.6 1.4-1 5.6 0 8.1 2.4 6.3 12.4 17.5 29.4 23.1 14.9 4.9 51.3 7.6 95.3-9.4 49.3-19.1 87.8-72.1 76.5-116.4-11.5-45.1-86.3-59.9-157-34.8-42.1 15-87.7 38.4-120.5 69.1-39 36.4-45.2 68.2-42.6 81.4 9.1 47.1 74 77.8 100 100.5-1.3.7-2.5 1.4-3.6 2-13 6.4-62.5 32.3-74.9 59.7-14 31 2.2 53.3 13 56.3 33.4 9.3 67.6-7.4 86.1-34.9 18.4-27.5 16.2-63.2 7.7-79.5l-.3-.6 10.2-6c6.6-3.9 13.1-7.5 18.8-10.6-3.2 8.7-5.5 19-6.7 34-1.4 17.6 5.8 40.4 15.3 49.4 4.2 3.9 9.2 4 12.3 4 11 0 16-9.1 21.5-20 6.8-13.3 12.8-28.7 12.8-28.7s-7.5 41.7 13 41.7c7.5 0 15-9.7 18.4-14.7v.1s.2-.3.6-1c.8-1.2 1.2-1.9 1.2-1.9v-.2c3-5.2 9.7-17.1 19.7-36.8 12.9-25.4 25.3-57.2 25.3-57.2s1.2 7.8 4.9 20.6c2.2 7.6 7 15.9 10.7 24-3 4.2-4.8 6.6-4.8 6.6l.1.1c-2.4 3.2-5.1 6.6-7.9 10-10.2 12.2-22.4 26.1-24 30.1-1.9 4.7-1.5 8.2 2.2 11 2.7 2 7.5 2.4 12.6 2 9.2-.6 15.6-2.9 18.8-4.3 5-1.8 10.7-4.5 16.2-8.5 10-7.4 16.1-17.9 15.5-31.9-.3-7.7-2.8-15.3-5.9-22.5.9-1.3 1.8-2.6 2.7-4 15.8-23.1 28-48.5 28-48.5s1.2 7.8 4.9 20.6c1.9 6.5 5.7 13.6 9.1 20.6-14.8 12.1-24.1 26.1-27.3 35.3-5.9 17-1.3 24.7 7.4 26.5 3.9.8 9.5-1 13.7-2.8 5.2-1.7 11.5-4.6 17.3-8.9 10-7.4 19.6-17.7 19.1-31.6-.3-6.4-2-12.7-4.3-18.7 12.6-5.2 28.9-8.2 49.6-5.7 44.5 5.2 53.3 33 51.6 44.6-1.7 11.6-11 18-14.1 20-3.1 1.9-4.1 2.6-3.8 4 .4 2.1 1.8 2 4.5 1.6 3.7-.6 23.4-9.5 24.2-30.9 1.2-27.5-24.9-57.5-71.2-57.2zm-343.2 115.7c-14.7 16.1-35.4 22.2-44.2 17-9.5-5.5-5.8-29.2 12.3-46.3 11-10.4 25.3-20 34.7-25.9 2.1-1.3 5.3-3.2 9.1-5.5.6-.4 1-.6 1-.6.7-.4 1.5-.9 2.3-1.4 6.7 24.4.3 45.8-15.2 62.7zm107.5-73.1c-5.1 12.5-15.9 44.6-22.4 42.8-5.6-1.5-9-25.8-1.1-49.8 4-12.1 12.5-26.5 17.5-32.1 8.1-9 16.9-12 19.1-8.3 2.6 4.8-9.9 39.6-13.1 47.4zm88.7 42.4c-2.2 1.1-4.2 1.9-5.1 1.3-.7-.4.9-1.9.9-1.9s11.1-11.9 15.5-17.4c2.5-3.2 5.5-6.9 8.7-11.1v1.2c0 14.4-13.8 24-20 27.9zm68.4-15.6c-1.6-1.2-1.4-4.9 4-16.5 2.1-4.6 6.9-12.3 15.2-19.6 1 3 1.6 5.9 1.5 8.6-.1 18-12.9 24.7-20.7 27.5z"/></svg> \ No newline at end of file diff --git a/libraries/foundation-6/docs/assets/img/logos/zurb-logo.svg b/libraries/foundation-6/docs/assets/img/logos/zurb-logo.svg new file mode 100755 index 00000000..be28c541 --- /dev/null +++ b/libraries/foundation-6/docs/assets/img/logos/zurb-logo.svg @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + width="72.083px" height="13.057px" viewBox="0 0 72.083 13.057" enable-background="new 0 0 72.083 13.057" xml:space="preserve"> +<path fill="#CCCCCC" d="M16.038,5.352c0.425-0.5,0.637-1.078,0.637-1.734c0-0.787-0.312-1.462-0.936-2.028 + c-0.623-0.565-1.378-0.848-2.263-0.848H1.441c-0.4,0.088-0.7,0.439-0.706,0.864v2.022h12.686L2.97,6.612 + C2.324,6.811,1.79,7.162,1.368,7.666C0.946,8.171,0.735,8.745,0.735,9.389c0,0.811,0.312,1.501,0.935,2.071 + c0.623,0.57,1.378,0.855,2.264,0.855l11.959,0c0.416-0.052,0.742-0.382,0.783-0.801V9.397H3.934l10.464-3 + C15.067,6.2,15.613,5.852,16.038,5.352z M32.527,0.741C32.07,0.761,31.705,1.118,31.67,1.57l0.001,6.979 + c-0.02,0.48-0.42,0.858-0.905,0.858c-0.008,0-5.907,0.001-7.778,0.002c-0.466-0.021-0.839-0.393-0.859-0.86h-0.002V0.741h-2.361 + v0.001c-0.41,0.018-0.748,0.308-0.838,0.694V9.41c0,0.804,0.312,1.49,0.935,2.056c0.623,0.567,1.379,0.85,2.264,0.85h9.542 + c0.885,0,1.64-0.283,2.263-0.85c0.624-0.566,0.936-1.252,0.936-2.056v-8.67L32.527,0.741L32.527,0.741z M70.438,5.693 + c-0.178-0.166-0.382-0.304-0.611-0.404c-0.305-0.133-0.643-0.174-0.97-0.22V3.626c0-0.789-0.312-1.467-0.936-2.035 + c-0.624-0.567-1.37-0.851-2.238-0.851h-9.416v0.004c-0.466,0.02-0.838,0.391-0.86,0.857v10.715h12.742 + c0.885,0,1.64-0.284,2.264-0.854c0.623-0.569,0.936-1.257,0.936-2.066c0,0,0-1.441,0-1.443C71.348,7.131,71.049,6.263,70.438,5.693z + M58.621,3.626h3.955c0.004,0,0.008-0.002,0.012-0.002h2.339v0.002c0.008,0,0.015-0.002,0.022-0.002 + c0.412,0,0.745,0.325,0.763,0.733h0.004v0.445c0,0.148-0.132,0.269-0.295,0.269h-2.833c-0.004,0-0.007-0.002-0.011-0.002h-3.956 + V3.626z M68.136,9.131c0,0.148-0.133,0.268-0.295,0.268h-2.088c-0.003,0-0.007-0.002-0.01-0.002h-7.122V7.954c0,0,8.747,0,8.755,0 + c0.405,0,0.732,0.315,0.76,0.713V9.131z M52.176,1.591c-0.624-0.567-1.378-0.851-2.263-0.851H38.019 + c-0.465,0.027-0.834,0.401-0.848,0.87v10.706l2.42,0c0.405-0.05,0.725-0.364,0.779-0.768V7.973l8.665,0.002 + c0.489,0,0.887,0.361,0.887,0.805v2.785c0,0.027-0.006,0.054-0.009,0.08v0.672h2.284v0h0.076c0.452-0.029,0.809-0.387,0.839-0.838 + V9.407c0-0.854-0.362-1.577-1.085-2.169c0.722-0.575,1.085-1.298,1.085-2.17V3.626C53.111,2.837,52.799,2.159,52.176,1.591z + M49.914,4.799c0,0.148-0.132,0.269-0.295,0.269h-1.2v0.001H40.37V3.626l8.76,0.005v0.003c0.008,0,0.015-0.002,0.022-0.002 + c0.409,0,0.74,0.322,0.762,0.725V4.799z"/> +</svg> diff --git a/libraries/foundation-6/docs/assets/img/media-object/avatar-1.jpg b/libraries/foundation-6/docs/assets/img/media-object/avatar-1.jpg new file mode 100755 index 0000000000000000000000000000000000000000..0b828e2206f4ca130eaf1aee0c1fff5d9109463a GIT binary patch literal 10402 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 No}L9OWB!|O{{w5CE>!>k literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/media-object/avatar-2.jpg b/libraries/foundation-6/docs/assets/img/media-object/avatar-2.jpg new file mode 100755 index 0000000000000000000000000000000000000000..af07966251aa04a217ef40c87d4007b0f0907519 GIT binary patch literal 10407 zcmaKS1yq#Lw*NN_Ez%&V!w}LiLzmRhAq^7J4FfWCgNSr@D4l``(x9Lq4N6H29SS&u zfPj*Jyzk!o-hZw8-u~A2t#kI-@!R|Cv(`E5eAjc=YXF^+zq11XsHt%Sgus8(^$&mo z;bZF>0Du788@3?;T(5z7oxHt0B?SbKD1K`@4;y=aTMu^ue``+x7{8zZAT8_fX>IFj z?+vlBcXUR|K=(V}Lm|#~GEid?EkP|$MSCY_)j%(M{XlI4+dx-a2|K9l1BkT0q`$kT zyS=wH#NXWwiIVh}f&Rm|<W2i8TL23AhlsbU3{?KFSBQz04n)zz%N`=aFT!Ul2or{g zN$|r&V8Y@sUI<(eCL|yzBmfiQgTW;QB_v@Ykbe^N#+#R&gQOlp`JcXSdNR;|2Ic4H z$L}Y^@8RVr0F#iA5D<h5z~Ov15`3rtq_?#{9}>m-FAE5Jl&zPur?;~Q67tugwT*|5 zw+!?K>3@ab?)h)C|1nqpLr_cW{}y$3|C@k+m_>Q(+5b1*|7aLx5a4Mqpl6Tr@bR*> zzY%BstL!PM=w)y1?crtM;o<hLEb2IUczd9nJUk(aiV#jMYg=dJ-#*tr6tuJ?)sQG} zYox8c8bStoV}jq=*-lbK385g4xOrgmVlbGJh`694TnQ#GEDjeJgNecw|D}uYu=R1b zM|%HD*Y3Y{mHt=VzqR1*dE*&j@8#@kZ>Q|#;STvn%#zOk0gI4=g1ndr;%3t2;r|)S zf9cx&?^qQ7S1bZIU<Cfo?EjeQf3a@L=Wp}hb$iqKcjen7Z_3^4rmnBC0O>!f6|n2M zSwEobMIZ{m0sW<$FAf;z<^|*25cr>j2gbc2FdiNrK0ZDk9svO%AprsLUn2Q8fo|k+ z!MFrB!^DIHg#TmY-y;8a<GKf+AO!3HJ1~d>z@Y$vDL~hKz^fa4xZoRP|6c!uc=!ZF zU|eDx;D(9w{|y0PTo4W(fKNaU0C+fmG2?=Wi2kbHM1+e+fe%np5wK9x5W=9eMDlRf zJG$0vbP)=ALW=srA{_KjzSyKA4D8s6l_&rZ_$C^BT>P6P{Phe1C~#Q7FnLN`U2CeJ zPa;yGc*VVN>Nj834is30@bzrc)@iR7021&GBnmJEAPW>pdu^Rac>Tud0yDJ-;?ODQ zYz@9V8N|F<-o-vGoJq5A`YolxQv6bsi=?<-De@H@C!GDRxnhpkTE_dNTgV9=h8@5L z#zb#07zvQ7eLOHCG;vDoXf177|D0^<bEZa5H6%fUrcg4{F%I3b(;;au5I>6HeDaf2 zxW^3>2#RJ4#l8;nM0$ao26@`*N7IS8XtS0Y=QJHK#5<ifI8Ff>)cGoo5{I;vTqHEB zavSF4oed>~lM}IOGCXb!RW*}`6EB72>Pe5vg;^2gT9hCre8&r|OzA{*8#ZvxKpjGb zDl$>!`TpW+n!{@z=XP}4vu4&2Xid2Tx{3HT95>4l0(OR0r#ea3;E_S7ap5_)Ojo@! zDOhl{9wL9GqV|=3y)rclw(A(pRpW$dZmesoX2>^cP$z3Cv&-9(4{s^Qg&3$v^l0kz zMfTu1^-w)6BfO=3-d<70e~w(r$cuN=|D@RM$Z$Mgm`Q^eH_tUl7i6-KWOo5?Lv1fs zdm^TTQaQW_BDlg%zPyL-a&v4sCAQ-aenWA2nv<=~m&{LYsg3->OZQr(mY{=Vy&l@e zFOi*1A_j@$@|P)d)SCTB9GjL2+ts**!B#4Ke^9OQa*J!{Me68|)8?kEQog=`%rVNC zxpLyY2(z}zkYNSOqtI}|-?rJju@I=pJrb|YI>&i2hgI|2bv*d6>6zIB1yN^a+9hLc z8bd`p7WF)cbybcW3^yV!g~)gXGlAhj6VuvhuP865na~!t4U%mC=>GDknw?)|5cF7F zH9p(Iv;a=t5kM>_aF@w+ny*Lxm`Uwh%1?tB6xW(E^ZZL{Gt9snnx;VE<4`OT-F0YN z$oi%!5As0}5y=KK<=-@fO|f*{&dMYv7yx#24QOx%V;mlzg6F2*begg;um))_kPhbX ztLUZa%xmY8Rp}G4rO69XQx8joFSB#{<8yMh4UyeRZXt8`?X=TvI*pZx%C=yetMyeH zYDkid0pe|{*~!s;FuW)5=Q?B=16Onrp-h&oX|W0>O&o0Ro38=iCqumT<EBz!0g-&e zL+qvXxLAT!erk}#!GgNDqCtrjC$S^s#WSXgBb)U~vb=S38<ohXejm{L$t|tg6YWNC zE55#cq|nn#_gRzSW+g%;lLDW5lL7{*VD8j}7MB8bX^oi7S*66blw}`XyH6XINsC-8 zLSC8zG=ypRE{0|Im?5FXxR281s0ZC~AoimGlM)!X=uL{{(`)OK3QvJz95v@zZxi-* zw2n<;2xogPG%`goW#RGhnTq3_wa|Gs8j3&pDw47hpPCZYb3Gr+$hW*G`u5)J^QG+M z8P={@=2mgt!+QtjE8FOH5w6XH0eDTlUU<xv$+Hn|yWdmMYy>*H{nx;s>5~{0bZ3W; zK=*p0*1n^eo44iTF~cV%&H)5OOkWx{x$kqY8Yamb+GYSCI1vhzU~XiW29*waZ=ed` zm#!^l@s!*yRdg41xUgO{b{5UROLlCAYxbR>86C=@cygNEMlAY(px!%cUB%!JEan0{ zJ(_Yh26FT`Uivfpt-5}1)iw$N32=q)I@zsJ%9=ZnZ(Mu%f~2|>8xKi@$|wxr%)}|o z3%-9ADmI4Q(b20)63sLcQywG*HTAU5a${m~O$V3|0|=9vJS7~Q07P6kXit}kTdvV1 zMD{uVmOpdIH4w+-ftjNmA6ibuPCoQ5%p5~HCVoy$bt}53SwS8cw_5C?&oob}pwFct zw-HBAL~NuHn=%&Z+=$H%do9T0lx}{S5br&hcgQn%h(Xgm!zt8japR9sDCl8L0f;Su zpS^wj2Z|X*UM90kiNAfZ^{;3Tk#V4!zOqE!g=epa&0{$lsxMq)MJrbNPLqe^+L>H3 zb53JvY;)Y|rsHxKovL|X&8S<WJDu)u^YqlA+q_CJgtlZ6=1{$`{<S#OVb+~Pc2&3J z97V@Kze>lD{O_zCi!#jY%&4x=_4#(|41=STw8S)I=W_vQau!^kTwkt=vsfRNfFlp$ zoc6HMYtPPWCo!R(%Cq(milx^Gks`@{`aQ~S?PPFP&1~tZJH!w)jneBf?0wvBBv{f@ zB+qH+NK7{)K=pB&`6(`y=0srp750?t`$Shk|I3|srJv6nE9#bwr!AMxW?Q-Hrp})K z34A9ZJu~1^%k%5cOA#ZYGVxWK*oQJ{bMBj1u_rn1q<yA`#?jkqF;D4ueDWqNYV=}2 z)0AxBRJc*4L?5xvIusPozz_PW5!!QE=8@d&XYJRr;AiOA(h`)?zQwe{H`ioxSMmw5 zGGD0~+nM}}Cd#VFvkWB>O&bc$4>W?Skhih=zM&~nhLqhe5ZX)mqbr`wyh>Cy<63*Y zs+u;0gLE-$0LMBMA4K*X`1wIpK6AkMZcd}$c_}hv<!yH)*8OWsle*b?MwzvZmEFQy zwcWBXj?Dx;&6pbR4>h1s^HsM#;+$r35~s*P{a(~1L8H``J62&T-S@a*40E{7uJ%WD ztK7i9$srm*^0AinQK<<5;dFiE7r%{fEhnfBu#0Z{SVs)`qw9~d;*^z*y_N)T3Dwq8 zka?TK^gJMoTnsu~sj=a1HhD_(a&n(c<rTz+Aw*EC>L{Dv$t5c_T8}NRffDhB-Q$Oo zWbvn-I`xOAXS3J9WQ<F~_NIu*YKHaxqvvC#d#koWE$+HbGtlQJP<(PSir#mV$D<DD z5-FO;-TB^$t>2)HmS$p0B9-n87sk#l*tKRIRpu^tGThCiFK%qp@b=G!Vi9r-gqiY! zWFLy3odL981%sx%X2IWMnIgSTYO#R@yk()w3x|47DAF8w%@Ui?5_iOs7KSrXUh6ZR zv0yGPQu|%t7Wr_6?o~>O=3MKk*;!16vj4ro@=<qmkFzY<Xs~W}hptS~QV<1A+t=nS z{#6V{Rf?r>eP?KSzNtJ1k<9l@iM=N-lAly*F?&2Wow5)%Mb7E7m^S%Sm{YLPA}-T6 zfAMN-iLXN-VD{PBW;*SQlAlw0w^xlatnx-UJ>^rE;qV?E*f>2xMUYNTd>U5i9A(=V z^=#fCA*KD?AN?LJuvDK68ayVA9omlm9-26F4cz`N{S{U>b`4+~cebZDOg%qz2gztL zY*f#`c#VD=I(e#5J(ZQnk5OL#&7Hl-+|unA<XLpm>b^0P`5vo+fmm%Yqzv<7&bNl= zI}luQ2*iM(f3ToF3;6{N3l+522ZQ0k>@SeDSY))iN%5QfdAv)fh*0-nUryER%5Qzx zt5}r(oZe}vJxNKa)btr8KMIJA+O8L0FU$T2yv*O|@G!IV3!M|zy+Z|NW`_HYlW&`L z*u-j+ndGw4wWBEXa$$V8b8r=7taHpfrPBQPVKTc9FvQr9W<QN6Xi2uEdqtYO7}nUF z#&a5jSdV*FWzd7CBe!Z@-4*OvwCK#CJHe}48mKvWq#BAn<$Kz$!)Uy4-ah+9ZRHfu zezEqTG%9DH@9hH>Adb}#^{QPT=Sub&Oe4+dv{u{Hwbw|jUGxv~IMHXMJY=k)0Nv@B z^|s_?Uj)hAFf%z6QV~0DNE+z_FB^sELTI}Ph&%*n$+A}yF=n3QAl&H=LgZx&`f~2A zRg2!FpeA;EPjg_gWfMYfPQMo^J|&e&nzPd?q*E04oOn}kY8anMr3EAM&?w}M>EhmN zW-$C!kdqY95YpXJTH-!bn%M5lt`T`0xbj%rel2+0B(jy(Jv_K>N;wnaAfEF<{Dk%t z_Ez{~-@%`9f>zzlVU9)SrsD`CSEs@rQtXHOps%`FRZ|+l0^F73M?FJ(B1<}M+^w8- zC0w2iv_j6|yEO>^;7p=X(!y;39~vWn>huGCF?Z`#{&%d1sNiJ18Y5?!HSlFvjU2b% z|7mm)Zp|;8D)Vxf!4X-Klx>*KRIj7QkMCLa+yRR*GKI^R)ln;IO%Jq3a$PC0IGnFD zM(CgPb|Z(?-sq}+ARsG4uM$(MKnTOb38U}C_s}uPUl<HkvasYm2=ZCd%6J>}SR@nG z;=LDSB1ZegynTvQm}=M__Y=P-Q@_qJm=2yJjxScH=^Rha*>(9_<B?OEg@G)V$}?<c zW9nU#-%0CN8L8}DjvaJTsJ?b?qw~(CWSH1U!Zpy+{JOf#B^Y&Ny5i$kIyvp#I+dM8 zcyJADy?&!ryO^}R|2jZsIRb^UoK;BIWi$rnP()d_bh!R&9c)}t*d_i|dI-m=dXBR$ zn0jM|V~}O^d;E5o^+CURwoPHPg-qwk>Y6*oKmFbIDbZ2)r)93qPi01%xm-rROJE1F z9ozg=(c9`^IVDOR0P*C5w#A!~pTum!(ZNzw>!o6MaFN^C=KeO{H?zF9r<`JVDpC$R zl;V+j?0D)7aX*=+A@-o(YoB}I6YN9MMl%N?3t43fWm;>xZ5DKis+-^GsbiYbBiYD{ zbP(EB3^@oD>WsXaM{_t&Wdj!ZXPcKEKWnz6;p<s6p`){Sx2;;5wdupXg=aVDJ!l0Y zlPI9OtxM$z0@k9ipTb`dRozJi8DLkj9GfahE3#;Z1oVQ2(91S{wqn!5P77ZiB7M(P zO%5)jFRB25OYHVh=l2Ey8c9bmVSrF!M&Lg{USyY^j6k|IoY`KiKC~XwdbhN=Pekxu z%(z|jRFT_`ch6obAz>aaPfZo#BP*?d=P(3ep_+7>Y*vmICybUM9Ug2#DlJ1m<CVhY zSwhq{6GtWUOAppw?$<9TKk;RYBWg|H!tCwpFxR9H)kYlJvc>R5xOlQ?g15y1HXWSV zNKkaWWwVpg$a|7Z?5*_J45#S<%EGI~?q!pZcXAe97QLgx5&OoRZCZr>u|!a|b#lXG ziLXLB_qeNaDp(rzpAj5<QfYTD58OX~ZY8u{>e!W78#ZT>{#*B9;flpl*J=BF`T62; zK5sTUD4I)6N|My4wk`Kg6Kp{1NU>S%%()`uVG0QW2qc0lz5yR)x3NL!&aDPrywOCm zGtLg;w<QD_8nw12o`)?m-tiY{WSJX7^1XrEmtx}MP3p{V{m#tvo&H|t#Z`TVhg+0M zmh+YZU~*Q+@w3f=tPMHJHRm!BvaXkoEn<^{#Ihawv$oL!cr~k5k<F}+Z#HSj)Cd*5 zCY#hKO~jFtnC34k|Ic#8`LEoq?b0^eN8g7Vwg)ds0OG;ZVkb4MrGZoB8X>i>RreNR zz8`Dr=S*aCgh*e&e+LU~uRRwj;QUS^aa#Z8@~x<pYj?r9dh0pcQvOy~^Kk#>QqQL~ z1(8MJm#vxULS;QW4whPa)N&>CRS?r?E(vAa_I`a`2snl?Bi(oRv|)L?w?k>H<<c16 z5yDNB#~`grlyMEHZjIj)q{dZDPGWeg7<H?tk%=D0rs#w5g)1rFj;nxjn0?PNi)bT? ziegA!2gIGZY0H01xlWK46l_k3VyOhV)8aU4<`d*caZJ-cb@}5dQu7)__A4=uo}_vN zW%{NETBMU!%vCx|N}YVY{mQ%e1-hou&4)&3{2sZ80rJUEju-VRJ&(?ZDSk6rr5M)f znx^j1akLxlr8~{bW-Nz?l$Y`xEzbv4m0Qb7uXG3VpKEYT&u8MHC22@~)G|oe`Ca^N z6j4MU6s&OA7;|N+x^H(HvkF>iQ2bO9ICH^tRl3)yITb&U>d0ln|IuTv_o`H1eI=Pj z`?+Rvv{1zdjBEuvK$T1Z05k+7Kk64V)M7nV7-&BZNqEf+4!2p49Vuk4Epkksj5wJ) zOSQkqXmuTQc6QqN{!P$6fhCTslkjw0j~m+Vlb}dMjG}<!0SH{2&d%}@y0k=>Q5*JM zs|uNTtm*nf{pZbd-v$=d;g4NeFS{n&>S-IT=2ac;vx>$Q9<t#L=8a9>6J&&qLaYvo zwveZAcvfkF6C>>)bm0vJxeZ)|fAks<R`oqtv`-B3E$8VF8qQqz)z!WtIu|K0-%f$G zgWI8`+QgiOn%<gvsqhF@0BZA$TS6yFt-~Z)HMsUMeXYf`B+^{M<9RPZXE~;}<y`)q zR9O4Ddr;y;5Vp&A3v2eabX-oDg3&aZvaWuRIFNp?heeJnB{)KNpz6eR@;$JY$1`zW zo-?0ngEb897u7cTLV?oKURQQkSZaI|ms9l$(<vNflDk_ZL5U>F7{CFZ5wrYxNg9_u z$j(IA(0AgIH#Et7S$6(>#sU?hXk2Z4@qXx-q^t72CHCUmaW2<mdar|ipF|T~s-nQa zmmjw~{FmIb+x?z~&UuJ5dDc6LYR$$>svR!L>={lW^TuhCSP(U@bP)llg8r#-4<?Jg zUhtTsI-AzHKi{76Nr!Fairix0QA$mlWSrS;;*z1moqWv_oLH^0;!zw9LC?E@$j8|t zz*`7zA+T`T)Ov@YtQ6x&!rx!x`(<)Z*gfrOHor3g5#6V%gH<T&&z_dW%XjOjXSJyX zby+E~lrU*FaO;Rj0H$66suxR<g&R%KK84PI)Nx3S@>60Nujf$mxi=y*n8!hEk4%HI z37or{->appa;JISF*VgmHos``^82{GpVz*!!&vLudV(?0(f*|GCR4kgyc)H>s!;62 zMKKpnB}~rftZX9=CTTSgiGTiT!7Sfhl%`_Fw3G()jz4ce8$ESLlBerf+C-&Lv^o<- zCr8r1lAm1!<ta1or=qL4CyUkVZs|lGx6uPyxKTu&1JmaC6Y$&IEixUR9Vgo+Eo@X1 zB!5sea>wgfMZ1#<2{W5-Awq4h=u07(9bizPYV<?#uW6T1qS_p4>i9MF1M*J~TeN?% z3;82lGh!%0V7QZzysT>=)$u;w_fx&-)G79LeDN%r2hwmIH2Y!@7Ju)-!_e~icQ(C~ zuhU9V=IrzY?(!eF29>KSY+9+rMN49z$vu##0M%pWqpKkdyo;#R`}+D#T)z8g{>}5G z=;Y*urQYo11}n{3=uF7nczZh>4$kVCul!$>F-}j&S<G@O8ORAX%<s#*f`-W5J=z)* zLHS4wOlq2JN`cXZCuAW~owD;-jGM@tz)^t?F}tH6WxcH|m!<gMj4}zTC=H0oB|LSy zHZzF>XKP9m!E?~xGFvy7T!t?q5=Q(7V!3D8)|U=3!C@TOPQR=UQhTyXEmhbl;H<{{ zt}(B>p=DR(tQ_v;-2L@&$j8V(30xElQQUTrSWWgif7>u;Cq&x9Lo%`<E06J9?_;8= zdrX~H;X&6x(=ukmd`LKMao+isb<Jy$SP!Qm25S}4e*1#=dg7WyWq<<ptqk}xVj2oq z0|iUQGeg{;!EF^2;(N0z_U%6J*1bJ6P|WN|m4d06o84AYh>UFI=#Gm^h-LOztZkC| z!lm}{dPg&6ukp7E?_JCD@kzPX&C;z5WPkq5!X!OBk}u6W{RuJg3wsh85J?XcOtfw~ zE!<PDZZ&Et9yH}UL&p<J1L1Z7XB1F}D@5y3JymxYw){pa?5@~7+3KJIkSDfhr<v6s zXy|*I7t{TwkwWUm6yK-)QNqDVceW*(nguG>2Jr7kTQQlt@kVGoiIwOh9O+&kIF?V^ z-H5ac)=1j@BDC$t_#P7}teCW553R4|5}9#iZ|#guOPuoN0zm1?rZxOCh*)*P47uJ6 z1PL{h&3^atMB}4E%n$yh27*6)iN<^d&5I;R@HHTA5XO=>yMReL+q6aML^UN;)04uo zRIVxth;!-_zgv3R6bYOM$<%dH;L}DYrI>$HhFh<z(RjLW+wpwjzB5>F18f2!;6Big zyBGoAg-;iC<_&fl%GQ--_cUWhbZQya6GP`t&Nsn~UwRVa*Y82$DLsdeJBt??%}_1f zZ>JD>FWjpiiZJ7NYZj$B58;XJP@{;_Tsnqw35cqoIuu$uf^<dVbMKMx7N5@!riB+- za*_@w7vP!BU_(K_%;unHZw1EM#_9xZdUKlge%zzm@*vsOMYVD}a~l$;Z%%qzu-+}F z%=uWrwaujFcHh148EoGytGh=Pl&7(P?LXNI{IU5uQ`u<QLJT_k)jnAW*!*F}Y$GI8 z%_)I`dpkIKwiuvW%>PVPBf_mJXtKV4dX@~m2EeA3wjfqL6~Teg;AxDP>Dakli(75z z>=HYl>lF^%mz06>a}07)VT-i5rmkPG>4+}zc10=`NjUzX&ds6pW0dc?D@^QuS-P)j z*=Amo7z7U>A;?3XZ2x$xVq8Jt6sMn@TfJ@odfRC!oHg@)F?NeGHtqf6x^arqCUNuF zP94(5K3KS+&cNV(c+D1wf*e={CC1Zs>rOt%^1#b&L#Gg>qId&JKRSP_yIMKfYHlVT zdxcz5e5=(+Tu=t#&0}YXr8GeiP3Xdsd%&^Jqs2DA#IiMvW=4Nf3a?faiC@+p#RR5* zc0@hc<vKDXkLj$7cBYPHe56ETx7e*iZBQN2l&Nkfm?2I`3chEDR+o%2XNt86h9A_p zA^C<i9iTz6cdf~;8aicX$WFsX)vs0p#gvaLA_BKxmYzAv4$gL+w7z_}ReA4w+p4U+ zpRtBY-BmW-`oz=LWVZeJiPG7byXhfe{e>^%Wtj8xn#NwClLOxeeB)S=l6-`m3wcjF z-d&c@yV-`My)PJH$=i@(&PkjW&951IXZ3!CwX_vcab@3?28SL5_0Y_Au_Qn$C$&Ll z5Gj1TL}%@FqB;?n5NMNH<<*Yth=<rP1(zt1nm+#)jn^Rlr#x|pL4OFrys`AvXu!kZ zRmgV#FZLFnMZ8weY<LB9ypg(|i8GuIk3ACvP(?q6;8^#6gEI=2ph37+>YnD8`xEG| zQURQ8WhRB<vpU9h3N>*FWz#k|eD_i`GQIEM5T<DBf`N<@8lZyL$(-RL1Cap#bD%Eu zWeL;VL91q^ES~zccw=GM2WC*BLY7-qq9{L1Poql)Cj6>XIxv>-@j=3Z$&>wF>4o); zyDJ^G5?F?-#ljI8jGK91a(cRO&^)1Q_$Sl5hU=<egBNUybQMbT3Q^)ER#bSn>a5Rw zQh7~Zgfi(hwGj3W@V-Z^n|V2k)id`ew+YTJE;3m3RF$zpQ3+oR`Ui0g&>V(xUehyR zqY{y-bsshKYHgViUgV#X??3W3pC@_ORUE`;)zTQTH<hDBahaayRN|V?2p$2S3Bn04 zq&*p1Fg7-c9#yy5^lt4Vv0v(fG6Qlyd6aW7(Hr&}ej_HmTZL#Q8sn+JpQ$4BWGa^H zv2AYtxE?34ByoYGpMV)3%SZ*9tS6s0l-yBM`s|=rb+8exieQp{gd#4@(8?gjzZdga z&>a@zMjoHGnU;S!@*|3GeVg)2rW>Vb#^jL7P@}nFakv46rdckSLXVSPHcj{*7>E|& zbb$#(cq*&JvE48K6Rqn$fU#S65OP0-YMf-tHtd-UT%f;=y2n~zhKpLKA7W4@NEaSR z)U#?{a&bB0LzhaA7~EE*=!;~Ma!`U9&VO{B#{WT5Bpd(vCxMJW3@#<-+WpY}&X!%t zrMvegP4k!r4ALfQ({n2_g`Bp}0;(rmuPXIks?b^ReUgDyCN=CQUrAqeKYnFADSPIg z9-`;#@R`2B<5IT2^lbi8{kKOvDe>Vmd8s$IrPRfVJ2a&?9hRu$5mQ3G>vATm)Q9<l zmH?=Nz6D`Cj#SZ`HtqMnj5k9rIxIt%A>nNjgz{P)5Wt3lS|89-8nYBpWRX@8{4A)C zQm2b9e|I?4VpEDpoQGCVYMLGisOF7S#pFN8&C)4(!jBXN0T*vvQK&JaA7D=XuuiST z+lvXht_w6EFBXFr%Fy)tJ24j(crk$Wy+r)tKl-G~tHN9oW-f6wkC(8%Djk>Ik7`yh zcoK;@l6}e2gE=K@)fvWSJXt$NU2=-LvV1BrcL+Uv3st8ec?($K;kII=u}5;(=`C76 z_R(!_>j*Oj26>#wf@*ycb$fC!P!N2(palOg+&Egu_w+FzuQJhI15AL4xX|~-ey6dm z)a|xc#oy+(^d1n6awnA-xctK68i#s?<217n1F^X4_*9HyJ)T?bgKLYuTvAVHUL#$C z-(qvkhMn#dc=vLYIo+OeS{KF>?a={fbjdyOxr?>&DHsfbpSad*X$0`}?DPcdeV)Ip z$@b%GrE-nk55P~4Z?{N4d^d?)>cIE<$v8+@mP^5TXHb6BmQeraht^hDcz_j;y03ST zSpZtN?{~R-7pC!eF=?fu-W9o<(81@cRX8z{rNTom9%ZaEOwm}=I4w5-mD6QG5W7rw zIY+yzYJ&!GXOdL!+@*w&2yKj|B!->x1xlfV@EIL#qD`;dp@jXPMhcs(0(ZXe<mk&Q zMc8uYi42;TK%bPu9$^utuzquSbjl;7x?f^Yj|Yi2Ew;CznVqq$OnQ&Pn_YaO4$61b z%JY$UuPV<Gpr+u{1nJ^TwjI4#x>{;k+OKSmN=R_h2t-6fD7K8M9_OQFr(4Y|p4Dv@ zu`*`T1i*Sy9<_b>t_%BGm)tC4CU_0ZqvoIIZ3m278jCo;G+TQ}#xE0jC>hsCAA2Va zp6Ko?O{pXC{8mhi9ZsUU?y$%@&Aka?1zu(tl*q0=-)JnA)yQse9x}zExT@1L<Sq9` zQmJtp>XJcXlPD*<60d;ZP9fGZ`W&bGdt~UF=XQx*vx*>xsVB~zkH3@17&kvd7)88_ z>M^fcq(&V1nxnGQlQoAP7#_GAEHWAjr-8K6YT9p8hF5t?3<{6lg#vU=2vr*ey)_oY z*C9d0er}1)E(<@;&4@sY8Fo1W-WIb}^#L5hTrq|uL-Hot*086BhURn?f~4j}5W0`u zO`UFgsWaw)qbY4G?Ke5P&EKI;FprhcZHuP59~NcNZgsP3b8uw*#;X{d;d(X>pCp?K zYS5^)2u@~&i_I6bc@e1nWj^$loUI}BJ+`ymjIYe=X!Zy9p?2fpH=8s0UW5S{G{qX6 zS7H~=T@;=u*H2C=UbmS26S(VI0^!jqS=z)NJbw~o{wJW~P0Q7RJNN*3*{dg5a>ZfL zTY<}8RlxMtGbKXXCB{JL&M-iP32eDv;gis1QmYMF)$g<qstORZQ^#P}(fVSd=u-Y? zy~2O!zt*u8R2=|v0j0vjhJUO{zLRV8ECW#S!}mXe#%2f5Zt61|lkK#kG58#E*TB6k zO8IKscelO<(Jp*Ca`YABy9V5D#fPWJvHr1B;v^RFEm?o#JG>3U7>{OlZRD2Uchfvf z#JTy$2jS$W#ayG5tuiQwr;3V+iLLEZx%*;ih>HJs3)_Rh8Rl7v&-=J^d6BeaG2;8> za!UG(e&ATCkAD6m{QUrZPn?w4+8Xxt6odYH>%*yA?!_LitWz-&?W|ma)%Pj2?Fv*) zvlEy48}7?IX{C)}?_mn>A$7IH(jJ8LT-G14pNowjYrn3LKD}Q%ewf$ZCGqmXJN2EP z<^CHg`&e16-QO)Ht-I;x;=dkjsA9dwf85;pbl>urkqt$L)}~L%h&-3C$f_Kbo_Ice zA?>fvc&FhO2VLd72%O+#B|C{$*%Dt%wldpzBk%o3s^y|X)jJiH+5!e&e_;*J-m_a+ zFyO(b#?+18{thF#JHe|X@W9_8YWW&?w{hnBE6~#BZEW%6ae(>!Q!%}%v-v~+Z--an zfy)HR!kGhsRuMxF(r->dzxK6$Jx)DKst@6leyN{3b{4|aJocFSL$*&_uaNuO?cs{K zGmX=TCzqA8=SsUL?+WWp9k(Y2!~Cy-ika!k!$$i`CRQ!Sr}q64Mr6qzX)+5T{X0jp zt$d-?Q?`MxjkW?O1ctNocIews%n$jq1&-eyZXd4Y2i8vZzoS3t=ab>POqe(rX(1NG zvQEl27xo-q11zVORnM!1B}3n7JCnLr9bN;*Rl)Pe(laC3Nx|}8OK0~NH<n8zMFIsU z-i$nD$zsG@1Em|GgGcwgB$~W0@0u2zH0*?ForP$=<bR$2;U$R`_UbE^!0@=i@gr0I z{eirdg^-EGk%|SL+T`TuTgx+7zpiF1W$w-1&D+@+-8t+IdojgKa;doYYj=BF!b8;U z{R`%7jgvp+yq$@f=qvN-(Wz5`6G_?fy)zA{`K<chA+uG%HSlmdO!sB=&XHuO%f$=R zwI^3B)r;#Be|~D+*)60y>|Okc6n;oHb2)bnoIIHKy1A);P(D$74M^P=x$v@u7CxQ} VUFHe<dNLo(yfShR-|~9?{{e23wSxcv literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/media-object/avatar-3.jpg b/libraries/foundation-6/docs/assets/img/media-object/avatar-3.jpg new file mode 100755 index 0000000000000000000000000000000000000000..ae722a7c824cebc23359337968283a553d210b02 GIT binary patch literal 8028 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 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/orbit/01.jpg b/libraries/foundation-6/docs/assets/img/orbit/01.jpg new file mode 100755 index 0000000000000000000000000000000000000000..b4e07256a4207e7eb9d5d6e778e895da9e1c08e0 GIT binary patch literal 152776 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�vt3*s0r!|S+pMt&t)40Bj7+!2TrHqQjNhCBE%Ry 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%0DBwIc~|Oc$9#3$QR8u6a_1IU8d8h8QZHb| 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 Tsj9w0AO8UOl#l-akdyz}z3V{* literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/orbit/02.jpg b/libraries/foundation-6/docs/assets/img/orbit/02.jpg new file mode 100755 index 0000000000000000000000000000000000000000..f6a1c9b0ddda6f61dac7cf691430a1bca1d9b78e GIT binary patch literal 59854 zcma&NbzD@>_dmV?NaxbE(zSF5h%Q~yONS!e-5@L_ETDiiqOb@qODWx;QqtYsAgPkp zcYVF%^Zn!d`8|H~$L`GBIp@y3_nbL1&w0+Dxj*Xw2Gw8}M*u)mQvg5+_@DIW5J068 zVCNPB00QuE)%O8_KkHy2XMcZhIS~<0KVe&Yug4C;c3vJL!M5HaV#1;#fV=mDy>0E> z9Q>h=9h_V|6*x{>J2{{(_6i)PQaYkK-pUTnE*hb}4o0E62)j@>J6U^<`}d%CgXMxf zygeNJZK1&)?w)>f!3rGzD3`<K|5l4|K>umt@20?^`1h_*GaY@XvX`#|R7zM1W+y5p z36+r*7LyW_ydx$A6&Dqg5D}FS5tD$4iOY$~%85xq|D8B+ck{J(lrvOO`}e(YB?XRu zKU7dqkZ_QMu$Qlsh?uObtca+%h`2Zm*8=7j;^}W24D<Bk{Er3|2R}Ps7jJ(TFHh)S zjkb@y0{j&?a6SFkBY1fKSMC4vUHxATb#(r}n|gTseF6Wd_47A$_@Dm%KNb5SLcASB z3?2Nu0(|WpaLqaY3VX{b`#RYAd-)=~yxjlu7WJLI{Js2~y}Y5y%1}NXTRRuezh(Y^ z1ax%dG(G+NZ9VNAG*uKha4LjdT<qnPL}gW_BxFVJh$)GQiK$B65mgpf6;qVFBYsCl zOj=y|Ke8%bb^#s^p8o%lwf`SkvHw-}uPu0Z<L<2D;Oi3TV6W!u<pKTYndMym*S_3Q z{a^L{Th{)6?aLjt|5a85*BOz&U-tj{(*LQ#na|(sf9)1m_^;(Vc;d|67iZUhjsfKV zSS!H33+F$;KZ}4^00G|Lg!?5R#K*@cB)&yJaEq9Ph=`boh=iPk6qiWINy*5_$;e2l zsHmx_s2CX-7#Lapn}7ra1SG^HwB+Qp^fZ(-^#8r^|2Ole3qVB({0vS91E~NYDj=8& z_@^7tiR&Le5D5Gq_Xh!hU_5++TZFjUf2IFk1A_j!LWyeu2IKO#@Il0cc=-5000>Nl zhksj)T9LqjgT~fJ{1!5;NXd{B^8UkPU)pGi({yx=AD5&Q9pU);N26MQZfRw^PxNOK z#Q`#3V_vB8P~kcN0^$L{1YiPuJn-L_Mg;=n^x-KQ;M@8jImBrmb4sKYz4wI>oPIEj zrd?N3mK;B;`Lh5Z1>;1iz*M+l>e>uTeG83;<fCp<LU0j*;OijxIna#DO&x`y4_D#H z1#)tbAy~<1X_SufXuemfl$B7m`LY_8B3|)7eDC0(6d)*tapiak9v98M52_-~sf+#a zVyu+3fHL(Ce1wg#2wF;-!$HWj7qvi3J&yS78n3EiP;UjXa?Nq#EukWiS|%27t%zkH zeoCB6>8#8H!b0~jnU(n1wL8v)RDi-;fOzFgL?IXfQYA-We}h>hWPf^cn9AMxDx<&H zK1A#7R-kT#&Ptc7&i_?_I;=WMVvVM7NEuF+N$dUt5KHN9ehw%IZfa;Ls~ob}0Fzhk zEn9_BfWKFAC{4^}HPOkwsUP+(A_vt$&y@jz-wmVIv8j}gn@D$fzyy%4w2DF%Swdz6 z5r_l(NQ{_(%!Gg=F)Fj`aS1438Gcs@=nW^F(NVF=_y3rKR0X6WQFutGNB#aZaFjA` zNqONW>Y(n(=IKIV3Y?IZQk;N~q0qi40gHT=P=XLgsEXrS+tp-<BcU49sK<YQ@e(xN z6l$<w8R6>)ZY6zgC3x!JkFvS=2Vh76Kl%g64u07=`15UOrx;oLic~LyXw8}Zthhc? z@9td$LHYr~cN?8wNit_){%aFowy!(x2dRVBd%B6^jxyJ!wD`xU#nVa*1f4OVrb}2u z*u5zS=6wAUSI+MPDJ&{lj|S8%Td?c-hBtV`sZ}(5Yy*4~Qedc3{WSOxNoGuV7zH6; z9@CgsN#Vlw$L|rkwJ_2IAqGqU2ILmVg}eH159%p3SXe1(0^lA%{dMe`);Ju?mcWz% z{G?O}E>z_yQxd}4pH}q@)G68ewHZ$r_|-;-cF8w^123J^TOPT6>r7r%`mm+7`nAdR zgQvb5;-(DOVmslI_bS_}?7GFJHD$Z^ErQv=3$=YZso|B^5v=Fmtv|d@nyzVZ&ii<a zxKA=}%I)=3?}Bm0)${k(4b}mnUPF2rInQolZW_dfdM@cp!Jawed&^SAYcFN=oWw8( z@2jrdC|*i5u{3(xzv<aIDsTv*>&UMs_fi*IRCwyWUS!QZSde4n+NA8Ng@q0j);p!N z^=sMIBu@6v<g(0oG7MWii7IL0QdDf3VpVUZ6eeDyfRL&}$gp@hM54ERk#tv3S0;Y= z7=|G_N<)zmV(~H8!8Wa!H65u>1n<vCjr;LkfIlMh6g~ier~YFh4j?$MKPhq?jV6Gn zip|3Z^l>(zD)ui+NF#z|5Lr;e(}=N8|JJB-DIvJQv55GP7>llNJ+BE*je12guVW&# zmh3ahqq?va$ucSgKy=}v4Ys=s>`H4d>=d2(fRn3~v_hRAvoy(&(K33vTHe6bb-2XG z-A-~Zv~(f49MzyJIqo-KQM6Gr?xT`1g~n=77ojqwKuD-qO<|r^#T!?U>N{H#!|n=d zT5ly#S@dhvZ67$C7zzczJzOlP;~PI9Xepsma4W^VXc>tQcp{K7%sT+O^tpG5y4TmL zA7XaP7arYOd%5>{wn!wm-FkY}<hz*+bbc_+7KMNOotgRBw(11z)GPHn^St$gAC~Dl z!0+jH{m2H{UE*yyIosz2CxZRQ_f=E;7})oF{9sLmahaqbSk7dhqD~9nq+7#1TkCaC z`*%$~ZMDw~KR-&nUSQZ*@$hEfe$M}6&9nB=@wfK&1$GJ1Cz*S{RJi27U#7)39LyMD z?tQYJ3$J2|bDR?z-1+_c+UM1EWZ3=+G9<a6?|beYBvsoJ`noSHF{cGL!nN+r^G_xF zubDjb>cv&g7Tb^4nH7B&S}3Z~*^Z^nfqwuZJ~ZY*WSKq7oT#6g?p=QXf+f^y>ZxAv z(1KaAW{15m)vN_e4Sp0pPd_i2KN#VWW&hY2QeUY`U#wF)KIkFj*c|7d%;~3L078%= zQCNH81nLA|Nw_3Y6uEh!fk88Ni;TF5G|=2!DTN`0icc%?g#idHB!CaW7?Y_2#`y3- zXaY_ZkYT*Om|UT<^_bW)NG%aphqEkP9TyRp@6A8s4wm|#Ka3VXRD%`tFI!s&SE}4W z$QwIwDiJZ!^7YW#p97)NcLWl_A*__T{R&BjBp?A|*dravjcLr&?2MGsgk<f)<0l^U zWO;B62w{o7L18l>0KP{}AV2_D)Ynlntb>Y`0hx+{Ce&&bGynlCF%nFLAZJG7S-3_; zNm>}-sk}@hNxwxdkZ6VxA5;6RLXpg>m7!z?G_Y8%UbudBJP@h*NsXP8@yn9d5obJI zo?i&t<hJv4kCR)pdi&ZBFzx(R!=MApi`Dqw{wFTyTnnWIOd40Ff*qD;j@CiRlv{(< z?#bTqp&b0oYCo*ByB>!KGq5g(EsCoRCbRLsTY9kJ)C%Zh7klS@3rQ9<`&Pxx$kP7t z=vHwOr&!OnT>xi(nnT<i+3XB>5U;y{?e5bPf(i!{@A-;V4~N%|yM1n{4fhM&2G!M@ z$laRy45e0M8kx$nN~>aa93RrJM2eIo9tWf>7feZfCdu24(y@4`<x6#4kJ-N9X(VdM z4Nj>7L%+<Jw}@LqD|DS+YArbL^<U*5$p@G|v34@DfmJ_{Z+k)mOz0lws-kcH62fHd z%sjGir=R8JF7UeA@#hn|bL{oqSED?Oo9t=d1J)+3pG+#tAAK_k33+{>2{~<XVxqPj z0_;2ok+BdU113GoI@+1rXXl0nNSEhZ8{%fDi7GiVe?H_aS&<H|?>n#xxmOh2yz{~) zd-K%%i_X=zv*7QiEi%o|@MPaS1sCCY8DG|S@_t^hL$@w8e7wh31cUdq2o;s7kOso@ zmZjh-Q1S#|KW5|r4-Fi^KnT%W!t;O<WvaDe{U}uqB=j*dl?a3a665I;0Re?tcu1V} z^67IK@-c$+#r}?b+>m~1T$I$H#^8b@IvtnQwuLHcvD)KIH<pO<i~j8vw8pf9yhR-q z9#b(F%NE|OOj(ge;yknc7*l2$KBjVI5>pA9ik^A^AXkcW<#1FtdOMLree-}xFy8o> zGmI%X;>gIsVMx~3?c>HoMsjKK`W`x#V+zfaHH+m^vQ!mRD?yN;@O$)|1SmZ*WS9Z9 z!qCF3dg8*3WiuXQYDolC6`N?u4$UFk8@J+%aY5hqQK5j4&lG0Js4BiQFf835oJDgf z^D*NKlsCtB^w55}FXT%TxNB##x<F^SyyG=wuq^vBi8ESM;68J+Tw3E9Q`Jf*Wc5W= zXn5;t?XmC9*6C}ZpI#o3=b=yS=j`1JBYF+BU%<{;=DZyIYw8QLeN)*5Sq`rAq=7yc zjgx~+o2Q5SAGSAV%zw&sUgxC;mWn92J3LymHfes_&BPSlc6<Um5gzCd%$U#t&}=#d z({!I&GkUH2JvqAdQR(A*Xl;y`<Buee11i>Pu_4~1L4-0W`S<POmWspua;1+q^9`wX z-_C|p`?~vjynI)L+Zx?dxDq~3k5B57PjnKGzIXzwV6JKnsP6CJ`^u1<@vzimyY|=P zFF{SewXMA=O0PcrK2X$;NR)oa@+PM7eTW8EQtgJUo9WXbSdz781jC-jS8rJUvBtuI zs#=`is>!+I5=%f?ZBuRCv-#(Fg7=NjG=;{SN7pPuXm*~})7nImgetHZs*&r#U~QKs zm3A<5(i%AUwjC1*Q8nv#sAtY68Ta0&VarO6?^;uR<A0CHDyYfD$`&G?lF7&mFMi3E z^$}f@ut}~79SVC0Wq-L~@SW+FY{$Ln{k7HJ^{wq$38ANw1-fsmjgLaonlYTPX;qR& zt@uhhcs5jV0qX6Fd>PG)Ei%Js+(H5UoTI27sOn4cr6}JShfMzyyg|qe(!jsbo&i<p zY5?M6gr|b|$2AJ=iNFxjTHF-x-$t%g1PuVG-huBif?@coO6Uyk)Ko5VDkA-Zu7js; znJUAn9IPYc%-A8(5PUTxPbr4GE-ddRre;cOC2lxOtuVdS&1zyIx?QOb(a<5%?62bf zUfNPl>XF@>2(=7m;f2db4r%c-I$7_;YS`aIUOuGUpY~o*J9lc~51oCkI!GLQtwW_` z~naz#{9;=?neqVNQU@Abz<&9gq?U_M4zI3(E&ykBd@b_i|}!B&Zi^YuzZk(e|6 z2OsolqaQ7UCb%9ElD?z0r4iLPa0MYmnJ`cNT&DmGn)9M0Q3O~p8J>X|H%e4%N-Og; zosc-q_^ioUaoi8<rCYqOA9nfqXF%Fvg^lhpPm7zZXEJq@=~Mnt(QB*C&6eFpp2;^q zE%UUe_e>gD3W_ayPx`MDFY>B{Q@)63!B-Tke)qG#SJgie6765BD)hs9cSGG=b$>;j z(@dj!1JC8qpyJ-6-p#5%fVZPd(n0K{+00x*<s|tcvRGNr0t#@C4eNWd8GrSCsA^?k zVwBU#%O@g$w#ui5u9f}QT)|6M*)i|Lk?N1+9X;QwYhP)X%IPJo-iZ{}as2t*12o7G zMI%X?#k2K9r3*!PHT!}PQk-9{Z(3@~T&_*=`0$z5-3}h@tc4otc`;Lwuqs<0Xq0kz zBi%WK!YjYH&D2`{y_=JKLjAE|LY24ZOL|}F<+B#^d_f_ec%EFQ2#(<T?N3PwQ)CDA zjz%I9qmR6tJ}+AiOGH>kJ2s(Y5DIUe8Gh8u9pcIy*q?U%B|1L1!Jct+NGCVGL%(oy z7W&*HQg}W#&*<cgBzVZL)%K$tZ_RRT55#v~Y;E+D;eoRycld{;P?#O5hq)}FPRX~U zPt6jq(^iDM$3yQlj;b@i)k^I0_{}7uoX(4nr?;$yv2ms|p!C&07l7Li#0$fv%8HC1 znCK70B41_@(VCN5L=hIL3K#>@suHHe`7?;XP<uy)!(zBT2Qn46=s^+alM(ZCq~q!T zQ!p=rYVrSF=NJ>g({zy^@e;IRkyH9uN|UDsM55G>xVi!!X~n6KN8#q3uP~Hyg_&_x zUnlqBB6h_-CC->vD_=D(Oc1q#zN-pjbnmVUW<R(dzAz4t6!TsVp=aYNtM+qJb@6|k z_~Eyo4UDa4Z`NJ*F?7KGXdV#1M16S`TyfI)*|CC7TQuW=1(8#Cs4!z?oyV^KVG!m{ z{1JM;+AOmmkcrpZamwn8kJU^IIz3T^P=!_i%OVBNLP0(GxSz?ijYp+N|D;8>C6sp( zuVC`bi`tW7qU?Gz&nz0uRCz3;Hm#j&IZA~9#Q6F;<Iv1X>=d<B9YTXscuFv~?sqN| zb&mKGe9>r9UbL<FeQk_Isgj-4v=f0kM6nmuFVqL{unMPp=WthuLTcHZdTQl)#W8*% z5Zxi`^x4FXZ$U%qZ7q6aA;8o9l0B=-B2XB1Da^rOEmJy!%H{GOfx0vo+34)<1kUVI zEi5Kw-_rA8_E;aQ%_Y0{RTI5+^0}(zqVmxH{awjEPOdW{KkFYv4`drG`gfw;LfrQC zNK<&{EEG#ZE97;b=ZFP@RvT*15@R3J_i%~-+8HFxxP5f*(~nt-$Ga5j)ne(N+U6y0 zQu^JE#PudVeIbt41m`DS{em9Mp18NYQm|?E5zko~^~-KMI;>@laPbn{pod3RC|S5V zQUvv|wKd5bT$<GXY!@+c|9ZI4WFJwt*RvHZnEmmyN3y$L0j!xzYGl?#c6hpOi}w6i zfz0Uh56^Td*p4q7kKYG14L+YC`~#>mNbfx*;pABUs8+MQAY1%I=bm3jp~#c^&BbEN z_SUdl%V~B;o<ohKIZsMz7N@g4>eoLHQ%k>k&8drbZ54E8`6<h7P&{k?)%dH?-<%CX z4IbaK18I~g-5wZ<z8}}-w7U4__t41tT&|46;@jONlLms{#8!&Ez9g)CVOD*OIp4e3 zay<le>jg+%w$IlnM}SQU4QAY{FDW2wlN+?ztQHfF>-wqt><m+)qO;d^K@06xR<9!M zMmw6+PU&)$)=DS`R*DpF)x#eJ7fROy?o}EaAZ9Scn5X(u#148r_8fdvfTPSVP>zuy z7QY8fS8Vtc#gBoICZ>*|A59q)v!;?k2>*r}FjNB{WT1q?O`ZPnv|&;tU+LeuJ!LAl zGUhEl2#e8ROQ59`fOH}FqcFx@2!sF>0mmT6xQKw9Tp0L46tW0|(6V9sWIf3Nv`OHy zyDA7E<nriG{5iKUX~9*Jm><6T`C%*>{Gw7P_e@WaU1nERU6jmnraWR?T8^h<`~8Cj zm7}G+2gNo&7$F7(7IzG8o>MCfHY|ka<cBX+jDKc%?uO)|-C76;NZ3bM>N4sW+hd~D zV(}E=Q+#A8v@Ds-SNVi*og*Yk8uA8q8wTe|!+qY#Nyi*puIi<`)e@Kme>Nzza`&fU zT5!R_b-kuAig8B#Ia7(QjxyGP7HN4eeSoeKItDdDZ`~C6nl)yK$4v|q5|#vGNzlZ$ zw#6xx{2bG%3vrmlb%%SjhSg%pq?lFgl&WLzq}Y}K(U-N1&{+p3bWfm=I2(_d@Y`pz zx+;=BQX5ZreV@d5(SE&GeB|=s`XYkDDCvpri^iV(kb=&(CUJ$2^}HDwnSTJ5pQ3&b zgMPl1nQp#33b#A)iMXGnw^2z#TDeGKFYLA?msQ7pHpg&wUQPeobZ%nD<8^2Gc!V&l zgZz?enR<2I*Cc)5WGadIwXPC8Ob@*Q@V@G+8>=4wC3BGXLxRpO`1;;#NwBArwT;-K z%(LbXTd|j7^KuO9D9c>S(G0HueBC-Bd3yh`>PX3}J~rW+4~`zNotirOaQBk9XAZT+ zo80x?u<TsQmJ+nu*J^O*vQ_J4pu&hF-OkC$ng7cbYvP)Rf^TdeIj0pn<}69sT7^gs zd+EH}tFAinrTlb5(B&&;I+449USXuzd8PXmMgDB;3g+Ye<;|Y&SL<@xYdX6#zfRil z#aXk5lJ>k!(9p_P5@vH&id!~!J00kYwX?Is<#h*7G%MB{!)KjX*|hU*;{*GApmg6M zejm2>qBt_7SQTv&Ye#E~hL<EbX*QYyIwI-Ggnj8e;wn-K_Xe62j$TY{tM|S4>@aNj zG%EjPyY9W&XoQPoP|lAk(R?=(4c>+(yqm|;O{SA>78|PfTFQ_+ezxx??1roEZC^49 z5_AOb1mL#~dF5F;M(k}lb;~-3a>x6aiFMC><Z>?2lsY?Chu(`O?&w&}4S7uetbFQQ zk#98p6(8sNIe!!!3Zn#f`94xnr4*IYr^c&cwZcmW`k7?lW9_B*N{HY+fMRbh>Qb89 z#-du15VAvkiBw`F1P7!*$n?><kW?;0+(ZzlNisLLa$sm+GB!09e8sQgiigexnF9I# zB7$hPDGD?O0Z)~~VM@+_@xZ^q68>F9;Pwk_EV2u}3&&7dXOL6M;UVW-9=<oYOD~*c zC>thikty0FvLX6PPQK9Ms{<s28Oh6g_ceI^&}bwlVYf5<l_7q3Xvrd%X=UI+4eQ$; z;C>5{owIjo-$JUa6YEXoBj|ECgdPUt%<Yo>84ByJ@3jBmej#&g6zO|Z@u}dT(dRy9 zp}x)uwKCL;Kj!u-T%gJQ3zl+)iOjVI4el}HA|uhrlAgu|tYHU}H%^>Xv*;#mL+R!3 zm6E1}evDo!UFke-hS7r@7zD}2ZPA)o6*Y`SX7U*^dds~W4oc)88b3RzpHt-g6ev&p z+PB~!{CA&q98J&DXhtjNiG7CAPs7vIZBd=T^J=%th?jbk#pj(mYri@~8Xe*f&L-Mr z9ty7%*z8T$-Lrl^)fU$0VUhK<{bkeL+9|i<5a!b`Z5@S{@-KciZ02p(=dw+2d78X? zm#;`|9?u-e=y;`3DdG(=fo8vPA5BHydLOB{7!e|w75*@9R=ec=bYP@YYm>aiD$Ij0 zZ<B)S*rTEfW}o6s?uVSO@}dyVi=8!(ubT7CJ}SuN-Kq(9X!zVa*dVtcC!5+{SohBP z0L8Rdn=q}qBpdeG_Br)uOZ?cid(-3898Cbz7pre&*lA8*q0C0iujV;Bj()GBP8+5# z4(popG|h)&#$G3ecu?$|MKVn;j{A=f`uh$t9-YqZggcJ%^bRWsaC%I4Ub^o|CA-R1 zu8hEbFJ31GIq#p&K2FVQ9|`Nn@9s0)O$AUZpj$%pY6IE>_l8rxbmsbMdU*LjDjV8s zQl5!teLa83mcpv&W?6l^GElIX{Gpg%{4tNU)!I>&dDwn_a;(q{fN>|whZDXvIZ;~4 z)sXRk$4V?+^xL!g$ZFE@+`_bCT{65W_O}jF`wf;`hi^6?zQvxm?OCrCCjUTyoKf}| zjnWOR+jJ<`!nlptR7fL07X7LeWlKKmk6_h@jfoLk;MKz=RX;-j{%SS$_FM)`{m!M3 zDY)behH*e&0EeYN!%zd^k^(ry>J1V?ij2I9C5_l)bc`*;A?tJ6z`vk@+`rH)?tkrV zq~4*0V-gU`yzn$4{qOM20Ob-gRS>$!K$Mn}143p<OHN^fEhV4OR8z5#fp0D$_o5cp z{1pQiW?#fKx-KPJ4s}}&d)ll4$tD*}y%w{?f*y}POXt5ch8*{8SuYFat!sdBw3;Gj z=*vrL?QQZc)(5pj5IzI)y*Hk`wmL2R7Rj19R#xh$b-M~ulVhK6hZS+<cC7sf_V->N zo=dqf*aZ>0zmG4`21r>XA2!Uy)GXObx(g&eg=LaVRvqARDA0fcZ+UEBd8tsYl(z|a z4bU16f{$p&V8Nw^lA&R-ha9=<+QzJLwbeD03%_Pts(DYzv`&91&;NSH+W154>L**Z zUd&~PW9KcuJ<a{71+^}|70WRXc;`!<*EM}zW0vn)s{K|%4O563xiy&@PSx<4cAuAo zNUyZI(KFI4+>P%TM{kEV40U`UDr)Ua=~lU{`^+r39pb_iGd{J7{uMNKz4Oyl?^*rX z@1nkdRf+n5`$F>3v$P4V@y@SBvo1)?<_UMSt1Na<;4@dr((Q=+&e+kQ(X+4BcaQfy zjyQU(7YDgVWXGh(R$N&=7lkeM+{h%SFwvzpEpJz4iRO~blcp^ZFKTT<8zo`SvwI{2 z-v`D{sxF$s-Wo4)Rvf{qJ!*xyFVjK|=_S9CaaScCvHvu5CcCRpUe(TWq(5L+;E>pf zf?wwfWqtbq$Mba8`<8XaQw<9&JgD?_oO@?A49Ey|k6SXcx$}Y+?(cc4TydfUVra!} z-1MOb*|3?B?&tKZGks#eLP|LK-91VHP2jZk%Z1c!@y6617V*YLQIiq(af`m~bafdU z-CL$cp{;thru^|zqa`juJZk+lJ2U1A8Zp2}o4l!6PYq+4ruZ!j-VGI?`CqfEHJx3u zW@D{}+V)sm2w&!qf*#3wP=2OT1^Z)x2T@5(s)pF+#A0;(1649UG%e^B2tz2Pt)vO! zk0M9__F+-C+_3gsqyc+TglaX9Ax4x@EQJta6u~`0MnIuv)Ln!jJWUe>?`KM2s2Ia7 z$qd{Cv>tJT;AzwXIE0M{7i<KmK^sUPcvGP(2a9vOCU~5(pAEGp0QDz?1}KliGl|4$ zDTVo?ngo~=2?>cg9>I+nDG6Ed$oZ!U8pLH#8b=mtF@@FvI{DAr?7gKvbe-+BhNz3s z3g#zNVKkwQkLX~75t(y$>pe5%>YZw;)dM-+f>h}>%|BWuDsNH<R~k3+)8@_GrHjFS zGPkI2@KDyMG}Q@sJd=?|$ay!8Ptuy<(Q@yu!bHs5=*`-yI!elMQ`QSZp23C=UzbWL z%jwLWUP6*!m7(}zl@Do2LGtKQLlQ$7Bcik<zqRVb4D_6lL->Q2mZ{;?uDP1sq5`*5 zV=OWYGIe%JGfP)p2U?zu_vAc!Vi@?_V=x##*=l#ol<BIvJF;0}|8w2O%=g(JC%>Oh z{9>OyojD0R+`F%%(DUGdh_hU4;puWX`90Rk2+OvD$%T#Fhv)fC=nHWFFTu&*ufp9j zcSl_;0<T(w_Q}2r2gP9N^Svy!7bC0#wikku$a`(zBVNy^o}cxGP`vkEomqX@cpNyH zZ+XFyk~UzCH|p=+>{QGZHHOHmA7SfrZH<s${PoPG{+B}aAHa)+&0oX9^6`uw@5GYA z(6=+QulCKxmi3DKWsy2RtGL3lkDHyed4H<!mVEI!C0DMIkoXXibtEGpK$^`yEjoL< zn*7bk8mHTSe`sXDC%qQe>?E<*cTIVPB`89u8s2-?M^vh=@F>C44aylw)7cbT{s4k* zUl{w%EQcC5wZDwpx(;+?^vY>y@#ik7O=PgxAtYjZ!!;R`_fb$s;Y&xW*1AKYu*mi& zP01j`NTX+GDdFS`vPC{$=_Tejr0`un=W}n02ye9@GoP7A9mXn*1SrEp$mD<7x;`ig zEa-E&SqiiWdqkSeuoURI#6)$V_K79W=wXcU^zg2kS?RImJZoz1NJE`n)yXdBAX%#h zIT`z9I=i4?;U%A>gm{;b=j$hZ`K?W{7c*H~gcXH$${rR>0b#G0O~a&?N_*SqvR?)D z$%hZ+(P>aLItjlF3-~0j>M`qdH>VNHC`$NrDGIqXMJ2BT(VxVEaNFKGTHhaV$e^fe z0I@`G5m*H}{S;bcW*rfeP(nXn=>-qi2ac(a8X<v_7?Ej#*GeJW?fRe$?!Ox_SRfi- zg*1n(N0b)waVr7MD2}gU1R+xu#X*7G5KNU48kx#PEfAZ^?M;n`5xxyJpy5#Fiq|B~ zM^LEhV{qPye#AwN>^eY>2|zUn@s&0x6==z+#Gzw>DxZB!33T)xr%+<l2tc4sbQAdu zs<6|3H|Nz%o{>YlmRq!)i-)V08K>Qfh6jTBx&FQSMSIoWRLlOjcln|Vol4Dgun*$K zEtPJ|DFw9kNmupjb&xW_an6*|mipXdVXm~bEJnm@7AwKtOs0xui+l;L#v-x!gS&L1 z)8$z++fgoB$MqEs5ot3S*3{E;u<vZ#Ca{M|YzK%+Tk0pzpZ{`wq_nr^48rdQVpFsd zkD2)}ToIua3)s;B!~mM==DEFNQOzC6v?C}}7~E_%q@v+xxy6@!-r<9brXOL!v6Itd z5?_xVm$32zfV`)55#`r`KfZWuE!I~re5vf72#5MgENRoS1gnj2Kf5moxB3H^@@W6T z{4(^*eEck3OYxCqjTBSh#H?X}ji;vN%uHp$;YHs|aoLU!n44^cphcVM_WJxFXZi2f z()8Wq_}?r|)mGyjuNptB^elWHmV1I3YJ7Hnr2nv!Ws%}wo}S3kd9VAO%*Z!r5COFe z*_q&Zq~31ZtB!Wzfc;;YXYB<%Z4DzshiVpX+L)7~f|*$^g^{%Qw$0QjdircX<~`lP z{oxfiiRH2gddEwTw?(gA-j6JHGuvf6O|T!1HBRe@(r5p~9hvK&Eo}K9&_`i;{`yea z@%OtK>Aqw8!;PT*Ds(JhlH1vijG&G+Tq$q=*^u?ic=AyZub7C+9}I_<RT1)*jdcBc zuk@sw3qxWhJZzromcQ|<@-!FrSj*}ixv!Y2v3JZgUfu^=IqGK*X{SnVw`*8rJr-=} ze!k0kEc}B)Vh&hb=pClkLFQx4>u3{zM>oST3C=s&&ywhPko0n5basom-*Tbhl^wI? zPGH?zk;l1=A#Tm$)eXn=R0lS9Eba5gb!i$O-%{%zR&Um3+H5j)caMlGk&-@1U+ykY z4g57|v1Ag2x;ejO4?S<9M$#(RxgiL4(gi40c3!lgh$(YOP$*@cF_nXK6MacOf(%uG zj4nT{Es0HH)b~k5my>j{Dqlhkioc5+RAdQK6nF%Ln48@KWfqRZx$wb0gbXM?rc6SD zI8YIM3WsMHfGH`7AO@NsG=HiTq{{)M&qW03hHCI^(7lU;BlQJnLHKawI7JV544o6F zKXCg1ql}<XA^wYv-~f^6TeuY$-n7yz`W67o%2>ugg%8KD@ihzI<9iCqhsxza1M9cV zguD9snEPqDJ)sedj>&_1u?LVZ2oNuE@D&Hm%Ec>r14S<1={7-CU(TJKPGv)V*EtP_ zHG6Bx3eUqc8KHur*l5Y|Fv;eSixmE&yc6JBi`hWtaGBT`YoPgi2m2@SYHcqtXI5?2 zchmdaL*wlAxG^3-r%DG(%HP2^&aA;f7uZ1!sSi;|i>mk32`m>hvmZnql$?KwA6uqm z3-Awf3&>$su%nTNHB<0iT7hEU{`8N$Ru30HPO9HCTl_5%y?$hVr=jzcb#SCjXV`R= z<9UgQXELq3#~#B3oa9=aXT|jJDq?iWO$>6pe9aZ0dv9mRtF7G~20w6b_F~Q~BAr^Q zzPHfwrDn>Aa;N>-+D=~mr?+)Nj$izk8f;=lEV>t&mntjH7ME5n#YR)skKL?Ehj$g( zbKgEp5Lx)e>C#v!^dxdMXZxV?`6mlSRQ$q)*FKCsU1LAN|4d;*iDf4G<UV~9*+^1j zeIrkvljgSXOL33TGSWBR%c11!LR-cSJ5`Yc6tWn0|KBj@b{5N>2bX?ZlfCt@u#aC! z!_F=#VtAjD@B9ou5>K5Q6^6NWz<#sGh4PFFFEmBwNEehO^yuUq=8qzlvs5Ee(uS!m z@}5pSwIO#Y4=Qplvh=M|x)6-PjjAhw2!$G%DL=E_&_dUcCj#e&#jQs?BzFm<N>lEH zU)iTgebm!w9M5?<VOdBEjhhH`Y#wYQ`8qq_F;|l~8#Mg+H=1Fs>^rlBwfen6DdeIo zUdY32`W!2dZ}u%7J+p;<%jT*|dn*&{kRhq^dB(48lh{Yu<gk<q`mwz9kBeFHU#en} z51kFA+J3GEvxUf~j>!)Rt_9jOhu*#7QYyi1NgB{f@TpSa_&X3NfELZ4gpZ(V$8dO0 z+mgXiDIdTDST@uxAkYWiQx-)|a$6FQtj7w8o`{VTLU_6kn=4tMqhdiNq^ep-K$Jcg zF^<5)2!^tblqqqbgv9xA6erAI7lLOHK`_w{byCE)0EN&gVx)drI+lN2E8(*bJVpRH z$QPx7Lofb9iQtqmg}?sQg`lOSP(u1BgWU`=im)|S`Z5rZ<+xc{QQQbev8uQ5?}9dG zf^r*v!`?oEiA-i%1J94kBYtQM@R!z1OX*a|1Al!rR=PKW9m!wJs><Vw_pGd`&JK_g z%2nlBFTX*gX3-XdVU5+h_QQ5@%(!sv<6+gzS=lt8#BWM)*v_VVhk5%^GSk!@<Gaa% zu18NZFs!NRN0ip}wcOLZ4gt}dkH{l4oaufVcqMT>tCCBJ##H>+={iW!H1fzM{gFS; z&xH~WEWf9YnC*Goh^1%Rd!H4(gN_?kbRz%^&A*s%jC@J|^dLgPQ}63+q+z7Y!}fj2 z!VCY01G`Q~)d6m3Qip)e<K)f<+0N~<djms0RO3F24iCn5j_L2#Q`bD6AXq4~7&1q> zX@{MO`MbZm8NWF8VA;*;<78I~SR4MlLI34GjtBND?6*_zO~G&XKLCOA;pvp=f}UOW z{jn8o(v+qIIkkRm5<ww7Hj`_YZQ6&9Lv1vU<X$9n;zPf)CsA&_^<RfpB1_k#gzUSU zhck{XZk*ryyM6AnPWl5dekX0~dcCCV6!~#PDenB1iP65rbU^{vo#$C*p0jP;J13Et z<t>KEurMxN=WSM&5A^GHgxD`EZbM&B(iv^jp9sfatjN^3`uZokz*5!<%6l=x{t8b+ zg-=;$?I_)>-N+hrd1@bjaRE2G%p_Y(XI7n`w7qrSsXk-yUNp70@yboTdUfSx&Ya|O zdQB2ub)UF6x8bvsPqTJdYm$>X_nWm<n*j>hVt-^!{b)#WJ|}B$3OjkZMv_c&^yq#6 zMQPcrYQGJtROeo~sz+r%+H`=1y_F*j)zX2(R9aT{Zo#LHZF*Y2MM9@msYbfgtXyaJ zEb#HApjTB3R?Ty%o()_eOvVvGxdFabUIbQO#EAxtf&kWtqi<D28EBwlNtuv)NCTih zyw9F0%@FBhPNq~JHBgpdn6NaRipQzXjWxan0oNd377{~n=v+S)oEywdiZHV``db{l zok@fXA~X}_@TPL=Y={yXv=J3thy(TR5OM(m5cgsnlv(wG9tcuZVuB4E9rG4*A<lCk zc(hS@m{e(OuX7Wcs8W&RHq=SF6vK>qXW1A@DF+)6%H15B^qBstGMvSWs+&~x%P2cq zGFyqHm4j)=y9R3gm|F@ah<B+rt`<TUOvlF^ddRw}NB1t&R}Jl2Ha|`LCUjN5Mg3v8 zo|q_EwadWZ?eni}^0G+{nJHPvPU3CeMVsYM>s=3rY&^!(rEA_W0jkU&Hb~s^zE374 z_{PaGvw|yHZ>*lj+{VFzk58~=KURy&U1wui4;4Z@OK&5{>|U{$*eo0-U9l@Pt)`;` zLHV!-SWxU2f>{w=or@Ps-%LFI0Cr-|L8e1D!)NERBBy@<BMPteaxWxbyNz*&!B4Tj zA65)rm>V_)!=S<~=r@tn`v##r)zZVR@9co}W-dC%cArV_Ii8FMq?elbjA=%O?{Rv) z6_U;-M}41ouc68?Be|z1Qu(CzSLZL-AHe7z0Pm-pf}b~k0GTB(KJ-01$`v_Go(+;l z(};*u@O1xnSPO36?oB$m=k;Q^v;0zWw$|QT&)?L5-1L&V@t3Z~m$wJX2NM^wAIl4# z<?01x9)0kzJ&+@z3E?W;q3^ob<Y{__oanyk*ciHQ7L78~U4z*&&L2-@SS;vToxv90 z*n9XDH#erLtgT(WVjJg$;+%5NSZnlz#ceU>D7(RHs((?ok|$MWl0&03fN5vy%ujhw zDL>GO)dEKz3-h&#nErBX4;eJGn!h1s4;UsdZ(k_K9+k_t+C6!&_EpS+WGUwKOnjlR z{Z&a_FVSHB)dE<Xe6dor6?K%4>CO&meV>|m<hK*A+zZ{UdzY}anoXnFH^0_^k|nUR z9$I>!csXk_&Txbrzm(SV+P)?AJ*X0_ek&M>PT0(MU(|QxNCRGb1y=c8texCapW>!{ z9eBOvA_M^cIz0%D3s|HTnDeULw`pWbt2E(ItHtWS;>Skw%BrgDnyLc$IQ(4QRB)zD zPn%k%0@8=#!UITOn2#Ppm0>7=EYT-&&A7!n1E(vqK*Gi$<b?S4_>^3vIJg|Qf0ZF- zV4J21hH4SOQMlz29cWCnLd#z{mK@ns=t)S=<ch?*H4Z|*6A++>;C7(3191LE)?<$Y z#ql2rn4n_F6a_6R981W?8Sg_3H;}Mcd>u*w{R1>vHP|zObvh^~01orZJKEECUKrR7 zS64=Vp>C{Lbs<%)n(p>&)n;*_VxF_q8FRF;TW0>WSWdj#P?dK$;4e%O;6ID~q*=5C z9yd$MI)R17-HXEvo6}bEtCm{a=|4CdH4L<v7R1!{HPz8m_<na|!EQqR6bnn}-X$!X zOl9U9lWdJUqF!j#ZY^Xy58}pi7%)jD!@0^!$w}3w9-7;{hFFX2@k&Xo#MVUDV%B!$ zvKB$Q-c{8@=3gIt_D>==+alQCoL~6=w0`h)Dpl^FGtaI3f_humsI<J|7~vDOxn17o zEYM;tGElqCL=}Rs;myWH*|zjDEWG+crfPBrwR7B|ak0>j$lGjQPP_TQItZ>KzpHhw zD*|(iU$iU69_^K6j{3#qliF5OjnQz$vbT>{tR9>`ME?PJ?K`op?%<$^onNLdfjI$J ziA8QC%DJ61^q5aJq4LVcH>4e=78|Xz>|Tp{tu0wA2bT~Sb8vql%w1S)Wb82+eicPR zOK11$W66ylC`%t?&46Ph)~;uHvFFVOA7_Tj1?7O$Gcr<PHXNaNxKh#X#N#;ZQU6lL zq~(H5&Q3$Wh04w{<KvyVWg3>=JcXCo*;`>#`Tlo9OZ)APB$nF;+1+3jSNppy$y;1r zBuR;Rvn_OEU&B_Iw8IzNH3jKCQ--x0YINhje%uJ-F;l%klB`^_YsRJ&im9n@1ZZ+q z=(IEj7#&+`3cVA~BktoN;r9dQ5jhFEWfK7=3%UKj`nJ4(<~gN~zvf=+GuJ-h4LCj} zcvIWuZ!zl_I5oa#<LGIb*Q;^$rrx_L`o=WA-{#(xZ6yaFARwHe#DDPBrxV?owy67@ zcPYh}H{|nM%|`Q>6Z?9Z-_kX&JR%&EOVZfv$xTR;2<fP=K13h&l=4_LG;1->R-=ws zM(}BgdXuCKvW*p)U!qb5p~gh25_u>*Qo|ylIIThij@A$LC)FonDx{aeVyTJXOZrlj zK-Xcw4u;bY;d%=tAS1;{Jg5do5x{%EP<qcojW;NJT(IhM;Bx>e+PZ=cum;$tdxd`) zp*<kxLTCkHU8d5861M<ENfpV7Lljd5pjLm`ajJ?@(eP<IDM2PGJRpwSK(LpfL6aB7 zuZl=CAf=@itCyTt<Sd*u(khRxB8Y!q={%EEOqAyg9xPMEWI8fGZC=WqEV9VVs7}}P z|51!?Sm0Z#DJ>~yR-Lv?kv8{mWH-vb$BRf4*moIg^rhEc&U(eh$la9k7EY!$^P-$t z?wXgXzUZw!U%Tw5bTwU;WkV}ews@2V3A0T(N9+rs?WU^BX;qaC;#>e6>!8XUiZxE? zLQm4lo4KqdSA3$;AV@MKW3kK|oMC-V|D@+Ma;cH6;I%@1#Qox-A9BAIBV)8So{-{^ z8{f`k`(?V;)E?3JL+Z)f7ccr61F|e}+bO82*#qtf);s4jkM)j1jvCv`14qaTX=zKN zfLEpurp}P9EfIVaSy4v&Mgy;e19w7KwPsys-cjjD31;yuZ~6DiJ0Mf@jC>#lA*);| zZp_VPf(@^#AM~+ahn|Oya6&#gk<vu}2GEP9n-Ao@(4uGe96Y{hlX(8jja_7JYviIu zThKDlP()31A^a|9(T&Ux)1pr!74~QB*!Nj0pI3{U!w4IKS#stRzTWB8BZr=JHk&sv zjXYGigfw2VHomU;{I$Ka*TziG@5w3nO-BD-vWm>0N!_eY^f=`7^mEYswYFyEd<1v< za@>;1n<h~lys*TwzQ$@a^NNJ-yMM|dOI1YXbVh9-4eV`0b3<aCR~H-G>4)Nw7u%lS zfgwTLy$$UwR!@w}m*yVBe8$Xo7+IGt&YCPg@dvaf{ais-D)8%Fy~Up1yxQJwlwb%A zY2v|NN;~e54#$+U9~|9ob`HuN4r8!5HPhspjxIlNbL(lS;-wSoJrJ>wX|9SQj4gau z=SFhXc${ik-5xlYViJAx4VeC#g(qx{oO<ZO4L)ho?@T5MfmuG2TClW<G^~BbJJ9c5 z1zzRzW3cA(gb3d*Y^e$$EGv_%tXcmy7xHd)s4?}<Cn1N^4z;XSWnJE@s3qZ+lcx&x zj>OHOyiS~FrDev9^3x7fO&A~(5;lWDs^ZRZFfpOiv`UK%NIa%MI3g1gYEJ~nAVnr% zv93^hJYZjsBhn8+)r=)vn)14R8z9?)!3WdgoC^%4X+d(N|7AgGF_cA3@gv<5Eux}~ z1x)JerV+eS0R1??G<X_}Wr6Y>M`aR$RNnFWn=wJPa6Cbk{yNpq2H<$Ky)7ma>WaDD zGKDsYRWtw<;m({8F--$x+l}>6u{1sUt_ZDKMXh5~6=p6!!I^dg{<(+T7CM@O26O_p zPW3LLf*~W_Z_46ubk<6`R1o3I6=7$H0_4o9LYahA*LhAbcED_XLtPj}a-rvMcuPjL z%&<3~D{a@P$lA9j@t0EXff0Y4Ik&J>Rg!cg2fgeAtavyLG$IMAd+<Rh6b0iL(wRW@ zx*n3cNczq&nn8hT-z}9bml(LiZsI9dL(o_3Hj{(VdYiA8v!`y<=C*$_5xDT8By<!M z^)LsWFs>KH-)YM2V&hhVXeu?BowZO|9J0;_K*j2d`+E;imjS{hu6!~i@+S3uje1V! zjGUD$d*wK^dg9!F!F+mD+i(ApKw2iIauQ#?J;KY-sd)DXJw-ro+v)clxL<s1x+2+1 z#%jR#@8K)DU%VZ}vPQqZZI9-SDQCMfQ~YgXZ0YA}ZLJ2&4IpV(>$>Q_=D3Sv_v`Cr z6(X&TXN0O5PYxx6f4=pZm#PjKGW%UMKh9=y5;xiK5awUDuheKcJ-lA<B8EAGYFQnk z+p7h8O0T@H$><){{M;*Q*0AZa>ZZFXa%{=mW=@Hb>oQQ>O5F#-0Xl&{l^u3-UL%_C zGycT7*@2x<_<6_5;P;#G#QV#iS?YoWo_B|y7;nu!ut{4v%C`2}*GcPXlT7%U(+u?v z>b9n&<^JTS^<_GOj9269iH+Zj#9~HfUca^G=nb>N+^+XWl|+fFpSHQ*_5`HuE|e+e zBxZ?Q^tku>PPmkE|9swfa<{UNnI^C|6c_@ltK=S@A+q-&Cq1AbHeKRBu}p3hdGvm8 zVM$yw<ZkB+p0p(uhv=wi>xVMy;FT)FW`^tDT}82q_j&g*_wd*XtJUd7EM0^04qHs` z;C8-&24E#5rG{GC7;Y7Wff(I!K?C6XT8|a=qtM7MNnB_tv?tXUCxAc8$Ks_TNLG*u z#26CS+9>W8KH#vv+D@@K&=XSx(+9^<5)tD_g+S;uSRX@+BNpZ*P!quSV5Q)w3dLF@ zG>4J^Enp2oH3qfPrvwP5!l9vmx4dvJM*v6QXhylTAlvj!V-u1T5UiLCD~>zDqLe^X zc@Wi`q_5E>hh`lv!~zzTFbJZkCD$BMv%54vVD)=Zm`tMcM#LANJYNClsN&n1KWH=P zF`GxGe1TJ}G#uxc^7?sC2~)E<H>ChmzIXjh6TyeZUAk-@bk2F4Js+Uc@fr95$&hD! zg3W_cZ$zG834f_W1KVN@Q7|Ixdzx-$^rE0a6d|@^;T@No)H32uGpi)FneypPW3n?X z!1uyAw0blmEL?|o0k@RVoc(5T;C^@(ltxGNi+@hJI7E^>)vY^>ufw$Z`>2BB%*Oou z$<}3?C)XYycb-Pi6JFPd8=4=cPb0!To_n^2Jg8cXc3$bQ?)zF5jF7>LF<c8E8$-=5 zcN!NIhtA3e_sVnZQmKbpyn5TOwOhsQzj#mBj-x+vgC(TNFK=e4elw~}g#51M&kn(Z zo8}SDUBCIWuy{c>UxSth$ja6pyE+#?MQ1LsV4m{wp+oSqdch-~A@#wn<K@21vx_Zt zF9$a;0Wvw7r}5C^NlnXkd{1RTW)e@+`$p7^dR=x7r+Wab9BVP&J-JlECiN}e{7639 z8MZew>_EA3kCKf=+k9O~PRL_^R^!|6`Q+NWgF)0+zEp!i7w)d7-D?)wSm15%ne$Li z)7pZY!wN&i+o**=O<>$<^PA@n-dBoe%cr_PHpu9l0yi2!I|qbIGdeeJZoZZx7&lhS z?YkChn)d+C^s-gV2YZkDm4)SjX~>hzEJpeT*{^9fBIQ!xzD(0%-SIxx9p9ivhVU7m zcl2tP8uNtS?kQheUg;TSgL@XvtXbT0JD-L90T}V@Qdr0kEJ>kXBIg&JX&?9Ur}l6^ z#`B$$$5gGlPC53zWF3{SP>}%)T^J)XfSp51HR5!Q{4Y{RP9MCd7)(jQoiC@_TL`e` z)=D)#BIk%rQAd8MIS*%%2M(hX4e~e`CKB)=Q?%%K<!(&rhJp4<lryCmgpd=SfhUdQ zq5lgJcaLH@fU+4I>jL=<0CJdEI1XkvR#G+b#;c<R$f9fwn#<w_#FzE^t)?M(P+~rO z@c7@g7g|^cA#S-Bul+olQJ5RQM9VuNU98ghRt>;Mk#YP12oHi^G!9Oor9cp3nQ-_y zZuW_QYY-BbGTd=8evncjU-aS>L1U@X70Lr7nBoBf6;(d6p~@B!D#a$a)1FlzurUHb z_;lUa8|fFy1F9wiakJ=tbH(Ik&I9X9fbppT2<v+L403PFL22O{f>xt*Yzjk>i)WHw zEi|2&DJ~xZb0KHz79USp6LqOss#qgWh17c|9s`W9!|2*&ET1e?bWNX`%sAma<3U4@ zxmyedR8g>YD20GXe;c|`rXkr%jep<4by%`5UgKCAkun^wIi}aEuEtzW9yk4s!ut#t ziq5NCIu<t9eyl#&XwlA^F?jhyot~zA!2JdIjdStK$w3_{fI+bTMc^!R<YX0F{wI;` z>**iPNleVA@lgOaJ1t4F&d}>0-yC-?!vZ$DyRG9zKgvo?L8iN9J}n+vc}co`EKVn2 zyjwx;U9<zXI^v%x3psbQk^9iuYb66+jP7gTWM%nE=%E~3R*Lh2+2ZHN3~x}sC)V?B zf(%+ZMhzmWjaqlY=tT<OZRyXRNa}~lJhXdu&+|xI?<Atf{}Y*GV}^+HQXTR;ieEiB zd^PsfmV0c7u=`Q0lP}TMfRVRgvlT8N-Tl(2@=3;xlZh2#N_A6z1sC23II{`gXzh(r znR~L<`0QpkX1!nPFcDoP7TTFj1OHlICl!Wj^3+9zv`WyKaz1~hr*=np`<Zmit`l!M zi{Pb(T*c9{1w$gq4|x%=<^Et&OJm0)&%ziz3Aa}NW&erqKJ(gb3*$>)&+K0R(wdS_ z<v@-&SgM^^;Fwf?O>-h8uaxmbUd^dl`tJPXkn_}>D14JV1KYBR&G5>tCwF0{19wi; zGoIkvvVhLf>utZ(>DAeaQ-5==wYW%lZ`bdw1au$U+HDCZf7zGxc43uGD=!;!Z<mOd z4cWFj2qkt06uyn4`|16Ww_X(Ua>2Fm@dBm^2pOkb3cx0~@-T@JMd7y_0WpQtsN}NL zX}ID7510oBgp*X>)fa;(GUsUl=CH*sO3C<?sbZ}9WVB>GPQ)OA9FVy&o~LUPRWqhp z&7uTh|MyfLKAHgiNc@ouq)V}mKk9&ly|DEUp!NRYA3*v3uhETFdn2&17MEiE6hbyI zF%@qb-aQRsf_m#yPUD;lAEB*jXjBSmimn2!<vhrQd`OcjF)^&iZ~?7u54u($V_aIw zUyS)HbF1Kp8wX_{&<Uc>l;m&9Q@6$t_{w$D92BV*AS0qwIgC*q>o|?tu6uNM=>7$| z4kk1&Tb#lo%_it)RqN)^kY?Fuj!$pNWd~(pFUJSvx)gc#GW;qx^moj2cEK2a0FYJJ zI~Y+j4ZyT+`}Iy6j+4C7McJ!tBKjeC6QKe^lK%%wLA1UQ+MO!3gh&YuuSHq0G%b9N zqeWGW*y!<im`en+d8^aFuDVA(wr|*A;F{n1i{AToG2q*JR0YMSR}<l-J*&a)^JDVI zv(@AH*FA8?vhwoY9#dT3+%$r9EMsWm8~9saseV`LTg`UO?IZ7clG%Rs+|yfYgv7u> zbK%H&fiwj0ar-K~TJ3*o?TqK-^<qv*)FSFvuz+|o@UzMLH~Lq^-+PzP!~hjK{bh2t z(j(<ZQAb^M6YlO~jE2bWC+-tg{Y7h!Ydah19B*^oG`)^3;^xZ7nrvwBSL!~SzGLG1 znqlsk{DqB$v{zU2wix6Av6ELh?juIAjRntlum$({-zR?S*7;nM<PNjKUcHVrYpz`l zsc`WOk=)z;pto3US>@&qWH~Hl<~+#Y(JO;4A*twOfWDtdS)+mZuZw)SD=U^XnO}`D zkkh$};=79NTCO~=PYca0uon^%_O{|5P3(|M9Bwg^(j02tI)(H1=9=v#z25COZHwK* zGceu5mz&j{;@)r7z7lxbhRoJFIOy@`bdS-XQ`)=su3rT%^s{`O%Xe{a6Q294dwhV2 zt>n@sfvz9`0p!<oqSo@~DJo9OW3T@JtYTkBHuoPVrYJ+hqctB!yDjm#ZjR>H7kd0I zOD^U{8;Nm;)On60b86t;4<Hk$UEHcHzj@<s8zv*S?c%qwgc%(?!LhQ8-OO!8HQ2n> zZOXVSs~H_&FJW_E8)Yz-upi4L2eqV~{HD4nPm;7R^sX&taq~6QckJJy-yO!$jizII zK!59BLcFmN(M16Y2;LTI%8f-aZ&Wa9A%Lg^pcAqIDL@qjXH@{wiIoskB{CS05Hf&( zK#Cwv$f$@U?5d<=d{hQPAs}KZfvAC~s)mRdw?&)?+!PTxsw_t4sIsFiMFDLT0#Gsp zfvAB|113TyiYaq{;yxcof(e0E6kvowAX=bmAYv$i3X}!LiiaDh2q0T43l6GwAgow0 z(Yht68{mwQWe_`Bf<^*p5K0=ZP+~BsMS%lw2pG1A28b095NM(Y0RydIH7bZfv{Wi8 zgaQI+*HjP3T{c8W)+jAN&8n!s1sFjZ5!G2s7ykfI>!xv$+<0g`zV)lNOe2uGIu`6a z5iq-tzYGPkY8LgWby=3-vTdMN)WQyJX{wn3=}U@~MqN!%1#7AXBm@mrRPh>ah`SkU zo5bq6PORRETM#s+is7Fn+X(o)@-!7)HHmAa#78bd;kHp0um-vFOCjSNaWGZ#J;z40 z1)gqS4RV}(S8b7IzH4@6x&E7olJ_*|0E{~u5Bj@l(XV!{@m~v*%WG|YeQefZD)!~| zzDfyuf*9qD+`QYt9mPFH(AC7zepl;z{{S~1!u!64zmq>T-sCmJ;KQ|Z?__!UBU9Dq z-;aXbZ+OQi6x*6*U79fa=)NU=3}AYl5JFq|i0!R3z=qK@Hm)nWhm@1hkJ=aLzMA;{ z>)rcK)Nz9&Fy(nHO%0Ii>Bq)_k&n6v_^GL1rQ>{E-9%!O6Ycv~O2b~-trck?({M=Y zvaUPkMYCj!7dsE8_Q`h<cr?(oKVPMB<&OLptIjPu(;<n)-Pu~TvJ928<8hGkb3i_B zE<X#KRq#EpOZPXMX7qi1Ii%Gebxmz`ca3GYI4?3->sz?zWwE;E_eJQ`0PanA3=OGa z@n2gQk>s~5{_~DT<nTU>#(bMGklS23H#kVy;&}jaaA^)L^BS$~dPXqQ?fj{WxiNU` zjrZ#B=Mq{zIKy1li9tV`ARCS}U3l+TJ>1WF<Eh!i5$D0?E^Wc3c(PY=A4L~eEu54X zrb}TD>*QsGvQ5axF{9*T!*~OsKM*7rY!!}MQ#Rg6VYsxBoC}@n#3{&{c^um9R#1Hk z;U&W&;@rh-Wp9`lR8z!mrAFnugx1kXubqJF?9qK4Zf0IxsX2<_G6LNY$~QK;tl?rZ z+65OV+@hHj2Sh*=3{(PWfE}`cXhH!a#Y`zG7@8;}E~!vE4=vRb0it0HMu~tVXrh^+ z0aXCi1A+<%K*$=128ymsdJh#SXEae{MnVXj)fXTwQDQd)RBmd33uuA0K=ddZR1ATN ziwuge8mdtMh#(3A0ICa$0drIgG%ATHP^e<cY81d>R1SdzFd!D93ba<B*iBSK`WB!T zg0+Do2C0ENTTqxpt%<}Sa|@__isFFcm;&ad0l`4Ux}a1*>sSc^0Z^(C8mfkOvt$ke z1L0H>F`W=j$d6r-6UP})SY&T1s>E@c(4Z*^05EK=pc)7@9aNPPwpaB!ElObF^*X9x zO?a&pjM6HGKrV0_paUox0+}&H9aExZ7cAQ6$+nxWnz6H4oMQmEXu8P4!zPUK;?M;* z_H|p&L9N>zygRb);~kKZ@!=wCWXZ)F{Wn~IYaP3sHEd<Wlc~KZzJI^B<&o+2tGvB} z%N=9-TrIp-7O{ZX;<RI7jjaGul%d=4YQ9CcuiW?O;n^XYgYZ5;XnL0#ozAQBpIhnA z{{U=#-$VLy?=I#fT6XMXb2RdOA%HDTp1J=3%!z`a_%D@*wxnwc%|JRZ9+lHtX_z=w zG+mreb;tQn_dE74(0w+(PrEuj-?U`si?EZaf-my|{XZXP#pHB@`_u1TE1O!_=s&|n zm2n?8?4`TyScFV##2F@;L)!NM$s+J&4N3N_a&~p%?(y5pX+tdStSlsJjI%`80CS%q zqaGd_bQITPPZi|4W$T-?av8kVIvZ;nyNhct(_4#1z7~mZ3@veY67gR@nCV(2ZO`1_ zPYmy6qg@D;bNx$?t2E8prN`moG%aqbCRJ<?^jywABIfXd8>nS-0jY?I1D#X&NZZ)D zYh1Q>9p?m%9p{g>ADGA4W-Z&tlWE8_iggF7^t}65pG|3m#!Gj3nSb>=r^sI&q%wmO zJxWkMQ@0bdMMzuLIn`V1x!-GQ+nZ0&TRE?FpQgvg86!<etB)sopL(lE$aI2O-8Bgn z0%q;O$3kiNPeq#%rHyY3V*qzIMB)MV9YXc+U(1J^l47hqpZ*KJ7)0i&Vxl6NEUZNJ zFsPgqT!Gps&`Kak)e|5kMF|K~Zix&+iedr)cAFxje$`L_1gIon17$?5RST^Wg+Q_p z03w<C1Q3!`v=cQoRs$#%5Go)P0Cx#Pot9M@2n4kNIe{>_M&>DDkQQjB8i?G)1HnMW z10Cp!0)`A!A(2+qN`9z=2nnL9gALVC+-i*EC4g+BLSWP@3OBbzW>iEKD@LM$=v9Hm zYO6F|RYZ&d1dRo20NT|=jcOux15rf<=$PI*t?HF1hOIQ}wIXFsNSxBMhLE@wDuRZJ zA*fXfh!+$>pj0?%>9VLMgI!QDXVih()Dp3Wq6y=Url>7Oz-SJrEJp~fM#>^~fYnsx z)Z0V@p*o;X;x<JOAgUO0uIj`}!Ply(MydpwAcA-CX*-oF#Th5Bm>Ln$V=dsq;DM%& z@mDpRHSyP^2Jt$LSAII>vt#uxmLaCgtC}e;-yJwmQ|VN9KP+vpGIp65pko}_rH!&n zF>_*Qj1#XPGyWk)g1&dTbF_MRCLKn94BtueU0+?@IE_GiU|>GT;%=1wV!St5*Y10D zt|ra_Z4VIV$OGh|k;TX2@hkEF0A0EEEc+w$9*^{(`;VEEx1w`HNRH-6_<8DR0k4Af z>+5;?{{WWE$?<Ug>8~{M%$fKjV{1}8dK#~W`gLKAJvLnG0nPIxrl6D_G))(0AKeTF zC)8KU@7TWg)4RS`yV>l$jPoV~81QvA(QEyXzfq-pUPoU>^Qk(nj%_<?P*DA0LC^fe zvHgE(<RK09-wc-5JUEl9UB^H*anxw0-I~?qa$|dX*@qk4xr>}WO~vknTe-6`2D!We zm61@weU+)|xmg~GS>OG(ynIF2JgtU$-Q$=s$>>~yN5#SYd_w1Rx3i?(i+zU7V#Don zRu>kcKQWVua0g)|Zys8oz2dXuXLh`qCQcmT3~aMKrm{HxTbuZs_`R)Bn_i!C=3i&6 z9O^nQ<?WecuHef91L;nuLKm}NgUz$bY~2N*BNYuE-yz9g0QWV`sUjFaF|gE9t5MBs zBWY!8Y3gR~B$p+9OO6vbm&XAgmghI4<orDwPZgwQSYvGGow6CZG0ZJ<&3`qgT5%hm zfh1)O#f$M5ZET_O!zkr#BY_nsUN0YX`xf-u6`iJ5*&vy`wmn<mSF>HR;k3Y9)4Hsn zdd*ZWP{;~lq;3Iaa*fIWB%l(CVxVLUYETbF03CNl2>|GzKmaR60EY^yCFMm>s)2G* zPIgcOwcP|{5`fq!5D`F-Due(^21=xMSpb0)4aTSi%|RJviY`&PiZqP2iU4y^MnOQt zB7~?zBCUm49V$>8TBwz*D@@UGK-3(O0_LKftsM#k<IxZWO4KzfiYB!pQE*k7LAs!k ztwAe7*paPK5&=RhvdFyzY;$YZ#dMJphU-AIs}1rptE6*Qb4%P$io>EQAfT#(2S&3% zmKq>#1ym$LqM_(e5EMXdkJQj0k~=w^;Ks4UyXyM-D}yObw2-@mjpBR`s#MBo<3VMS zpp~M6iULN9-hs$yZB+nxpK1ut??Q>E#Z*et+7ne`7|g&`5y>zbjgZ2u(+2{xOesHC za_~{4E|eg%kGphN0K0Dm(@mJ$S4!KU`0Cv>=)E$$_9B*V1X%VzlFTEuE+jikdiM{Z zj0@-cU#aThof|#JC*`~9ULC$KRP5j&AClT`c^|FCelP16KF;5V_&-JIe@jvKD^KgN z4g5B9yX$*G@5}!H*Nk!h09uA7c~8B3%J!@^tDee@?bT+rswrFL`W4l!oR4y}n4Q-` zzUR~5FWh?9U_GzxjA3c0{XBa83-vsGqvCRRcAt5^<<ZTfZKwe2*Xl$?o3wUE6_dxr z36}23&4dRS&!{zE4;AC)8_`O$yXULk)5=2Te^9fY(ywS2P?2`VxyM&>kM8n5ZflOy zFHE>ov%AM(ZW|@$I$W*H4it&*b*wFMani1#eNN)3uCjG4Sju<Z_2294n!}E{n7-QP z!Y7^(K0R9ai2>AMX$~7MmgO1v?2*aR$0Lum$z5@LkjTROYnM5qtm61VY?VC@`s%YJ zskL`e$Rf7v+?=eAGmOeR6>`=Q!M~|#X>A%^N)zzZ``1{*&hPN!w)=}QlelYUwz9jD z40Vi$Nv_RZ#ozpx0p}^$=+UWLVTo^Q%$?27ODS^u$=Y3We=Qs}d8lhoQuF0yHu@0* z9$?*EMqL{qjo+0MS_oudbOdjv<HaL2s|<MS_-Bd0NM_KwLR!`aeeWJaqNu`fell}x z=ZRWLbXN`4vbV==!rq(s)^^t`&6TpVkl6G+7qdC)^Y%j~>QM`nRBlj0<u+(5Di<LF ziUOcW7^Msp0PWB>6b%0WD|JB?Ldu_!@l-ROYoY>UiQNJ6P%$-BAQS{NK#(~ihy?(Y z46>#>AYr-(C<O>&frvpHnxdm~3JBcQmVo9UjIf{rH9)8kSgjC99ij*1fY~FOK~z`{ zsIQ9CDEWDj4mguk4&y`s<5XB=tsDxe5{aUUvr<y1hYdv&T8K8aXiC%sHCYzo6mFZY zkXnU~mAb9Sl_ZVg-X03rkqcU*N0F)u?rH#V(Ge4r45|_XV`@cFD)bi7`hL>4j*O?a zwSlkX?NyQ^P(=$HMvWXaTId>UHcJCQ-HKV2ie>`GYwujJ-5Xk>2^tL$KF9&Z0|8S+ z4qL}mDmfifPXtJX(zpXeQwNs{l~RUB6-9SBK@^VB1U#CmothqADH&_qUvXnW=)29Z z=V0G**PcOJu=mfDJZ<{|DWr2)*H1i;k;FBP9QgU1bRQ2@;ODv7-;1&?<nAmRn)us& z6pq@gE_S~5wu{X>y)nyM7QWezX03BU2gg<TPpEC4ecz?^f2FV7vD}TWXA;lBj*$It zUfzG`YT?2CN*Kjhee31dvZrfSHW5nSIa%4$RC2fS(^jjJ?nYKO4|@BbPkirhv(o-r zJJjtwasL42Q|fVFsp9P)3zxgR0)d|8)ybu4wK}O(cf7<?a3zm6lLoi|NIXdd1J!2L z*So?qIsA>Ru+Jmy-5hj#-1y8=)rO*_r-9|iT^1(KM}`^i%VxXkVTZMd%Prf%CQdWK z8RRPA&5kYMzeQ!rTZO*$>>2xGFKyg#O8M<CLz|R*!$B;K;2z5C9#*cb$C*DbkjKR} zg{#fGYFjU-<$H)GfV*<vU|AivW?V^k^0z-3ADe{8TIAzs+%y)v)BHu(S3QmMdd@fZ zRjtfzl2&Bxe^AB(cpp%YP=^6V)IU;H*_RP}bsdy!#YN0o+8$ES@Dt2*FRt!rrxtq@ zf`$F_W`GCAEnoopE!o8X01HOL#c43m!{*;5t6-cNB?F6NsAwn0QUj<u6=GP@zZRD^ zKcu>0Wf~n9rW#9LNb{FClTTvOG9s31dy{K(PgcJheit{yE}VN};f?jrRPJ!;w?*i1 zMCWRPHz=r_qd-_t6lll;ssvCnlp>-5+n{Ek7i>^K<r)eFR0hLD1YEOFn&g5&YN#TC zkTL-%85EX6L?lu`&Oj&_phQ$42Q@((nu-G5R$2p^f-=gK4Z#F~1E6q#hR6x8AW=}x zatCQ8P(-F#hN@+vK_gN#vPQP5vXC_dfx0FF;((ge1hfsi>Vni!xx<r2io{%tluXdk zb(aVx9$LF~atf^2rcqi+1$0@hL@se9Kqq7oxD-G+1E4l|pt}LsD=JomOwzk8O_D6M z9Tm$<Q4lvvS+NwcMqC_4e0AI`Rft^}=qNfU&^<7qcC;69CWFKvvixvtE||zXpcb@s zD_#+tsZrels>4|ei`nrvilQgUT?z<GwJ0Kcv_SEa7NStf{T8hi9{Oq)Xo1plG%5xF z_$rx5(gN6(j(+XYYb>lp>bNz>bH9QQqP|^WAe*wV^W>N(jj;N*_Ky{Xyx!+>b1TM2 z8vWo!7l)ViJsPcd8_ag^jh;q;Kw}3MflYt_06vAo;_V!p;vAXf`>h9k=)Vc>&*$xa z*Xg(~<ezc7hBmXgEu(IY{+QC{3e%B(g!THD*7iAd*MeqeYx-}=;o;-AlH%Yk_<R?` zucdMDN;g>8Lnf~@SlQE5a{MYz?N=+@U){R83KjPK3)S=euFmJ>#zxx5v#e#haRttF zQAWm>$s~pDJQ&96=Mm9<r;D@T@^^L)z3yw$(Pw9Gj)V#a<X-uvcfKeKTFQ7i<gV^b zOGvxEFbKQF&-@Oyo)-OVna)y;n;CB<YYs};mUHrSO%coM#{O&|mb;4_8tu5aXtA`+ zvUkIJ-m&Ao(P18QBO`GZPl7lD;{7~MYurmt&XxZFmfDu-@jJi;=HTMrS^2JBzFu8+ zy&U!@y0cxMd2@k=&Df_s?tBhpZZDO^yqq5C8_C-EFGp7l#cOW)?q8S}EW*cpWVN1V zMRNr4X!bbjc{RKS+Ejw9GUB_J9W9q~Ut*zQbK$v>k%Lo4f+=6@xmI3<@|(AAZS4Dx z4Ra$LGkCX_!ZqUPxl>>51-Q=0`{LkT_6KU_B%WJ;MUh84<33k<4W}7cDao~qU4DY2 zFEY-xt;t=)-yye|;IwpXo^}?K_e)9)-%HoEW5r8>cbM%?zfP**Vw=OFw|5sFOmKTh z_=c$xuKv3tbkPiM5VV%^{6rC<KZ$BHS7E`v2;J*SAdq>Q_Y&zI{{Y}%tt;ZSHP2RU zSTA)v`afrn1J!#a%g>A>I+~zjR1uO;3zi!KG)RP?7b1kE3{ILTf!2r<bln7UZlbFl zN-5gZ1Q;r!9JGO;N}(Xo=%xcSYM`*ysDlU??toA-231UfAV?CFB?BGQ0)ZfEAQII8 z7V3ap-(oC8SZlJ4WZVye1wf!f*n!Xx28bSoP$U%s52nZnI33U!0PL&}!BomdHCUFX zYf+S~XNuGZ!~_glrGZgE>fkuhQF7Ab)7(|Q3wqR8l2)HE>(Of1NQJXJ5#Xj&?~%?m zL`Po~3aFIMB8Ve%wb1|_P#A8C31ea^<SazO^g#R77MP0?wzSa{KohzpBN#d&0K=*% z3_xsve9hd{cqUn0wwBIHGJhfI;8#s-tghVJW95uCVgMsT-PY`k=CCprHt=ya&oX$A z1<P$?rna)A<kLllkeAa^fPHcbsZmQQq6)5iiQNMYb?Ol^eoh+{X9-#6)o&|>n86`c zs}aU2UZY>DRbw&rFKJtTm$Y#Z54mLxN4_?n-n={auTHF<=%|KLJP+(#dtCjl`o}#$ z;tBSBlwX48zFe0702O|Zj$>K(A?^dqx~bMYbR+y{Iejm4`dYmHuj|+WptnyQ7s;<` zK-G<)f!`9w&FTq$0;a2nE8Hi@NcQ^|*z|k6KGf*#ep162?f7nwnr8a2#_f!8`h>Zx zI{ZgceuetZ9?|gmd%YSrRyOn_aj^P4eXG2A{w-TWR*w~GuDRu+7gm5u%KIx(RhqH$ z=giLazqiQb`)?5D*+p%4EON>k439PYyuJqi04~1On%rS_M|x-Pb2!{B{GZfpq`Ha; znLJ{5#Md|i_@yJ02nTxXtQGE?o`QS4b0dwnO}?7m);MEqFj`qfJs)!`hZy5@v<+!~ zwB+Hs&&6bFch(Af-<i1xG1J?Art&*$%Xp@fgJ$(&X>o<_t4TELMXTI(e=ltF7{2MW zW>V5iAxSNy^{C!nt4|QxpUkQJ75bIP%*|L#{{WXcY+P2dUQdC|PT1g#A6JW~4h4V$ zY8fM`r4?bq<mBx<HN;n$2FrPUkb)M=0ODb{WJA&=#iWNip!q>MsVX^3`zxF?*ycI2 zSxV=&DcWk+wWmTyLP1*@tc%o{{9RUDHNk)#K^_V&%b02S`mr>gakqn|I=K5NS8g3; zt~{2;jAzqt1_0j@NpboKUFMQV<94LuT~^T<I#EExiYU1OB@_;F!r<HNjTo9JgdJVb zGl)PXC=~)l3!OrsX8?6OC?RtPL<l!T1O*U1MG!I9L<`d!pdf(420Nf+0!jv=sz?$9 zfr<oyEYQRns2KwwVk&{Ss2I0I09&dC;)1%%r8q=BwLon(I-oGx?5Gzt0C7+zf`V28 z3b877HoL1CNEt;+m5rjY6Ep&-kctfg0C4d@2SqRvp}?tBO5HR}12sK#R3Hkm2UA5% zhP?_Q_CUv75CIApJ6K98W<_0)S&9V(xS^myWs$15P67i4h#WgrL5-@3Oi(cZqJhl_ z&Jf8)>WBwQX-d^q!n@_6DiKa+2UMcvMpyVDkT#@Lt0EdrMu~*V9wiKy7j#iDm5~#= zE><Ilpj67#aL`b#Wi41_K2m*@`t({z`nJvkZ;Z9KZh|NyWj~dTAGv(}tJSNP?t*<8 z2eO}9<z1(E!Yv>=lr9HAeWV5WEPpfp>ir&ZKLuR9U)?ul<BW{6wg5L##MJNZUuWLn z{#4sv(?7TS9#2!3^VxgsX6!1y6@3JOK?8@FtZeD3IYHp2tvP)A35c(+=-#gfvD&)- z0F&hZ0K?8<HQ{kHN76xGtK#hVT#@MZ<d}gzE7J4)TJ}dkrB%7l8+y{ErLNa)926cg z-W`RH$alV1A(4CKidoFeg@@8$YnmKOoHaDAsc`A6XW8U1ao$_n_T8Dhx3`)zad~XO z%SeE5CElZ{>N>xLMyyruI4*mGzk7oPcVT^aEvJdL^J3%y&5me9jC7F9Jri1<PY-LB zcIdjsSIvBMGxsJ6#~XCarR}yh(#q_^q5VVvhUzQD{7#~)J8ZL8Q-`#<!d+nRJC6O* zWbuuT&MRo%Zhav<jSq9*CzjkiQKSw|=m=BJH~V#8=D^DK&O<2_68cyk<8!~LzBu_v z%Z>&nHlWvo&w}5Rmy5|StXUsuV<dA!Zmg!B+1!ETVspJlnjgDYAEjKgbymU#Wh}0H zc5_D)`im!i89?(io~>}`x@%b4F<o0*h)bQUQkFZ8)pz)8otnR;a?SppMn-8#TTlY& z#kW@uPR%NsRIhDtF>=X()eHs1DV4xU3T3P#A<oq3ve6AUK+aG#d=N3Jph@sjh860f z9HN+jP&3+TMKB@jMF9!~4?sczEusWBK`3sB5N!|@0tO%;5(q#hfdW9(K+35gMFSv8 zSQ5x$4Nx@-20)NCE20K1P&X75!pp5VD2JjU#X<=hRmd;_6e@u%qL>Ibs$duhmZoB{ zl+6`dz>o!GFgEDrQ8h&r2!L5b^dN=70HATAqEO*QRPA=Y#7ZteD<TLQs)T`ys8BU( zfx`(=Q^y(bL2f8eT8<qQ6S6uYrE6%0MMXnynG0f>1{{cT;6k8Dq5yOCqACd;p+<15 z_aLt4YE>2GcIx3Wtojtel4w>$$c%MFp!Cmz%>>xJiZv3lDxzU(IL3yGm`oX_%HbFB zaJGB<OK1Eu+(R3^&XJ(4c7%ORIO4zt&1fH1%jfL%#~0kDtu6dc1M46zH?{k#w!Pyb zFduLM6%KeGQ<vcNx!!&6(QW#F1w6BV{{X7Ve+*Xf{{WFy^uD2PHJ=9$PIsW#3NMuP z+K>$tR4(|6#?G38Uxi51n$J_xBi_ERrFy(R$7f0Meoy@(<$|Y;+@EVfU##K%FNMhT z`(~2>;tAKH^!y%nji0CnttAENs{45wHFq5W_G|l;96xwQ!Irub4=v5OBpr_^%V}PU zS8aPZF4wzt-)GrkanQbb?O6C6$XY`q^yEHgy}_-I`)5@x#BN1Q?pr&1nvuDD+;&h& z9Bq=v92+E|tsH7T7WshH@)P_k&%YzKoNUN4)>t`9aaJCc#I7=0-<brSvo|vd&n`jR zIgvG#*qVjsyH{;>jQfiw$j4-4mh9WxJWVyD97`?S9naPc_~na`6%EzBO3&_LtH+-2 zPWioX=pn)P6mD#`mmW)&vX72fZX#@y0Mp7#DmsPh-+q$3x=yw{uet5*?y-)!$2{I+ zSYOGY)<_HJ;=*ZHusO90T5QJpy!EqO+ucDtCXz(vn4PxffOr+z#=+-fYwm7kjiNV9 z)?7L-!yt7YH1XYAdYaCa1KjppTHXyR8Xw?2i+XgfTTYF4KU3}3>t5d{n!p#+buzLW zm^!9Z#MMItqd_hdKs=B&P#}TO2^3O>Q3(P?E%#F>g}_#-DUb;!s2iU|62?UkNwNn( zkR%LsK^uYufr=@W3aAnULIyyVXi5Ztc$5o?K=ddD!0v&lrUeCzx{%#e6;Kd5A{=<2 zk)*4Te-^5OXs(Ev7-BLo)PhFUYEWR&T!RikLZ@1)f@As>0KEWFTm@3D0kr{9RJ7`* zM$`m!M6?E^p%OAQTr9&9inkOX^g(JkP+4qr2qbK2fLv%44aF1%v_L1t6x@|Sm(enS zbg7XWq|%Cr-u(`!nN^YMqPyMJt5POa<Rt8>T8uTs(Mv^`;wFhGpV22_?Dv{hflPrm z;<Wcyr7Q1Ia5lhcsG^M|WM0KZh}bspR|!)#Ftp20wr$17a^fK0o%93hct5#K??QKd zGj~AOj+HcDKWg<#;ror%b6fbNVE+IpE*!TS-@3c;_1ZIRhbySPvVQgWZ(e?A{TC-{ zqmewjqb}{oI9v5Z7t#8S>#T9~`)qHz3i);EqZ=&KC>+|j`xZ8iy3|u>D5PsHYd!th zUsKZV@pJZX{GR^+cVAa;)tXb<z*p-ye@o$VUawfUkeF$;JQu1w*;}-EuH`INl{v)b z{w9&_)ulno_cv}kF_E%#U`Xk0H4@17Le|9LS3R*(Nj@)!kP9{2PR=hs+Sd8@Keu~( zx^3B)v3P9QhrO1txHM}NY_~q26ZpK(@ikob>(SR&2bAqB?jm7r-dK0r+ry=;(;DZ) z5I>4WAIycvcDU4ZUVY_{Mw?1IGX5tQmup>bqoNT8hD1)HTVenW2X{ATZgpNBP2RmU zY*}Hhgp6Q3+yO95--Y!QKTS7bE5Xa`%_ePnbm6;pcOCJMW>e)QjE;@Xn#MSEw{Q1O zf=@`ft?=SaLi&7s^L{yJXM=t#uO*ke!5w#dhn4=F%RIH^1ax$6ZAjm4F5E9y70b`b zFvrPRI%_s&t*zf3l+$rwr{#%UbqzfiuUD6JGmB}9TE}y1i^jW(>P33dT(hlayf#|{ z%CY(```rsoC|2^tp9YLiFNQbPyqYx&*RN-u%u~2kQUoD_ueB7_J}43fK&pX>(E#&M zICW4es9^i4lnDfNOn|BJQB3C`9!M26ss+Rossa>l$P-*i)dZmfpj|3}OSM2JR1HcX zVrr_GpkxUHpkje6(3A-RK#(K|>Vc?(F>`e~A;O@7A;BmmXhADlw9ZmBh=~BAxC8<$ zhZ-W_=$0O}S12aBf{KEwArn*%w57#dAcJU_1RAaqpNb&b+8{a;(GtRJbw!b8D0QkT z)G;3g1=yjY3o*x{30oeB3ylylY5^fZ8_{AibVWwvstBIsL@$4eA_q<t5t-_&h>gUP zqSg|Gw4K(OAqhPY9Cq5&sbIAox=1?TmsrMKcSW~02^#}nE1Ka^P$(8TE+bk_s=emO zrtX}Bn8wD&OT&Xe0G5HOn)YjM>_ZR@r4>T-)ehG2D&-Q2QEMrN_siJC{qu!k*|!dn z#L|JW#`hDgHdy4n7g^QrS6#sSu<?bkpC=e6{b&~3+Y)x;EVMEY;$sN#C3tJmBaqEp zWu0>iZmgk%I#%-Z?nIOWUCS9=mzUeP;@bZJ4SKzKo#1S%`k1(Cd5Tv-xnGO*B)po+ z``owk)^z-&&SlGi5;EnidHbGN+B7?_tMwiU<F5JXkHzHlxo&Q_6+EGQTKCh9mUcvB zjzwm=>aR1js?2W=Z#;h}{VVEvUEV%<(W&xsXK~5GO+#mmz<)D8>R+qizm@PgJH2wy z=;2+LuUDS0T06|GBU%$$dkFh<S!z7D=WMwM@pyZCJJ~GTcG=;Pjd5cpEaF2P=F!#O znyhZ`#X7uE;v1sauKxfc@((Oiya3_`%$SYo(d)~#dbN(*w7zNgcW(z{FD3q^WYRy? zvNgCY6rpQLJj`wz3a)pOw=|BrJg>^`@{jac8+Z0@Tpv<7p&|CwI`U)3m(zabq%J$% zHt*5XOSZpjroeW_SGDABN+B0><H6(&ogK^goXt-!a`<0R`gbP(0HYP}<MwsB;^#(| zUgA#S?99My2OH}N{{T+FLte(YoZ9C%?h^2PrF;ID>+i?Ib=&9tk1w;do6KDFczvH^ zVJ)psba!;Vjf{?K;Id#aw&G4T;~O33^V8hE#}<}HgO_P*oyqr)^=rr3U0X+Ofu1pM zYiko|ZGb<QH!r;4?~9NW=)DrW)@99iE)@3eP1Y<j7@7po^VF6+0@rfuLsqyBp>GUl z3T|sBxx9s-0V`VZU5lQ;T<Uw(H<+mLr2d#j;tQfBrk=&=;k_PyN!4KNy0ZX^W1<9s z^gzdC15^UyK+#G7R*NCQR2W4#G)y6!;Gu+dP)6c_L$y_KE=XX-%24gqB@(r?p(ulP zh#9Ux<=qep1c8as0IH;c0D;08A{4a9N<fsMC=vvLAV?AfgEEVop&)VKtOnNA5hGYo zOxVf^TGgf!HL8N51xg~qMvjR|86ZVgpfExq&=Yl920voZbVIceU?7pLD^ew?TOWdz zGM+dOf{QBDP#WxumB^r{MHOZ^&`icr1g&BOSSX2*Qi!NrltlFwA$2H<g~TEvc@$Ng ztI4QL8C83zm{eMlD74K?#{Fu_&Qr1nJ8-D69kD@SmZN%A7DTLuhLl9E`{iYz7x&k$ z9#|o3d3aRR{{WH~9&7M)<8gTzP1Zu{;GSNz@;<&GxYO)flMyPTny6qrPz&3tpld|P z>V8yXV9IyJv^OX6;evU~I!QnW6Z|H-EOK6p9{&J%8yqxf4Q(mF00ThK3I*h@@xo_a zTd2qJ5(l}f#q|xb!N2)lzgB-TE8^&Hp>F4v$Jhy9ko9E!+4nx@G{&`(;tpFf<G1Ty zPwapK^?gJ2$@Ven{*;7}0AD%S;EF8lxK?|p=TTzUT~JDD)tKprIh}XqJKR^)^siTk zop<Eyl)cMG;OI#Ad78gh!GA1#9!b^gc7~zL*{jW0tv)&{NY#bZX+Hk|@cR~8jwj}} z8a%E88zjS*=`W=Ke>(_V_w4j>cX&2e7jb2ECn3rvJ=Ag3v;&~0-V4RH&t%mTW@B2` zO7Am%2kz$A>n>^b?a^|(I!Lt(E}a((vdd_9guIg=aO%d>l?ug@w=NxjWn?>p9e)hn zy>D|pq*4c5%4T#CO3GA`_ZdUt3TemJE57;f)#x3GlWpU3n5ph!xpb7fn8(TO51sC0 z+@*azSCdX!0pJ(2hhKxq&3jjX_ng`Ib0WtzEbch=3w&Fi{%sIM;u>NnPYy)+mgL28 zwa;HTO3+#W5|RsgHPor%ccD7d#dVG~zb(P;Zp;(O`I%na_}X=Q?fQXEplhn$tXSne zSHvUBF}|x`3rD6m^0>5<_NH3o`K7jF0W!m+Q-bh1gS86p!MDNY<xF*_xq5KK0TfUJ zkxx|&n?*t-Q3Gh9lMzsWc$C0?B`_6epkjKdkOb8O9TX8blmd!+sgU4R1dJiNm2inY zK!F$X*#iSa3z7%qfmH%P)GDq@h-9dN)Iz3;P&8I7GL$6(K#(K}0zi;vu5P3f2WY8P zDt0$iMC^{GR&trFD&WY(bm*!ciomF@1JO#RDlDc&!HFo%HA=ZbG?dCDs@QPqY^X5h zP-9d<wWuX)Pee+ck&>=i%FJ;TSr+1msH>4dpfo{gkcw8CsM0|bhR6$u2pkkC$|OeQ zR1W|Y5k8$%733<aw2q=87d;Uhs_g=z7sia{nXwb6iY;4)*yyQ+=xvUPl(BJ^+E$5@ zCT+Q<%EdpSO;6O8rFXrM&(L;`V<vtl`hXMs4B|f3!++H2r)Qe#HySR?7am^46%lKy zft{(<1VqsL5O@CoBcSy=%I4yg^fB^O_!qscA7bap*>&#re1Sfh_b)AaBZAF3x2+xl z=jo#P-&DBu_Io`pypbLo&6JFLPwZcn^*^aT=h^4Kk&MTOUS!|+uV(ulPu#sfP`}Ln z!_%LYGme3L`t5-7D;rj@tt-6FSZ`Q@S9w&9j&nHU={wwiV)}lccZ;4S`A>BXwp%YP z#EgOn;f`5lmBEp*jd81-<FEmKuh;!C@OgXJq}q25e>C2GrHf;%pYY|f?{%yagZJQo zH`kG#4k4k-+pEb}t#O_I06W8`?kfv-4cTjrFN}MP(-#$K8usw~!Ly+kIGo%&J}DxX zA2A23WNW61zQ+Kv)M|Hauj+epR*_Q$+)t1ZLc;I~2kYp#@@>)S;Gdb~Is8m*yqnb= zL!1bx6(Q8oqP1T)lXuhCRXlgge2vdMgK3Vm0GHfO50$4-S}Dq&!$srU+16ZJ)!uOQ zMK$MUcK8Cy-c0?|Dt}RP<hBk!g|+h^dh~0z$;#=D?sq-id91x{vJ%q5Va7XaZ^?jx zuNKmte|q$59(|oR$$Wvc?-?-fcdH&o!r`rvqK%SRgJq+KM>mGwO7(C~uP-&|#P6w@ zYu%ZA2XIB};chMs#hv7Oy4BLO8kZeIL#nrX;m%yg1Cztchnd!wGJ3Xiu*q$86L~gp z-9yXjXh%>Mqn$3?y1B5rpCJT|XX)D3&l|LCt(E+E>+SJciB)cGSQ{Id9~&XLk)e(S zq(><a4RAgNsaoG2F>>nGD_M&oXlon;+fKC_mFwY?4=*o#E08L>u?*lSf-<6+P^f{Z zfv6BTK<E;M3&yBGEYKt<0p#&O1x$uagpouA0;oi#QV#G_Ai*lcItJFL4~hjsfT)2W zNEHw<K#(y-fl`E^ND>5rAV?An)y_Jc4OL2-HX<xCJym9`v4Vp|q(~YO1;uCyQYn^# zDo`b5s9=g?x-(3Sh-|e11*Ja~SrG6+D=IpwCy!7OnzI~4qbrd^vMgJU5#Wlq6a&Ep zrbk5t%x^?#BY+4aKsz8@kVfPXy#x<%C@V<rii*!Q(GsKLOOcyWHX@0Ui$dnr1d-Zp zp+?tXwg3$^L|u*m2B8G(h<G57Myi?7`zxpHRwKBPqaE_RFq%5>S5CgG{{ZS-Kle8~ zJk~~v>7ejkYY@FYK^e*^7+Q^>euqR5KAsgsdUwc3fAvhw+1HJ{5r2;I@7%fax2x4} z<pqQdbULpsca94#Yj_WX9rn?DudG~p_3rd0c>{v0@{Qu+!{!`-<w}qSg??|*+gZ!j zd@uMux3NDX0?tD5cJ~2SUC&noPE?TUM~e3SR&h<Ijkj;^bM$WarI^)a&(JTCoV}ss zx$H$*o#*$c>#8YT<w(<<%{$2Naov3{PrJp=ukzZ?(*FRtZf&ny>f5q5+#6?5vPVTA z<ISf>1~~GeU#j)HJ`XQ?_q$iU&n3i{5#|-B_AhjKs`b9I>*9#ow5b4nOE$F&Ibi$V z+{l;<g~h95xwfGn8(U3zc}skGFFz&xwdvsfQOa3-w}X^7+02ufb$P_XYH0G|P}wCU zKBuP|HF$24&hLEWvi3ujwC>*1$IoQOx%N}h(oGokqj7C1Q@-2izE?lfbHA5Yvrl79 zr&-oK%Q=g)%ksL!v9RPM<mvHXfZ6!Au9DQ9oHulP^$XdixMO~<3FCy1GtyfSKRcaU z><y;umzdFec-}5X$IBeNc+Z%4X`LZ-cXv&R@;ru@35ki#;5IGgzg6nv?(*_>bpHT1 zyH_Q7-cP(9mA#DCEr#ae<?Uo4@W@3txcQy8Mbnmb=;z1T=UEx?IGk&7a9l}~hB~>@ zJQgvp=wdF_wCHFPO#E2dGTJY3*KTHB-R+MfYWSJVa2FBspnHAP->T_`R_-Mi7Sc9` z>Bcra+y<wMc$W_c0J9x5nbyQt6Tx$DZ#}evaK`#CcE?RcM~xS!g8Uv{Ra2+6cXNSu z$e=*T7eox8ZY5B-xdCx?Hb8?MP&1hC1t<c;O_Wn`Cv^}HVNgU^QvtXp1Ja2>bW#8+ ztRR>M)CPz{bOwPSND>5rAV?Qf0C!bkEYQjXfgnf{1c4yVrB^uVQn9L{!y2fy6Gn?n z)Zv;VC*rgn06j<mt5nM&iZuxeVk)&6IBtj#ZmRgAPAf<*D9GB-f<W4!u@rkCy##es zUWy%&S7V1tq9<ciY9#|j0ku%>K^fTq6RH6&q5*W8Ac4|usa0P6Q4qY<0DuZJP9o%p zwGFzhEyZn6qbb>KMH*OTzKASG4G>A`=%`#M5m3y>IB;myz>Phj2W{UEZMSRU@y!$u z;A#GipY^VMecIo%&fgVHJT&^WT^I>x08yH)A_yGUbwLxFiypc1D$Fw*m&iHV&2bz7 zzv!9E{?g^k-P1>Vk#H?F*?FtHa5*;vdghLd{{XZX#rodZ;h*M@qx9LHM4i2^MWey4 zKT%(u^uJyEtLl4G@;RJq`CH2W0L5`J`sH%%^&jhP{{SBcPh0wHrOUyqs7tk3*(Y^r z9p`e(uAq?@XFHi5Q}nN;>i2m$l|EX^A@5?>fAQ_4XZb*{)cU`r@Oitv?$z8&d?`<< zd!x&<LIdWnwQ3}7S(?#ewHlB*Hd^00MhCUFrbjgW;T=sEhuhO_xa`*9>f*D?eeXEU z<f6&li`KJ)WMx_AE-kHe729?3cy!uN&E5C$B<Kr1_simkq}hb56b31QbT4TK%JHk1 ze~rIN_i*xA+2`fsl~XHa^7p>^Lp6I_I7oD4JB%hq>et5h`2*{#O+oNppB;Dp9iC0D z`u_kE&wIz^w{v1S-sc)_M2CgOPQ{#=J-c-h$Of#q_JOMHuN96va?0hbd#AR0Zt5GZ z*~YQgu}H%vLi`!-fNO<#v-`Mo_m!zF?&ZCcv(Wzl<_^Y7nDLo7C2UcdUJKvVlg8N^ z>U{@Q>)Tx6=9R_vr)FU+EM4Ax&&cEL3tbCl9GxVm;G=&1Prw#@Z)R<Za^$VPWn{mk z=3o|c2hA=q@wha{5orOW{o=;}{XMGX9A%W(c$}+kFI(x{!6=4G?pzHheVsw-6t0|o z@YtT#81eEt)Bw&xVNL2>L)w3p)eEl;>gCDVm!Z{q+z6<lb5JfSA^kN$Hr>wqs3&EE zoIVu6<ej*;5wgA~l2+nh;GQRth9&#aJWQi@HQ$9iL@vgVc2fpI>~p*n@l-NcIlUHq zQC3T0)fEGn<N!qw2|&dH0;mp@RZfAyK;g<E`5=0rND>5rAV?9}N&!VA41v%x0tf`4 zNGUa|oOG#})lp%MRtqucw9QP`tuil7139!o6q}_0vZPQkK*0e8s1+);5KU^RCbyEH z+SC#<Jy8~;g1Vr)6dDB)b_h{o^id+LwmK<9oGGdVfgoz=fE?rzIn*d4bc%>1kyNNl z>VOHUMrjE3q9RsX>$Op+u^qp$8LP0`ptl?fG?lQRnXpj=f*J%2=21{CYAK@pvn0N8 z!Gu;ia|PN0EB2|kWsBF6$#o<)_imDQ#T#7XE4??h&IFgWqjtHwdzU>rF3c0Rhr3ni zVFZXP$;Aa(G*y*%z4cIgC&=iW-q*dD?Je`i_>r`K+Fov6?%aKyhFSDs_Afnlk3PJU zmO@YAjDFI-57&15n$O~WPo>Y#S8xaYb<g}U@?Q(-->Uxr$HnwLx%{^)hIMi6cj9x; z*7CLP{{UBKUt0eFE-$&-uOq2-SlEiPA2Q3PsGjdCYSRNT@Vn_>OV#flK6Wo@+`7}d zp}8OYHaX|$p<k%=dp;LG>U|GvK@qvX3xF;9tNYi#SCeLpCXf16W;U$dN);<{ua0QB zo@-KQE^Q}>{ViPf*Dl%Y@)-%Yh8B@lx06Ud&;J0We2uvAUwcc^FmksBCOTV>%Wk}n zN>mTtuB`6oZ*QGFvxU1IFlh36lwb$JrPXn-x{J}pzm3by%QLPU9l7%dE83Q(815v= zu(TO$?!4BZei*Cg2kBm!w%2EmZ8h=gET{hfZu`3tk?u=O4c<FBW5P?DOEA%Ic_fbF z);?iI#>ai>C<{XLZLTj@n>O}z-!Ndt<$Es=e{y|Hd~dRJ&a~xl*2f#Y2{@fhjE=Of z?gFcGq;s+3-Q(Ua?mL%bB5SR1Houo?WLgWH#`%4B5xb2%q;0ZIW%#F-9IQ82c2|+U z7Z%*w$k(yo6-#vkN;tQVg(+2=2G@O?ORIY>@wAL_y$xl{S?1$AH4W2XeX3_GD>B}B z8+$H2$JK)9ys_VTk9#?RPYTkDT3lASXIiQOpa*aV>|X4=f)Til5J=m1xe;nSd)?7% z#XOf_!#&@1YsH@?owfnaaI03Phm%$w-LKrD-|e$@U5~d71ske<+D(=j+ix`TC+)A0 zC%`f&%(527%F~;OYir?CqL)lBl9<EAJ%3L4=jlk^*Prr9S(0AHY6sxyUo8&Q_NCEg z%5vg(=mx$E7gh3SURuR(8|0di#=%#;{tFkQOoukw<})R;#IgP%qUS#{sLgI0^dhNC z6$%K5)`|uV)d7HkaX_{}$8}VYHzWngL=|d*AVCA5ND`DW-9;n<fRO@<ND>5svsio< zBc)Eps)^VF)Mln&2+CHi0uDqA%}OdKr2w*|t^@I^ur4&+P=c`r)~bVRE4tPhyCiIM z_;paqMnq3UGPN8BY9g({ZMKN3(Oc-CxfCD;1%}2nMNZa=AY4Kq95qD?jT8aN5Dt`h zDk6KTDyV_Pl~SW3r4uIOT@c9IZb{h^tjB9!h>LMq?V<~C+4~e~Ek|qzMOngjz<d;F zLKEPC+ZrqxV4|x~y@-gM&Z>$N-$fBI@-^f+dS}c7bvkui_E?#>v0TY5#3TS%eLq&F zL0vT`z>3qsO;=?%xKsX>-Z7PFouaI&Ng|@Wl5T>tqz0m^L)|`0v(xM-Wd8uaxw(-4 z0E`>|0A+Z&zf-=wo7tz*CsU}PUTW(eb2Y(sTJ@mU(qv=lb#z~y`u*vw`~Lvs`rk{R ztMF-IXLB8KBUtGKa2F84U4bL^FPZecE!y>yqucIni9Yu+gaNqAel8L;w75CD5J^|+ zTpXNymhCZ{(XUgRO}ONr28kl8=RGDa3mYn|j`O2>qkhQS4=?barF{=s<mT+>aD)!$ zg}off2l*v_r_{Y43!n8p^R+Jx<}TgNcb*1_q(0WyQ}16xSC3~!9Xb48P*s+-uEWjK zs#c?K4r7leZs$6s?k#BP=5DoFvC`g;E6zdaO+05$O6pk8(p=T^d8RAwao@`v&SJ~; zwzEVxm4{u$Xj}r|-C)IvxRd=_7~MSD@nZpd-0uL<RO969nBmE+@#@#M`Dc`50`s`8 zVZmBCyyR`k4wk=&M$`UrYV~Psxwos!yqLsSxyyD}Y(_>F+D!GvmAJe#gP1;0B5flS zI*re@dbqzI#pUIn@g0UL_x>pPS0vZ%Y_5V^%WIh88~_oYQGub9;#%K?4y(NF-RHgD z7u<cjC55b6D-v$-(zrR7K+;QB5vZ7c6SqITwuN%Vonw1PFLcYfna<!Dn9W%%Eg}OD z)HI*}05-`sjNzw<ySZi}=L>NQjyE7nW8%{P08R9%EkDDe+(2WXV98@H+zlNISV_>A zMB^T##T_@DmgliC-OU&tR=n}|9Y^h7LrE-nZ*{ADYupBlq}7YFQrisYQlV~Y&y!lu z22Cp6mrZnM$+c^O@oMR>8y-!YY#68ky%$NWhm%_01yTTRs`*IIlU5GjF4VS*mE?z# zOUzt2`zh~cXe_sl(l`#Z8&lf2?aR@<b+*24?~JxzD}L#6Qn}1-kig$8Yy)P7ifTI5 ze9m57uf^}vNgSM0O>E%%c^?doIyyHwgdY$=p<ZdWE?q2@>EAE=++?M88@VNKHpKa0 zzHk7!v9!6-ymg=zYrJ${L)Z4R(`TQPhvefso4@i|dxFeqIO_(u`fOu~k>jJD>S#{% zT=_Yz=^E3HPVB*#$QviJS>>6MjxS@}Tqt_ga+_RrZxCI%d+A>Ol0*4d4dUAD9NlWK z9^N%K*D)qXG5M~F(X|bA9V5Jbfp2bKlRD}1P&pf&eMYtQ_EB^F+Si0n4AI<Z-z$#1 zO6jihvt|YvL+@P~7XpC>phc<%;;3TO0^otFia?YFR0^sg!;mVf6;uz&O9NCU6v~2A z2x=%C?17PKA_0smG0`Xrvqlv}j3E$V+Mp_xtcD~eKs!}328O8=g3<}9$Q+8RgfIfB zfh!wR>{^kVQ?@m7%}pGB#gS?_2Z9SxK+~{B*J6MQXrir05TMZ&Wsv}aK+gn0QAITr z0_9N?fkP<V3K>M@OoMe&(-_IvBQ~5vUYepMWv;pe7h$vIsTHCaTxFd)A%&RjsYMJY zYyfS#jU{YBP(g!wC<sOhp>P9rRuO38NJXk|I-g=?5V`Fdo|^>9IoV#%)I7O`;l!Oc z@ZEB~Yhi{<n$d%UPu-C6)2_<vI;Bq}x@uQ<HA$!TtqPJ#M^qJLoOrDWTPq&w5)X}O z`_Ufb^7|#29hr^B_SKwMQpXd`-Tmv`6{J!=M>~Mw`IE{UPEBu>y+~dzTluTLos(s; zoz~{MOpkJLpd`g*V{Z&Xg1Q-fXOZtUUV8Ls;IO81b$=}PF1j*Ez#R6qri~xNqWsVM zhW>3oANfAN(!Wi0IC(hRWF#7TcJd#pHx=OeZ+rMXe%<LD<{FK~+X1%#Y42Qp-hH>_ zw%qmT@9S~Rc%~=8c%4^{baW-1s_PI)Jjm&+M*jeX6^E1>AEkT!YVvZ&HHvdt+}7N_ z_co7tY1Mw8)4d-Po^^WXY2?M7;~|v(Mco?e>>f5N>FV(9-RLZLn0So|RhGq}s0mt) zjC;c`ZC*&DXN+s$>VmTAdpKV7f>WEzLu+o~99Ko}xtO*KX!da~mO>hLtsAQGa_Mf> z^*A|agkjoS;lO0~w-V$ddy7MC80f8>=7xd|%&iZ8{{V0=A1=D<KG&mLcXaY)ENyTi zKG%(wITu%)Q8aUN2;Htec^&Mk`5Jp1-@A_5y&tnBx$Tahd&F~jdGa?>w)%N)Zd&&T z#U)Gpzrb{8_OHFc%Qcygo6D`Y4t89mHl|qwf=MD2F)(ul&e6R7=;PITXC`|*ms~wR z<W5DoKGgvJKmotc;)_6J6UB2LyqtYl%x^9tt#Rba=)D|O=H!nt#?5ovHy4qaO~a+0 zTYIZ{UFxz{2O4r~wA-S(@#n5nZSZW3oI=U-;@I(O_VRs!t7V0?^A>}wvHh*~g{>@> zrO$RwA&-XL@Iv>8+T2BT6k?ThQq__G+Uu)E%3&97Vzq|eIS4FdS3i{_N1h_{%jz!B zsbjUd)9!6P*52vSU)#Bo#XB{0dbg7g6GilWX`NmUZk4BJime3~vt1r<CgrXvt))Wk zu8HK<w8po?b-xJb<kz;wfHqR?hJ2e=c)E^6X+_6v*U7PKkBlFO>0EBry>-h<D=-Fu zXE}A(Tq4Ngh4wz?$3Si(ban8kSl)DXm#lod^8>eMw!3&OEqrb*a5`$;EA+3Mw0h&t zXJL)}AEEGE>{(ID;MUaXKu9$p>ETZr(OpfhRZLQr2a#6zw^2@ucCxb>0w*;1Y^bm4 zlOuT4Yf(+XD>Xvial3=T-0%BVq9<@1YOz$&z0tfqx^Xp0wkc*?00INL9Y@l=dCP?= zD-fuZDkc=%YwlG`gH%LrVNgd(AWEqqN(Lvv19DU@NFJq3g;dBTkgBziRSPIvgbV^H z(GJnzvgmp$lvP!c0)gs@fpRDwp#u%j6#~?NOBSRE3T~-rz^bW{2=zv7Pa9~r8LJVn z9*Z<ujvr!+g~(za2w`#<DbX5Sjs+EAkpK}=1_VQv(F0Kcl);cWFk}T(0R*Et0cCn2 zk`NQoTo$Eew^b2lJ4&Fp6_qy#VR9>Gf#9ZEi!6m^(I|u}rx5^A2(S)_80aXjK$$6` z2;C_Ps72c&6?xGMRPJVDk0|y%5~CvXBj}g1K|<k1IPFz7xQfVS(<vb?^E+W$70X!F zgxkPQhs*)x?_D+SmLr<v({<U+T1$;JD&Z9FE_EPuK}K7k0V!&;rn-18Ak(P&7Ce?m z*1d|xLD?8sn86c&r`x=-qJx{8$;bO#s(SL(c(=V>_3X;;o1<@xlmkakSexUn{{Uj= zJG*N0yf&ig)ZS`;iqIG3e!qX2to|3=`egi$j~;kpa?*HPN&f(b@A_Al>An8|80+qK zVd9%ib+G>c<+t_);pe&D{qJuV=$~@$8XZ?6i;B%^D@YF{%X*@J!mO&p%8Imw?)C3j z^76S$Ung=|IDg(#>kIVWrReya{oa#q1DMYPx6wuQHN74U`@ILYb3-R?+j)o=cI^Sf ztJ*Z>?^|KlS~yTsRVv1uMv_KNe6M5l{uht>R%@=T-sT;zjPA^)OSsxDh-JK%vC0hY zjr=O(3{F0qbf%<yONS=XUawycw{2vMkLz8r-Jk0Dfb4bXC6@US<!qYyM4(ln+6u2W z-aGWKUyj^;W1sFm+00;Tb3<`v34C{uRDcL4UNv)SI<Gd~zm3it*PF_9dFOE3<NJz7 zw<{xUvR<L%aclWaxQq`gE@@W!hw-&<kB4k$;KwHOIQX#P!NYp^F&36Jjev`Ysa_(w zm)CcG5={#A$*h@pwzk)%e5SRu#b<I@mfhN!udScy*xI|3<75&C2T1mQU3}XDyKr8v z9MQse_i%s1{n3%c;_<LYe#eO)eD->?lPf_5y!?#!(Oaif^XTSqn11T+%>BDs=e}1x zvP~=A=D0@FtBZjSZxi9aMbb<;?7Q9lmvP$p4@(sH-nRIco0>E@y0nzlv=Q-k)zRMd zs~E|#Ff#PX20{Fyz8nea$5U`Aq2ww-)oa5M(~D_kj=vp>jtpcL!J&?{kjCHu0<IO- zo;ojIqjR;NH<Q?y)>f^puNqal&{chD9yYbDuOqVC7PTO=ca#9R?O1Nv*@7y11;=fX ztp&Su(Q>U#a?yg_qJ)Jj)2zbdA`2F_Pm5kdPXe)a9AC_S*zGIqRGE(9yo(3vQZs)k zq-E~-T0p5K-6$8Il1}cLZ(kz!U8SrUTbQk`qPt`gx;9S}fn(a!qnqqI?7Y{j((67= z+WfV&%*Wh6F!NDB+X*XchjqNOGI=<V*UauEzMDz-2J3utSy<mTbas9HiTN$u?tWLZ zbGYnX?-FOSb0m%#Nb1ILqaJ?6*Ou#hRy54+@Vu-h*5&ar%zJB2Y<DJ~aa>(cF|!tu z-Fj5$uZ;yYzo#Fn=|juh8X78e>#BxPyvY}qMwa+;6j4JPxx91HmDHt?8}XRrXfZfB zlp2NU>4zISoan4bRQ4*O4HT(Y0f+%b38Ekfs)8aapkg#YG*xn9Dy0lX5)dY;hN)8_ z!?anbT#-&4R0JFf2dW1Ko1l7xOdhCUV?`Uu(J3m22p*^&g%Icn4ONg5+<^sTLze8S z39Z!x>~FCdso51)rA4S?_9(brh8pxyrRZTE2rfkzu|o?jj8cfH8p<GkC>XT>6+j{c zilPLzp4D(<gk-CRQnuWkXqXenXydIFqRe(@s90MTqqH6fk}a~>06M6>lQse1qQrtA zIw-h50I7hMgaG;kL@#g%A$!~6t_4{p;&(w-S?gLFDl_JokB3JCy0Q$swabVQuvC*$ z<E;fXSmfy%)ri}fWsJ3unVJb6Y7eK9%xF<ZJv~DsSx4}29$~d~D_Ts}cBY<sR-1IH z?&hrPj$?h5MOme2X(XDJoT`-5a@l7qg*lu^Egf|F)^gmBvvAOhTn&Y|^0q5j8&Bnh zqMuk^J>7MV2fy!qTejN+QEu9}e;fAtg2SwH7%~2>GrVVgeu@S8AFf~LPx8m!`fUDN zpn{{fvkn{j4;~w`f}S<1<Mi*1Z`=4Xv7mm606H<g&VhXXZ`E(w_i_H27r0ceW(UDV zRh5)-H>wA-%A~7Uc~<#K_j>)~&C28e<DRj0-=5L+nlICOm!sl)6RXl7AC?B-5*O9c z^Y>h`x|-7Emk>C%Sj}2|eTUw<F!es&%R`p7YvUoaFb`TTt@eS`D6zXVu8P_72A6tl zC(EwH9X_R+>8Dp8^JUVW>$bQIKAq++Cl?(Jc|E7;(Rh8C`J?K3ck<ctaPFIgOabDL z)wT9}HtM)o^;?M1!1w-R07ao6ug1L9_A_cV09G^iI_a|OruIDh>8)PKcGqV7!)%lG zh2t@K(%y1nr_r*1U~T=Mse3s2C&A<7&&B5b&DveXiL;W|B;k&~E+RV0TqdW&+P6ou z*mVm#ckR)P<_F~zti*iI!&~0XBd#u8C81?Fu(o(e^7MC@E$Mo=?>aZWbi)=Wyknd6 z&2-n+%?-Jfmqp4a@ZbR4>-V=^ZkeugW#>rmmwlTyY0*ah<j#IvMT`T}6yhZG!T4?3 zbRUT7wXYsJru%#x*I`{--rq~xnV0&uSxDrHD!Pp_$~A3vXFrQVeBnHPEai<hD(3;8 zmd5s1%_Aid`i%rR?K(4?O$A)XXyLDlnXbBisO$S)^_PzpQ;^G^93_O*pUNOH`uj91 z(d%vFysjR^?&~76;ze3&e|r11@^aF*wgQw3p47`;&f26C(Q?|OUJH6`xz?tu@I^{! zvhS{|(KBT$q*`Qaj@46oAb=>jS~$O){jBci`D2@~fv5F$aSWB275@6r`k&@<Tz2Z# zm-8_p?q88C`E7&mPV~fLA(t&?!fhk8jrS7VMm;%M6ighA9uB698G0Nr`HBAkDVYnm z+urtsmJsL#(X%aY(jt(#zfwf9*KLXUH~#=HUGHK2U$pEXzqP0ib)DSpa|zaujn3s8 zya5ZQo;AyDw%4O8G5-K9Un_0dE!m3d!WJ~TNq<;GOarNV#Ri@$(KxiiPEDR&l<W_Y z@!Won$GYAoC*e0Ob3exP=(GD=e>3+vK2Ipg*fSZKxy8vinh0kxn}|qwF@47ZG&LKq zCi=;?9*Ns6%f8EWG%?@0Ru+db&t+;3pzpC=zhXK5?^ayc8<?uk)V0H?B7tJ?&zoLo zVzRxpePVMd)Edz>($3VoPm;~0!>0~xpf*^|90#|m>#o_jORCV(ZZbsZfE;=#rbG&W zc&He+L<7YDkbnrPs$viU6jH#|Sq_1PLK!%95I-aZ$pQ|d2j+spfgnnU2oeJtq6>=F z5cO99#;aINoCQRUZBR<aB3iK<H5wv!TZ%JLq8MF<A7U!>5L2Qm>@d@G7FimKFwzh? z2o)6!m<(F1h>wX^36pRn?3hf6u@li$SdQ4cq6?AQ)NQhv7htpmY814I#h@C1rdmwP za29PO7>bHzVA{`OD4fB%WJc-*L=SKXh$WB&MLDJcTnbZMfn88hn(PYdsHZL1JyBI( zbwj@ETBTJyuI6iNr@~I!lcMLz)v3`!X#_%!92$JA(@Gw-3do4hC~O+nonJhGuG3H& z(Oo_3dQPm?b;QR|Pg1tZApQ*G<D!C`_gvjZ?6a1zuj*IYvfdIh)>qtHG>tAMje?r| zPXqU<a<TS&u5GQ6bNsQu(&rxrv{Uyl9@W}BdpC0Hx#hW&;+e(g+;$&8S<9xXxG`HE zUy4}|`AhMCSlc}J?2<o2=uhQF)Qo8DY_x~s^p6*H1X6@9pH1HDD<0;u*r{d7*6{Kq zmd4RjzJsdpdt9@Vdt}4g!NuXGGnMwYW#x1q1v0o+nmto3YO5niYLcyDWgF!y-N9aN zR~L8W%Gx}A+1P)|U#0Z#N5%F#y&lvP2&bBr*?nzm=kBd>pTStnBD~1kLm=KiRjzRQ z8OW}#Z9Hdu;4LJI;@c?5Wnt1+Hb%Cd2Cef1SoHqg?>s+q*vkdA%rCq!$OLgbKcA5N zEpD~;QD(YnaGT~ux9b^z$Wol_%x<pw7MdUNmxtN!E9rVyrq3^YKtu-RppT><`j;s6 z?B#Ngxc;nQCB_FarHrWz(~u<7+_i_FU_&hMUb6BR3syrLr2SM?Yr$clYg`W@$o(s( zlQ$8^e%Y?m4f9GIji2;>{<Rs*Yk_a-fCBOXwP-2Lqwxwm-o2Adbgv%QJ(`&Q+4*PN zx0Zd^Yjn)rg~jc=aSt+|)Y;w_b8k3@no4mzo@g4nTP$+9%c1$JgvHI>UB7*im6p)M zEzddb92*IRk$#}^uf*}hxvE)~Wy8e#zr4<WH8xzHc(|hUV1k^bg4`0;2Sz?WTUQqi zj{7I?W1@cBnQhG0^2a@-h65QBS<3$aiJ%&@YJhqW(56+~ce#(cusFW?$A>=V4lv{( zjF3ax?}^PlL$>xUcQxr@cJ;;dz1GUG7@7?6%uOC*k%0PV`COXxxpd~&uiqZQ4ZCNK zIh#Z3HLlazD!%mFGcSR9bX>QxJgQc9rdpQv+;&`Q$(D=|o}!7Dqgb}cz|bh_u^T9} zYAnZ1ml|a|PK%bo7PZ2X4s0NYx5QIX?mI44E8xEC!;E%b<`y)^2)LcFMoA%zGB|(* zbX>kKZ0zPFWgK+sd=7`%vc*|jy_Mcs{=v?{pY6#^GsI~;74lp}51J_(vzq4ZQBZbG zcEWA0W3~C`^Ns%iF|yIxVJ>Bhwyo{pBE)iIA9VJIOz8%k%w+H!sx)2gwmECA9$jwc z$@y*ojj2sOrOnf-3D_9_08EWKCG4%Y_f5z2dt7XOONfJ+G`)B<(V!o4>p63-9Q-=v zl;Y=(MZ}*HO;<jx!j9s2olx#Wt6j2_dnsm9i-wDsZzIw<kEb9#9no}`;>H?eP_FW@ zV(KD-wbcTunL{8Y0G$vD0dr7BTB_u@p^%o<41}}=nq<ULL<$6pke47q)Ke>i`ikWX z)Cy!@AsWG`iDBrf7N{PG39DE^tzim^;1~pjP)%Y9Si{i;sNqDhY8Xv+L4FuE(G_|a z4}uHPL;@}rSiquTBSI+n)F5XznjiuXMPg*(q^lxYeg$eo$$CViHi?iDc2gq6Hio+< zRdOpjbW<YicC=7ihTIN{WvnI<ji{xnaTPi#lL2#Rpb|huM&|$(73FxMsg*gV14I;O zx&d4xI^ysk%(%VZR2lPL)}pjkRUda#y-_L&E>A;Bt!kNAjpi$3F$A7KlhcR?>eX|- zYk5$Vxy7%A&TD1Sv7I#=umfGUTSH{zWASzmW{oo3@jXaugDQTOsjqa~vj%DCNE-v9 zxla{&t{mplx+#{hu3k@7&n=y@@zepLWNh|?b6@vn8pVLg>tro}Z?H($AFwHQxLG>B zukSfT7=Z&`M3---pMko$dF!LgvaJ9UPa6Fzo22ZA4nOqhdRLQ=)=K<e)w=r|N9g@2 z{HWTxY5xF&a&FqbPotYczK`jw`yJvdI8UJ&rlqZ~)ECO%Z_R%9(4VF+M;X$pc_fL1 zS}f&NriAj@JeDg<Zg{M#3o8SIPMfcH1JB6d^5j8x6t1l!m98`uCXN~b)Rp>wPV{_V zW_5RvU?<JQCC*6pTRhdc*dAkOZ$T^BM>*8^gGd2=jVDLX<mp@3+$J9t7>^xeZ)nlC zryFbZxPnRcmDV{gS4t2F_Ye9N!d9ndMQd-}7IzWB98);Ct(rD9uLaE`a6PL#Mzp<M ze{z1ZZr#F9al&ZZ>M_z+&+1dC_ceIEnbJO|r*Uj~mCSye^F}sgt^?gtf9)<ZJ)71R zPS4gOh%R^l@dBoVgVLw3g5Df<W!z)$FAP?8!}Ce=LcnB@funyZfzH$1yK!7smzHKa z&fobr-8l{uPY?9?+yQL2ZY(F-B8=DkXZ;J+ZQ0|vj^aO;J%xg`7ail1H_f$(hR4W5 z1VeHg9CY&6S|rvbwy$Tg_<x)|j^|j+W1k-&kCR$k#z@#$$wY4hoD#*Q2%*=(Yg?8q zeCd+yEXQtT+lZUd#K`KHCu>O;0=vZG9AE8YwOp>2+(xGOMRD7r)(P$+Jh(sAEG-Rg z-<UXZ^4CK`@1b_rgK3<(?a3P5pEs#-4U;Dp_V-+XYrN5yxKe}y#<%+;btgjQsgJt; zo7`g7Mi|Ys+$86zqlXteUWECRdhMpSZE^9Pp0|a(AEIk%tS)qJ9^+B=FRQ_PxZe}m z(;StzZ8TD!Cd+$A8QHA>VF1xbqg*dA3Kf@aM$=U*Nm%MEqIS7r!6RO|ZK#p2ruza3 z_f>MR%jLhGy^SsxFlUK}^w*Aipqrs_B+#E7R}H#XvrVOVh09EGnBSoUkEv$HkXPOQ z8+}SmS1V%+cRj3k?F7RmMw-%{4~17uR%KUgF1MDC98>{u`H$0Dsv(jWh<R3&HKld% zS@?p9!-~{VKZ?a!N+x>T;p-!OzQ+xU-yF|IHfh;h8SR75#UGL5+B9AC+cD0>^seim z5-GBQQA8>x1E>Ya1l0oy^+2c)F%&=!2qQbGRFp6Z1Tbw-1A##q<P=<&L?I&Ks-lu5 zC8kTQ6_5}FtArCm)&YjAhH@~%scJ^Bqd7|0>V{S#gIy72UWVM1Rp>3Y(Gh+deY8Pw zkbnk=(q=N7C?;!YfT=`GjBKfsxtz5s$Q#q}R|s~*>Z+A9ZOQ1XDO+l5N@%lao;xzL zk#ZX|;EJ~$vwEqKVYc8b<*W~d6jB0;kj{7kMMC!jx~Q)!+7-a5Ex;94Ln;>+gIXdp zt}k~?4BLz2;)5>Y`1q=<+3zdW1t~5KYg9^s)9a$KoR~;n;48Tb-jI#^sQoM~u8cNW zT<EQu%IbNN_fQi@8V31SDc#cympRA%LhJJGXVKC)5l4gNXeY~4v8RgGOey6{p~T^0 zkQO{aaOX4dlXE7YMHJSi&U#4?B^yRc%9%ts)Tx%R>b_Mm@_fkc_Oo{0bN<U?c|TxN zZp$O-4(*%uH=dhKW3_0BpUq0Ru2rWEn2wP+o`9}yp9Oq#c-UKy76N{eRrsH&?Vn?J z>AhKwDB8WNdlLD_@65)1a<z5zr}FRI<LrL4)=>ULb^Ic~Qutf`s`^v3UuC~lVT6JW z3J7F|r34SR1-h!NJiWK&ojg~!f#>9Tw{S<o;x|)i8fbR-hU@gcoqTU+yVkMHtPDK} z`+Qg1<Lvp|z1G~yE|JL@6k1BVgO||FSj}EMW^bF`Y5UaMvg_U3W^XOq*+J63i)?S5 z5zv!gQQ!(R7dW0>7mJ=|K98?)vyFqbdy6-5CFO=bNUf!Lc%JsKFmk562Pd7pLgmM$ z_`N)w(l#0L^8<{5w>{sO4qz2^v@UJ58gwKcZ`-Svf7_G2dG96Lv@5@u{e{`KFMn@X zM%bDFGQ|_ATIuGYar;yEwVj#$ov(KZ-9J3Ll6hTekBOGy+O|nw#iWs1h}cYr>7uij zZTmUhHPy>thjRCqalt-sCgxdKJYC*^0~*#r`Og&8{4AiaRj(esSnlXMJHMyxPWQO( zi`id!9$nssS|<`3ElZ2q#xvop9KSA}-xa-ltzyk&dXLO}1}7_t{ePg`rVAk(XKSPQ zm>eo4iNnm&J%+2b>frE<-Hq37#O6sS^&Cs}hW`MFbdiG60Js}eR-FE|skJc}mhO%l zhuuL~+fg(vkd9h_d1=17fHb1xZ&i}I9^kodQqIS^?A$#;#@h9*1k}?);lCw&wXWA& zpOd)ktn8Pz6GJEsk{7eY5(_}&YwQ~PSJe7-%-dg!$@LyNEZTfselqd#PSLwhRqfhk z^Y)IW+HgSjuR7~jTPYe=sfTH}*(;oA6tTT-Q^(4y7BsmS(^ZNj4LVU{VIYjIG;p6i zaS~;|SY=&r6Xv_c81LW_H`I9aU02j^$Aw8;cAXtKt}EkwyIYidZ>%h*f+>JCXnc$= z9}#1?(1Z3aS+8ChA`u(M>ODrYsNz8*-e|Qp`K6AZ2i?{f*9cu0d<1%OME)*oo9)zV z?OksyzXv}X^H=U^uooe>IEf^0KZ+SZ@_VEnS1x@TbB%7b<PU+ZN7zwvm9az5jE_1E z3r3pzQph6^A3vr+4DmXYmM9OZH)+&;3D8}#i_->Yky0qpU6)NHmn>~k#OA?z=)wHE zfD3#oH&$6IJ=ea^V(Q6Ks0OKkl*mc}p+Ja0$QYn!AdScZfl8)3s09PiAY#-2;1EVz zs*3|cjWr3P$W^MaI;_)ys@y@e6{H(lt2s*6q9kioXDOK(RtqeIt765-ZO?+rv|zXP zBCkaSIv}|eM@1E3u^=uKKtZ%X{A;qPk+IcSB@yVflx(*o)fvimTGo|8YAZVQL2Z^J z!DfpQ*?=}vD4mwvdMss9`a{7o7Z4G!xP%cs^av|SFhNpVkSeT28Lub~p;4Q2eWBF` zRn7kTs;t|K<F2SPC%z}|AfY|iEs#`_dhSp{>AVmDlB%W_v5hj`unwC0It^5{WNBq@ zU~5gZgM@FH@<S_|%ZUI+$ASHqE_$_wYgy?ZN@-pjO1L_dBDEv}2^H~HhwiC`!*KF( z;@9I@BU*Iw$s~oO`%_ZKGb0UFYN9m;iy_gh8mO-0<ijcR7aKX%mQmc?KiC-qfcst+ zcI>h5H@w`&m;6tw+)s<OE1OPRJZWzy@}Jnb*1ih%j4ic+wAwaP>I?9m{m(x4_^b6E zy#8Ek<-ETyTzbiO5GQ*6X1aR-1$#X`f0fs#N1NEW<osGzQBnqbw_gKp@2fj5wloq5 z^h8A@L%~rSp*&R>xoCeW+AnVd&C2qw>>iWDw&L)9rv>^yN%B38?_IHrgkmwE0j?hB zv^)2&yT{q{xqGZWGP=hkE@4y^s4TjL{X~p4_c$!lJx0djdm9{#*0yIOaTVL7iqV`y zo?co;r(oLEc=z8Aewya@M(j__KHzOHZlLYUM+yk7$FFoj=wx*oKeD+^_uK4sz8d|k zJO2Qc-MMu6ZQFk+%sru!OO~vz<_?lZ=Mlsnfs1|`_P41w+Zo448{FS7d+)aFuC8qC zo0N&HFAact(aIWW#qpXxq-;W$hWr+DOWXV2H+zn>xt!hMqmsh)j}E)TU2+d&nri1n zUMlvFZp*ft-FjD_eP-Qbx5C&y4$R9x2{cyb{IeZzd2sf&H*<Hbb1Po$!&n;LJ|#5T z=QWMzOh-ESdrJ%h^4TeJv&H~0S`HDC(LmEIn|r`rr!L<PjyFj=y*uQ;&1^nS>;C|@ znJaJ5W3Ry&Dctuxt+_h72R;2{-G^>kCbqL=_%r@t_TE>uvJ=Z^AFFETR$F%uDF<=~ zLrq9sdowz`?)$f*ZycsF2fEf!;`;)4yhq~+KV24PJC&`6xwIC4>LZ*I8cfP)*Hlr? z2WK{mw)0;4{5!F(dsg>tOd;+ULJyYWA5Gr+7d78lUA~{bIX?CF_0JFaFZVmkAmaVB z=)S$^`4&2BFHp6$UTvcdm?3k8cUZOGO;=*J>$1k%J8H7adTOzDX=Slelw9t@c;cwk zE_ZB+y*dTYDTGqnLp*P{xg6o0kA_wqjB>Y&!5$n+%dU~-e<1JeyGGZ$zFl_&@j)ME zWTl!JE=Xe=VRB2_`ny2N{?&^fh@UtA05N|eEiPSaG5)R??hcyU9wv)TE6L%!hqNXJ z_i1-0$lsX`lHa$W!(UyqSuCfrhAWy<wGqh1xzzkks7}dsjckX>{{WVkfyU#uF;1?g zmhETxoL5P^meR)s-TweB{zP{0{{YwQaQKH2R!1z(hC&Ze#=Xz`7kzG+>dtm}N6r4$ z`EzTBv(EgwyR@1Z?mtg^4ZX>g#j>=R<ly={LI^r|E_~YS-Z#f~&sQ1QIJ{1Fdz&1C zUT&Khn%U93G!P9Q+8(-vjtwT=D_px-)--SXKOY4|Z<tfX!2N5c+#0btYZm7V1a;#i zl^rx8bN!g<=FgtPgl=?hB(!p-+Z8Vw`DLRFtd<5y-k?|BH(hkOj&=)@(geFyQZAx_ z4O9++5mW(6AVmNYfv6A*o8YBXPN+~I+MqfF3_<{NPyuR+ZYX7ZsTP@3I8_E3tVFG9 z=!sg@Q9ENqsiTIvtA<u%w<-~K3u3EF@Y<-Y2rcL}LM_J*sw%@{q6r$pf&Dd5ZG`nf zBVbk~Ov`$$GO){EVheFu*P;us*jJ*IUW&q+(Pt|b1*JC8X4bq<`f}9|6FM~y6i(4p z!Y4TuT3LWJM5=RL(xR%ya?YOql@(QEHhhIEsw+0*BcaqF$+^fAUoxuBn)0HxK|*V) zpr<6<kU;6Gf)_aiW!k7gG0YAH?Ji(GX0*_e;0aY*n9F!;J?)Y8A&hh5Fb#ZMH7$Ag zNFQqDwXH1WtS+UR56}qO>v$uF)0FU(wx#ZCgNbWf=c#jb@KROASlK&iSqs|8-rq*9 zd3bO#HM-Q3@im<&YvZc3ZmDJ=yOpjIV<K~0!4@XXqmTfQ=*xqsD?oWGDOmy#<`-{7 zMtt5`6m*7J2|?X_n*{f4&+xOAzyAP{@wfIhW~_VF{^7m@_bfEz`-lCWU*tcrVs~#H z35^VmfC_PATdvy${O{Sh<=gLmuZCkt*zP-a!}8L?NXMr%xhUx%KgMc4kiOTU&1WB3 z(oWBv?Q5O?02ZC8GBiBy;0e;5D8E1Ka{lJ`Y+?1d`1~d_m6nPcE-j=~M&POhx5}(W zE?K{nSF?w^&&cvl_HU8rYHog&`aezay`JxCwzMwAWAEBDp4uTH@Ni>5`oLdvi?hSZ zMl(g)IHED?v>Vf-gTD<O^*AijcY1ZD?6`Qcc{Z?2AdR;zjOobwT7rB$yRVb&?{(JM z-Sv2Mn_^Xd;_o+4fr{e7St6ay2IY`$&_~@X@>=~v*xPQiA2-wC`hL1?x0i2&%<i&6 zV*9f>mZFb)$#L?Kc*q^7b$W&NxVduP`bjW*KbT#`+wy<u*W|PZ7TH}NRx?2214%r( zFQ>)Nw!NP}pMzbyw6R|@dtbjA-}wIkwb^BK!bkN8ILksb4j&A$k7ZZ3a!T;tD>|Uh ze3ilX-YVA9<?nRG9lkB|$lP&rC2y%as{a5}jU;J5cgsp>x@+TOhTdNnmuLP_cW-A( z=Voy?H;^||e`pNwS89;j%R%8qY^>&dT<xsywwgHH8E-3H`Ex*M*BaHXY?Z8XG>Y+Z z?Zx9}J}!IaK90cU<N3eX^FwneZ**Xp>0Z=vGP0go_>PiO&fboyyK9Sz#<wpx?n``* zGXQcIHf?9<9Ak4MH6@X_2fB^bv<E=3HN&O3b24LRd@agDD@2l=ZzFH|ysdt*i2&1y zZh`xPrP}NFQcR=4Wo{tuSfaTG8DrqbMCy`5UJj1ffY)xiaczyIb)0^4Za@0<{{RQN zW38It90rF)_qW;k$+lf3ow(vO*?H@xy0#&Rum#I%^y{kI8&%6@mKz>{V%196^;yWU z)({svOeCRMtxZDq@9wA2vg;$|fBB!pG9LDl_QlVO`i?pQlWR$9C3Ho_oPg2ZR*lwn zb&m+TVe<6QEbg<iJ6Y~*?qj>OmG<{AJDgL*;>j4{)vj#_D>AhDL$?0_=6fbSRA!*e z-7t5iCOEC}R}u=k@sqoNn~%cjZS^vAIyrRLt2Oh+TPbyu$jgw(&imWR++?14$$Q@8 zxh^&O09RpJc-rX1%>&w065+B>#N};rEU)B99N;>%=;8E*HQMX8Qq0UQ=DVKjGkqkC zCJSCp^r2y;8(le5a#v1HTeVGe#Adnj0am%d^rFUVSR6ObY2$I`X2gxwwdPB%Qd&I4 zJhr6h@63zbbzL;FTrqA|^g4ySvS$zwGJxB%2SBP22{k~)1Z4t1$7BFNQmH5s1a?3O z7>y7Q5}>?|QdTl>DzyZyYO}j3V{WTxu^UiYjf-q9!vkGJ7oxS(YK1Dr*lm53S!ypw zZAxiWRklG&X+;HwMMM$^&`8*-sw8X`R7~4%V$%uZwXZ}MVza0oR7KcqYfTVdhQggF zrq>F!9iJ78a@Mme4T^$`HMtIB(PoIA-6*UONT{hZ(Ul42;#Fatb9YLGp_6reN{&h_ zW8CB^T~S##IURRFnLa|jP*Ixxx>Z$Febq%Og1nQUh0`d3bcm+qT@gS=s1T{p0^)W6 zR-|gCM`MAs7T7zXbni%9G(k`*OQt-XLO+BqTim)ve6ol=N41vL_g60gkD6CG?{jqK z05lXM!3rCUyKU!^DZlk7=4h5ESsS4T)C7VgYnXg`IWR!?*P`CyFvj0bIIQfL)>gbn zpwmjwR+aEu)3R0zT)^G{(P<f%boHD9<+E`b1;71hJCBsNu~=s=rZG!%Jg~AWdsth} zS!8p|sL(b54N1@}Y_aT@areFCo~xqA;o=}slR5WuSHZ!Bv9yn2D-AGmnEd<y04hv` zGCjm<Er1*U05LRJmle}l)-_~-{-dLPIW^RG5k`_Js0;b0F4@~__TTY-vssN}SG#~8 zFYpi#zmbpZ4_~14wf;~2ubJ#$=Kd?TpWV0ED8D(p>tAM7fx5sYLlsai_*F(OT>ev+ zw}Hcv<X!Fk+=s!gKT`cCr1<{J=q}NAI$p%FeolC;EzO)Xo@cd<Yr{0v#0vdu?Qy<- z^DNste7;zp=(vmglvSX)iUSq9`f_ZunA$<{Zi{!DN%3*<tr6LM?EQbFHJ`%!%W&_p z&IjvQzRtgUQ%ZvCwtKqLH@a*U%&h>L+P(?)9YbATu}kde)Y7|1W*4|gW@{v4XSWva zWXyC=5;v1bEO-W*t~{E}^|n1+SH{O37~^F_u!IVGm%`iE!|!R!mou8i5?^s-;|#{N zq1@M~S=Wyan{49E`)!Y<a13%gX&yH}&(V80UM@xkUiZ_G;~r+W5`JW}$MF}tdbIp( zr%=9^4!L~pZLrU5cQ~&~{>pO%$NQ_>N4OUe(XVL)dy4mIb+Zo^(#rI1()s=K3kJb& zm6e&hX40+5jyDB^aLE`N=O5+@%_OXOS6h4Ezal&4+{fM+ulRZQbZhc4v+}u}i{yjh zceUYW^tju);(R+X^SIn^$zSQ8GJ7kz8QeJOZkuZ!KCO}SM<6biH%iUh!KR#s^jo{z z7{(p1dt>pv&)V?!?`gc;;xjOM(=sYK&3S2Si64ol%KG>#E=P!V?qcV+EbPS07g%f8 z&24jTYop_JIWoIwc1v;G##>qZ18tjSoyY$Gt>W$`h{bp}fbuN#<o+KrNshC#dT-WS z_dScYCx+(287cXk17vUUG*RDb`kY*|c|LLSy{;R_$!EhZuHVw*RM^#Rk}``PE{hG3 zw9|DwRXlI00dm?R`x!tN4U-82bXaOb(t#_i2^v*Kqs0FJ<|DNyy|<6JA|9k-5exLM z2QZR8uvTlVe5ZM8`*)b+8V!n@G^AU{RfQ(QEz^V%H=M5ri+n&8BrR&2A~v%ya(Hz& zT1AF`a$D>{P>N9aC<Fq@YxuQOUdpl#i$XVmcU-{-yarA_C>=+CBbRM^Gx2GM2Q)dm z9YXCK!goYFP!b0&(F0Wj6GQ@BfvZ#uRSZ!=vqDfL40b>z10YB*Qi%hAwE;D&Q4=w$ z#%fsO)o5CVA7X;!Fx3Wyy}c-CgHqlKiY7?E4Y#osdMkYt78?i%BoPHftb(ShqIm87 zi%}Nhw64J!T8_uqg49+6!5LnH!)+9`SK_hIXt8!#78`BEcr4}8Odrzw6i_=v5J+gH zRcT}cTB{LC;^ClmT2Cfr&EOlAuNHF1y2t@t_f)lyd6E@0D9mEr<Z4c;HI^;a{{Wck zpv{{2les}gTbiBFKxXjO1ZGDR5jsMRBjlo&B8ox86cPuTYe2Gxjq-^HqT<K6hKDzQ zF{X(}cV{1^kB;5Vb8T$w?((-_Y48Ta3j@EJv|PR|*Bx~vjg8mRQM26w%WyVqWCHX3 zhMp}wYPQLo_DO;lF@ySxYT37~8#b}K=<_uOkIXO|-kDZ6;eqf%-*k5IwM}P1%1JAm zCW^Ne-&ebl-9YFP4`BZQmwan3F7mg}V@#2lVr;b32ei4(2f*mDRy~(4&rReH3RQF2 zxaKY(JO#lY-pa;A4?rF(_O5$eOMc7#4%~C|M6$wtSqbRkYxJ+?7dB=3=`knVlfK*| z?Vi@QCV<}8U-V?3+P_ok^x^y;8=8MIee0Hws{vn|<nH@A_E-*BQF1^Ia;OK$c&%zN zGViQs>0Z7kn~~)G;z?_OsN7T#4!Ul3-F}PG_&!gt`X}X%3mFb89dmRWlDf6Gjyri| zXmoHjtrTnxbz0ABs9b%E>g%oBzh{SgJ`UHo=4<SETx6Sym4La1S=$hHp9{H>O8AB7 z*Na_yM+<As&v;?P?v7lvay_~`gwA*bbOp7qzpCrwK1rH5ySl^FBGWF$$-6+CiPPBn z1)a3l<ldFvT3_4UV&InT#zswM=RRP0kVQ2I$5qPCogHQT&Qj{uI0USX!Oa|l96Eur z@bYnHKA#UGmb#cZwLSo!@>iB|y_a_(ma>L&=;n+$yhuM$Y5M}}u8%(^&NnA5y_C<z zWEuL4W;&42lPqA0waq8uXgwFNNsiAB_vWbtryVS;Wbqq0__~r%HNu+mZ^R$%YVUXQ z?(=x!{foH#U+ZObm>hM^S<;Z-)A`y#KgCbYXWQbpuO`*b>#XYZ3@6DinH|8uE}^#V z+c`xX&JE^UO^+(P{Y!oyHf@gQ3;zHwJ%QWcUw1x1*$E>d#iibibsHKDewET|BN=uW z498>RE<fSU)U^Kq(WW9Si(zOs&`m8wQWrhd<soSY>q`fne9HM(e~-ML*AN8umvjEQ z*4|FDw0WBw_vGg8*J$Ob)-!G#ziedx0O46bPjL*gVDd7Xd+SSp;>cwqMz*8MdVp5; znC!ZD%hqvNm@Teb1Oy8k;MZ7PYevmVnBF>b8k6FtoA_2ab@P`kh8Zn+MI%cjVWWZ4 zi|EazeEfLPGFjx5IirXhqRZ87*Mc%Ab*7~qGa4BCrpoS3Jcr^dk0j`=rkaZQuO`b9 zR8eJ3%7Ge}04`MWR=u>d$=b_~zm2lnT{OoicC-!z2M+=&rWS7av%EV}EN(+1g~(3J z9F8jDNaK!hS|x-#%JxWf^ER3tJPO6`^lNh*4aI}l^2WWiso3bITg6_)+cwfsdnBwc zZj2nY3$Gm4zFhXtXJ+hX6S=J0=}Qf!MxJIkhD9my4%w1>{J%<VtoSCma9M0!#y;ux zkJ3m<YujCqyezh$VR&r_uU!VJP$iN%oPiD<7F7P6&5S&>(CkRj5g#`@LM!YE<CR&4 zDn#J@<nrs_y6LVXme;84p6&(*ZxNtZO!i%>;AuLMy6D09s2KxPAOdx&1YKPa2{b^f zq5(xEC}jeuK&lV|1W+;rpwXpP;4sxuBV($u6GtAjRTg50TB<I?4SFEZwzhVfAk(+C z&}gExptb^<Akc=~cp$Xc00CGgWB~L-DcNjKMR1m^MQgU2twhS?He~D(mW92E@Ij#t zIGuu)i*aN4(xGDRNVLmPIt7m=rlSzkMJ;aza{wBsAd$c#;Z{ii)~itzZY~-XX4YNZ z_-Hg+nx<J7c^xz>UM5(#c|U5HWs7x_)a$ug824EMdi6>&ZZAnB0#*z&rnn^Tixl5E z2UEI@L@tu00tUMwgAjavgjk8ez?Bp#1lsjb8$hLcphmRO1&m~7Tj*LvKzAy5@zf8k zOIAC}<7@gH)ugjaYWCaMVOet438SNlx|s0=uAnVE$vRPUYiAvKi@m>duCb1e^48s~ zfsKk@4~?zStu2><B-W;t-EEo-TsI86b|)bd?S@3M048aSiCZII8;2@a&d@aIRI4J- ze_Z;V<(+vRZ`aDwJ*=aDa?~*7<Z&(~X0-!U4^#;UzyAQsU6?pLo#7weUkJhf07nyl z>0I_$^xUK_xVbPh;*r6l>FT-G^^8v7iLl*S+A@@E(K3Un4%GcC&(F3r+wQ;M^l|>F z_oA2%PyT0pTCe8ww0^qJ@KX7V@%kRuw_)T&?sW#I`>-oP(SDanXAS$G8r<@&*h^b* zf5S}|=XUP;(yg{avZLmrqjSolH^_L=YgA(8U-@NvxSoDU^8W4t&2@Iz>0hyai_^Uy zE7*@+`B8nC%=V5h&I`$LmT*ELxVVFhuIGCR1+l&0h*;moJkI(T+vB;9pS;FC*P~;5 zL$$4C{ZI7BF7Ao*U0(xxaO2|XE(^_l)C;_M>t6c}VUUTix;DV(e|02GY<zx(fD3(! zjw3sOlF`m?O4=){cM=;b;$x#D+~9brV_LWHFj_;}_Li2hG8h`mh6vbb(0IApd&pR` zqpa@7^#qnt%T7L{3#s5p*LBB|J$zeraJLiDt`5?bX(vIaA-~WUlIr&5RxD;qH6V`{ zX)Wn-_+n`zQ`O%OUlrG0I^n-0jV646&F9?Nv(rO{jjaGkA6tOatAXL<_iDRo>)Cp| zd-G+zWAeY`=VUZXmXu_!S~)rQG73~~KolQZ?~QeEw`$aH&0g5X!s~9)u!+$`cyfh} zWNkZni$JK?+PUxSO=n0>JojbiyPv&parXB%nW*ibktR58Jr>6U9~l*h$T>K?wcOh6 zl%CFJS^ciBC+=LgaoSE`?#bqoHuGzxo}jQlKwcT~fN4T1y6d`KUBq@@(mqz=?AT?N z^SQ4-Su>%N(Jr@vlwjm_YaP$(s<Qmj$EtQ6(C*IDZ))d1Cn1b$TV*#Q_qr&BBXD^h zX(Oc_PMV$8^{m}l_x-zTm6m%M%y!whS;q1=4sp*LO#`Nepidd!lW6uGh+SpNIKs9j z?&A+|aM@Vj`e|EH8=PMxZExR-Kr1XwKY62@e(<KNTVl*HE3BQ3$y+do32!22C}pUn z#9qQQE(yoU;n9w6DZJ0cm?rY^283=`z2KErX<pY<f=7y2mgT#Mabzv&T}bM&W6`H) zMFiu3US0KXDZNVj7d$1{#o8g7hDj(iD|1m<_XKLS`)bF`VLN*~=D#<Mw8=>r;>X-Z z9N^y$Ullw6SN7VL$2)WKx8;QTyS8j={4J5E{Pg{$^4sReyZJBjwpRZDxZ4-{Ii+v! zTAW(1mdrcPlK%iMp#<95T*Ko_myz~`e``;YURvcc-zj@pkAI~t<0ILT`hfBF@*<?G z{+CM3=B`fr<)#(~mql}QDYqihK9!5>>pM3&E6y@D6Ifr%ZsSu7gaSuTYVmKb9-VGu zLJJq%Sj1a(Ckheix`Z{=)CJdFC6cjr!Uy9X&86F^33$HK_ddifwzwbsQS~I(Z<_f+ zwzQF#9<$^Q6rmm|HM#1SXu3FoO0JG!aTG-XI-rf)pkxDGRZ=FX89=I~44_B_10YpE z$Qr5zR2spnrV%R{RdAN3V+ClcEW;H}%9vh)*psptY1`UYqJ|ol)^yw^RjF@iC^SKS z8&TB-sO{;|Q!6aCtu#bgj@!T@Wo|1|wGY&_D>Zf-5=hZ9jSG7Nri$dtPTIsYE_-gW zF2`-h!D8)~NvO<Ys><Lcts5YT!~_-QcxcrXpFO~6I)$kjw+ySR_Ou$1w>4($#JtK4 zXjbN|u<tU5T~@F$Z!*5s20hkK+Jh?M`1L`ZJ>fN?mXS(Zf_mz*-WA^=DNG=H>Q-$q z8iJWw1lLfeRQ!Q=f$>a*AnUq<0^ku%Ql>#Q>VmCw>UL72ce1R1U72KJrmkathZ>)- z6^)vat(uTtVQu0vM`<19#J5)y7MGt%=Cv&w4qidxq*}(c7>lXHU+b7>F0+C;LnCX8 z+BqFLA1kO!x)VikiTht6d~;Sf_}Cz~ZSA}-jqiNsu9>W$^?acFLqb{6V+Xq@GxtVn zKx!Y6yCDAn{pSzdrd5zZR3r=Cst4&(iI>oyBfF2Z`)9C3`P{vpHS^zGyvIC%NI>G& zo&Y)8k7DO*ZEK&OpDpp1R}<R0`!_p5Yz(x6gjGMsDR0)X<Cdn_b6D?~xqkf5v6#F= zF?M#&7ZY7w$mz>lQUxPuXf7w)rt2H<`D=B(tiybK{x>n!x_7ucmb|wecGqne!{7b6 z!{H{Msy+JsTYUAM6g&Cw`rWNPlep_Qs9Js?#<$9A(~(WNcj4D*w_C0-+~e1iX=TP* zR!=U3le>vJf6%`x&%d80+hZPAFS(?|!qZ*`=8KJui`8$6f;YaqAdSvcW941>XW6>- zad&avJkPszj!$-r^gf;J`98$%^uLg|^}!1h$<B$z>|;eqYn?;(uczwrXP0drUt>?@ z>$kz}*3G#dQW*zYImOPWxvS{Mg08YB*ID)c7{xx)sA-@tW1}*);lhQoMhi&l3RR5% z0O|2sz{nzN8xO1HYY8H<)xUdDy3KUf^=7xVC3TZ!zsSXnwGH#U0mupvc|GJczfoN5 zcbt}XVw;bZI42iaTU_@|^Bv}rDBW<t<64(WLv7kBd{xG=ug|kPGxK-2vC~V9#bNER z!UM(bnpVg~MRtI2Iv$G~b7P|G!8_XF`-8tTHzAJA=B^@S+`lf#gagOgKv>s(s_m|^ z&*IzKnakM2#$x(M9VT-Nz&-|_4O5eod}6UR*1L>W64CO0s!VOhJUzwEeA7o2K=RNv zgwsK&a`A7r)3dI#TX9`<_<qv2?ODZ*)NZ(B?Y+5xN-G^(=(xGmcMx={`M$TY%eMDd ztCx#edtzbc8Em#H<+66}UdrP49QL2dcQ;+b8>-PIy!4|r(vLJdFTcgDe7;O&rQC4j zyK5bV#afB-));#xGF#&R07l?Xa7^4Bz{x!@))usM(R(Dz&y`G8e-UYO2XR_vGPe1Q zQ=2%mxqNasiqM8Q=_GChiVfP5+0)=zGWNX879TV_PRqS}Xucecp)%X?E{=A~2|lD` z$6a)&{6Sf9Q+Va9JGM-<u*7#|t8eZ<y^iL>IU3gnABdgcnWtKhFVeb7=Y{KRteBY_ zGjBg#h<OqV_Oyq<;%E$^qOEr=Jw^^LKN~^SE*fgxT?yVUBQ5nF1E%!NV|Y3VS?@de zFGsJ-j+N#1ICIt~wt%}@@~*zc>v-gBTQo+|LG-S5>DRMDDM$fw+f`X))!lNsrVi<J zI;7QNw3AeBy3JKt@_Th%CaS3{;iS~7(Ga@eZ&j7bw6_%$3pr0FP2|Ig)GbKoZd}Gq z%yo9^yAnAppk)f>v!l#A(;Pog+r|O;gM<7zH)HgL;^x<@(Z_l*aWe4rEnIYP<llJR zXNzxxTg1~+lskpiu@v7*&?o}5C<~GXCa4&mr~sOv7ab_7g#u7Alp<)LYJ>}rK*$*b zAY!0o2?pz1RoRs6kD{g);kPHHP-t7)nvE11R`zZ^IwnTNt(UO|mA#qpP-wwuK-p1x zD_RXg6=pkX>=i}0tq)ODOIKjAF6l&O)%Y>SqeXBuV6dST3pqvjtwTW3X6)S6J7MFs z78{UG0Bnkk&>*iX_tgw3O*>n;RV`)R-?gBct<4#=g?p7~2UXH)#jbkyEkjDJ^hOQl zTjJFQE#6R&bx~Ot83K1bR9rLWyd_MSQ<CGCRLc0PK2mzDwS-Q6MH1CS=ar49gt(2? zazlq`u0w|@ko8Q0FQ`;RMO9LvS-@qWRV~)4QPg(hX0pTNaxgdZnFPWw=9KyjHR;Ej zo%Aeib6bl&=L@3FT6UeYo5vAlYGfd2Wik4)y~n7Hj;IQ2Qn>r8mdiU0xpQN;q;|E? z`E{?o=B_Jjy58O_z3*<-xPhQYl)tyTlnuRT-b2UG=GW;8R-=i(oAntByMSsXxS8Pi zhf3r7)?-y%s)B|It|Spa(<F}QI(yE_WNO>?>!cN)aNp$|ziksBU4SA-0U?o%*nve@ z%H5}K#0Ybl$eykm{c2%y(~lP%bQA)f#aVh!V`HMT!upLAH&VIII}+A;Tl>&-8jS&^ z4!-4^K21u>&e|J~(OkDtV=JBMjkvr}(R{D0@n?qZ9{&KQ?~Y6~VYw`XF~1j5zYP68 zaGEEVP`H!tSle1=)uw$vLgwiX>ZoQSbBBu5Trx6dvAKG9uU9SJZ{1+<e;p4+`VUg} ze6M16bw4Pwl4Gr`=e4U_8FOTBSGSSpUbJ3+YuMX^+PmlP`<*!WXD<dG^6v5NJbZD! z?<;K=tOMhKKh%@Lo}7H#K9%~tId$Jzw7oA^!sOEHw~g-;L*DqwhdVnQwc|eP;m2I@ zck-7twO98wpB6DkCwXJzZ#%0Dt)qIrY<<NCytS^PpS!QksVJ>8_-xcp7@M}<Nei0k zVvIOS&pT*c8-rXHrqcGUNrtnqm`lc-hGrNhFucacT{sAvO+^FT8C5eImay|3@!NKQ zTjA~@ylX1S?XBT2f`fX@(do6r=~&;EN28B}eY?jwcY*9a@f5I?xSX`jacp$}nzouW zo)7vcxnCW-H~F;g<#V4euCNUk7kJm_TNx#fXbx+6P*k%@00QH*+gDv~yE#d_^8J|> zV(`|ij@~y0Toy(_X*v-`@Sq;mHM1RA+g5%<C7QXp7qDa<74UIq^tmT#5>rYu-ahP~ zYU!+S+Aem5<|600;;;^q%3Phb#xEgbD@$Q>?qeamS_yLqcoga3MAMF3-pudIan+fP zbeZhtGqo;kV#P|!mPc<B1F6J3dd)78$CX&Z=9Bk=^l7AU+O#tr*KvK_ISkwq`gYec z%M5a~k;)ESV?JUT@P?63a__In$%A_wx2$FDz++xzdm3PG761h*-{!4V$s?@!S@S~g z<^KS4!;Qat-`m*_E<vtw{IK6EXN|P@qjfoWf~~__$F6+L?IKwu*t@4%W3z>&)4<}` z`9I9i;@W;pwdwb@S6b(Wb{^Ju_RQ9}yQjr{i{%9J#?aXtw=h`lTsgO0ed#G;+wnKH zZ}hAqY;&={s2J+f2^j4?TSp&($7e_Io%G#lJ2Y?^mS3_+TntlNKhv5wjxJ;W01JWG zuV)7)W-oV-n~%e+__{b{1ZqV(5vu95>c+c7?VX@iOf{4L08sSKlpt=i`*}QsauGeX zuBW1(ws|YdcEBrDxeq9-CF?-Yg{ChfKI0<5b#PO~i@QF2#9;hFi&INiH9~yr2F?pt zjjpV#ywgZNaiLC;aKOIHG=t^~7iQ#hc?^qPR@HK~sT`(x?7Os<9q2hX#-mlkl4aLh zhYBtX6Ny39hnLgUd2@>I-K8w8aOBfgkx+f>(HyK*E~!K^1yl{H1WExwB~>y8QiQSv z+n{6#K$QxqkjNUU20)N>@xo5ayAg65XA`n3O4`VhG(o9tWONi!aM!i5+fIrYYTH@U zqNW-!S<|A3zX4Aqu-g@;n<_5DX<mw^S7Nd?*%H<GarNklYewH4PKjzS#bnlzP_cGd z7TW_`vdeQ*meEGA7f>L9?*nuc=9~{=7o$Gn`Ha@9b5?H5OWd#(^DdJ|J6z^NEn1FC zq=@G4vc%WSlwn=vNhH+<HO@iAlgUi0HfzTk>a%L$Mr)T7N~z@56`vtJRLO)+aIT4# zfahwU5_+uKB5~Db(G#^%NF6APgM+Fii37AmHC4!ZtCbKS=$Q(NhUr7G(Mqn`*43j6 zV~Z^HKdN8bLnM5Q3!{m{o}-|aQBb*MwtsWp*k5O|`6%U<E3B;Yh|Aa>8EqT=78v+Z z-<!YyD14*Zte8sY=E2@V?@5L$i3>xT*dz{pIUl;}KA?irr$wx@T}R7dDDJFfmD?Q* zwl_}5LCvI4GA9X|Ke8I({HkqmvA{6CN)QX2@>~GcrNp1!q+421Vdf1Fy7Cu%G5znQ z2F10Uc2?XX91F<h<Eny2lgX?fc+phK=Mlz(N|jhl!Ndw6A_;MIH|T@Y@lgJk8EFSt z;bnSiMM?`L+Mj9&-Z?ji;?ZN5kIzf5*y+W+*J)B)<0O45=8Y>&*Wj<y_wv1@%k?+e z)<(Ua1@aO3jy34kt<R;~@yj3UV_FW?F4yx9_Cmk-kKx$=0AGG_VD@{CwVIyBwP*hT z5&S!UV*dcIzc{aP+A}n1BggYHzrAwX>3I3NPj*)`nC;uhSa`Xzdp;BPtFNiHwSUy> zURmAtmoPEq@sUoWU44t|dfHjt;pf_1w!T>7@$JFKHdMamIV5?D9|O!`;5*`)KzVEU zLVMeB@$ctnmFdx+UT?m>GUHdR_P=vmVJ?I)*jd=v5l1r07DV=c7a`|&_KNcG{bOm# zo=GmBXT$J!<@#j0eoWf**smFL3oe;(9~`X(vX_BT?<e=K)p6cE^_y!ajro7g@b=ej zZZ_#eCOgG2C$9&J{e&)_6XeEjRj>Ir87^D{CSx7OdJa^jN0{n$Qfno2jx*+NDl3^I zxsl$dt7{}s#7U!n8RJ?K?u3mO9!$MF72|H7BW(Eb?ve0Y22qfcMu#?x<OuQKRp8{W zqom75(YG-UAeXVmu8I1$N^3#4y>Q!_$9;J7-P&OL+cS=1VUhm;uC?3r_a?3aw4)?C z{cC!AmUm;5)0eXLPY>8V_`?OmU5UuQ!1^*5d&iaI-n|o-kAJb{-;0w^wmj>-{!I5C zI_g{eWMd<3B^=`xl2(*1E!o?2U3AxNdv%T*<7@V?BEfeA4Y#<yV;ymfk~yp<c|WO% z(6~G>I8v=Vbq-tdnRC2%;_2qbM~BaM2XaR<&9*)X?`)b2Uf86_HjwZhX8?UePjc-y zjyG4I^R_N!#iLsI=ckue@RXffQ(Xxaqe9kMy0sy<H+{E!_P3MmXO3~kwGq5<Gz8Z| zJQcU9U=ibA3=_{RalQ6X8-gTo4&Z1&1oeMWMK1kYx_(T(>*Wr6{vz#W_Re-cTF!XO zY@~C!@DASH&ikdiu$?KVg5I^qeMM*wYIlLfW&l5{h(!(Sv=?wU;PrnM#9Mn>yIr#! z<il7=8*e}1i?=zhj+5bU+R)(>4vmfE^whPZVh;NyxFpLbIxSyxUpG8&a9KuVZ>DHx zg_@Se^Q5eB)V1Df?5w?Vmsw^nW{tLLC&b5>ibw<4cI3~+Pkx8Muc5`aoP5q*ZkM2E z?g+sxYxE1Z?baosi#KlJtLS>vr-dz|mp2nOAdZ9-oOG6{&D@Nkp;z|l)s=JHLtik} zZ}#Mi;>Wq}8j^W^sc{>cvaUOTfk5i4ZOGmk)AtAQu6u6VGUq->K5uH}cWVrLtl=d2 zmpfMso1C$6Cz9uDQZpyME;XvnTsf?WG0x)AMmX2&UTx#PwKb&W@o+zL_AZ=PF`cJW z%cCTSZb%!F0o<TYC<RqAlqD?;O%x1GP%;FdRa7#8AQTA#LEFJ<Ty|a9jazFSMv7Xk zi(3OxqGekaxc#(HYg<@Snsh~JLtqC)7ooEDBP;OPdlf45Hb$ExEgO7&X`*E-MjH?S z(Pr#OxX1%W)LFH;s!kv%)Cr&!K@5@sstU5)G%JF$E^pe}>$0<2&D#uX?89479J<XM z?%8wqxvj@7mr1H+&fn%u51D9SUgfHEaoItEcad=?%%!6$d*>SJvujc_<+*VitobjB ztK}zhrK^N5c`9YB0KAnlVBbo{K$BF+VrUZ487nzZ5}6E*LiVA72XsucV1ZP@ARuT^ z6+*cOXBnRED1fMQg-5VzmaKY1DP@0-<U>uSIrnln{m)p-DI>wgi~(|uI5{|3$t}&y zl1Y-dER073155<zLCBvm0CDQkuH|nfJ<K@&0O@71L;9(4a?)`#$>7;FeFG>9L-hCZ zJyD#ueq3H%4BKUSY&P*(-^~;Z9$G_XE1c?*T|rtkXKu?G{k?^b!p1A9n_H>lYwC62 z(kcKRG~HFPE8_L8TH0w^lhqR^yYk2wHegW73qk7LSEOT?(t09Ri(6Aq1*S*)kWXb3 zt}h^fYGsv;A4`RP#2%vX8vY|@`Di_ergrFv=9kfqM-xESlV5OB$%T%$2@SBZh2}Pw zxs5Jy)YOWV!g1?6Nbl!<Zj#N-8#D@d3N7Ut_U_Y7DyQPlj7N~lyB&3J50nXkp?M9f z`2ZR}5vHmyjB4C!-E~Vd-MP`qXW)&|xR!&V=(%mCx4d+l*NJ!B5w()hw9x7|9_5eN z(><`&<hWsW1hcZzOM4bI@(G_wC9kH&lU-Uhc@^1wPpa_i=PunPp9j(Ue=gn_*Soto zS#Eg$0943b-07@PN%~m6hQ>Kl-sSMQeVsMGlaE~d_L+Sxcy8aTYyJ%kMkfc0owAH< z7qO3y8^=p5X1kv=jUDX^Ucc7;jxF<?>+;7>?oLmqadJ#!7w4CKkH!4A%tixoHg<Ou zse#4tyaBx)ByB+aOZFb0)HuD5)B3(o&-)&p+&8ahD~0dQ(~G{O?Jm@}ySTJ`Qa0-; ze~^*5*j*T`f)-o{dX5`ZI0tmmdoAkcC0faR!@~Dpa>aqfTF*RK>vytzwA^90c@z&3 zG2@f?8UgsaE_-b)!?zU2Rvu#k8{8e~ic#Ug&C-<)72Gc$v8H=IhZiJNx5dkDPoz1s z@H^V`vEOC!`K6Di$F!?cS~5r-!$R75UA+OS@a@TGXSYo=+)TA&Z9tW#>fCBgc)maF zA22^c?WaBXx$na>(l&d4E1kq!@UXf$YXEr&E`f8H4(%U(qxgdMaeKS#K5^jX^>w%9 zS{Vy&!tc0$L79Z&@1)U$ztbf3;VWp@{VU(a?s4zawS4|xUwwYq$;$k{%V2C-9yq@1 z(T?6RcM)r5d=`QJi(b=KxKd4gXcwz&+0o|K>z=PNo428s?*8WQ)5py-369bd))vmn z2A8$Oaclnf6*RVVskXAG?fXm6%iAmV#~e2{ZiX|;K0Mg&O`u^eq1RKY?>ezHQiBhd z^d^PvYiQ6Rd3z0ign~^$>Fip;tjw{if`_>9j<v{QuFg98*l;wFj%fkhxX99Yy|n1H zWxbsGJ*Bfl^G~zH)3z&K;>VFA+Z)4!E*d<NvYLiY2A&I~&KzzWlvzxT^`*m0OK&ht zKD=){C24brdjW2|4LLXKTbk#)Imcwy9m8ecmL~_3Ew;|u{(d^;qM_y?$Pa7ULhZ@N zB+PQxeDtXQ09E?fu3(UUlObsH`s;pzS5OJ#r`((G0kKn$f7`iT^qWU9cbmAkmDcn5 zB#7~N_Ky!@`qP`rW#GD5RsR6uH;U2JR&pnZ;_gWve9~wJfnVG_Rj2M3Yv)q(H8p0> z+zvZEa=eS;&YLvi4P13xuI<fKCd?nivv+UBLR_&s6^pi7@lu~8=T}m(lL}H^Io(ZG zYf92i<GEQ8Ipn1<seZ#GA;WeZeZ_O+jq6nHB;z}3e6RAA&rX%SyELl35yl&m20+z7 zkO?ZOs(~p&SpwxKWnfi6)leluP$U9@AV@t<*2`tuvfH%B*P@Etv&U_snHv_^;3=YH zX+dL6f~wGl%h-vP=xj%VBJ4I>Xo;4D7GA|Xk$x+7v}zV^%}A6q0JD~gpl+xMBxn^u zR$G7tdMkmQb$-THrCF`1c4A)UTHTzw>!X$0x!e5U9K6e<iCpFWZlL*<7#Ep>N!12D z&P~p!s$^u`-nqo<MJ*YV+|=%~Yf>o5F+El-YD5lxw5pY<5xK=c1ez(8GQtur3{b(2 z$N;y+Km`DkMJrIb6jN00s$k*7CQKiaWWmGHkq1<2sMhVPM_y!^8$KcfS<}q($M>mf z$6tMU=;M30x}%|pTwCGstdLatZ6Yxz8u&!w2U@K5ZNs1SD_7*7=9c1Deuz6>T!$$n zE;{~SDgt+LT9FXpE}*u*Yc9=f?#Jn_tED5Bjr9-myI-LyVbXS-?Zx+2Mhm9b^qA}W z7-Jh3%Fjildn)Stl&cz3`8=axphUG^$_kgx?}XG3qf|y+)V!p8og7cpqTwbjzE{Y8 z`J$;;+or0rLBg~nsw;1_Eyc!m3W|$%x?*}%Xg_KW@a_olH9+p@p@l4{F0i^Iq(q;r z58Fj5$6<z&mXQwzfUxN4EFZ`q+qXL?tIdijOH7Pw%MDmu(BjkLDh&#PS^gC=u4_0y zDc?%VapHaa&&!wGP}{Qu<+F)p(;RgZYvZT|d>^fTsrNpo(|=8O*Ex(%G_{!v$Zec{ z7+mVf?-8&UeT(yx*5%~=8r`2>^J%R7*9a%c{{UFBn%5BqWXUs2BfGN4+&HkFpt-I3 z*Q?h0SF@)i+UYExJ)_Od?{M92zFmIm;jg}4_k&&PNnw+{j=vPPvxyCQ(awL;zg?#+ zlk`n~>mL(sdj7nn`DbkmvtC)`p$6j4<?%i_0joHgaV>V<<>=OZm||a()#mNoJ@vN_ z(?-c2Jg;j*dJqLgDMD7a)vb1CVY?qagprb8<b$GPgI#M6H}VCib0?STUO(BndiCUu z`7GGl7VWwE04vSS!z<gv%Y}JhXlQAmb4Qiu?wSw|i{tZfSJdL>l}N<b6D`g4ymPpJ zdfrVYpNq<Bygn8^8*e@bfHoJ0#g?`&8$E&H{_63nvh5r<#rQgGXKpvS;d~Q13FT{f zexe$RkK<_o6YUGh%k5t*N1vB{c&2Z~%1xc_zQoB-WoaqMSu}CBvy}6IxSf3Zxr7dZ zeXpl`yIpgao7wgB+pKH5G1$H96K#8*$YO7$JQ!{~tu7yeM(Q>EOYdpyYqx&ym$x0) zvodd$7rnoix6R<C7uH;yCWYVL2;2z#x>c_Ys@2yWs!h7}dHv;!@i+2YT#&-~Pp4MW zUId+qJ_`9dap~6#Tlk^3vXk`JExU#}#JcG_3#!5%)4eOY^l<Hmi<e%D9hKjg{gd1f zX03^mHjvBfdiiF7=gtqcyN?Cx&R%IS_P*|t(#qmK_rv~vKO++vk`1P@I8;CRqvR{% z7A5Mqd34V>oaOb+tB8g>Ij-$xVWmA@AUUVRRdxN$$sGJ~n!jP)4(_O<xMSN7b7NVf zkCa`+1qg5-jiX-!s&Z<xWI3}QYR%aUb4zZmiEQw@Nh&pPaPexKT)s6qHOq~5OuON6 zBig;*S$Vu@KdL#RgsYPXq{)&Fr&TV-6<>bpEM=(`WxaV>wW$>)ym9KXxJ2pCipt>; zl##jsFZQSekW>v&fE`DNMt<{1Q)Z(j;INh*3v~KHUTvLPP`}iPuLM`Gye~$VG0SO+ zDut#>s2ZUHssY^;l*mbt#L+;+)j-O?$8`cgkR%OM41pj>J>tt7T4=hXe#;r4(MmTh zF|-3j8n9#b(LsJ25#Xr14T$heqVzUi#K^f7plH}E-Haz}VWDMYJplG2KzxC{Q5EF4 zYPeQ?&HGplNLrfO#o3F0nvH^huDa;wc5_(__%*ASNidmnclp9bj{8=I1@2&))yfPz zteGc&YMB{x-?`hAy9#n$8k(IJZp$L9vvTUQmawBE>QuF4Lg!Sh+R#laRWcZWQ9|LO z09XkEC>aA41a1f;H7L|76jOju2?QfKDkDeP69f*r?bTLYk6^T0PW+sJ5o#YWF3?sM z7c?H8XYp#yZ&;e)wzB-b#@JlVEtI)jt>#ANSsEqc%QiL=TwBDojV^Z|F6w2f=PxWS zvaevqIy<N>;UXAgcNek-nuEelF7}%4<z;1;ab<UGDRpl&ZEz&KwxEN(9bP0;+NkV% zebHaQ%)9IQw?f-VolPC+{4x(~nZ!HV6c_IH^7Rx0_9)FOk}UE3N5nvA{iLcn>!+yG zM$!`%v`r^cIUjngt+iG|N}V)43X1Bx77xt4xj%8Oh#zS+KVqoscLUyvCu|T@$N~K) zAo6t(v^V=wvcIunx2$y7r_u<)=+LGbbh!6z?ND!9J7gMgtf=PrR#naB>SJ*Cqi+}Q z!TECgLEl9ZxzCpNwz8YaZ)bZg%)ojOA5K{aX!xFf276no`QK6S*3Gt_RqFLTww6nd zuT;k5VZ}xpg|M{70xQZWL*+i#$nfVl`)a-ivGp!n`hP3xar!)c@8+vd?mYD4&ybwZ z?AZt(P@?%9p652*_OEunw;Z3Q3;M=lHa14y+_B6x4)tB7HSt}))N*+Dt2lJeY4CYJ zYtJKoVs|_<xXB~$pF5mRr_`aZ+P`b`&P%_qrq{jI`QK|#9$lx}^}AU=DZUM%Bi_D) zgP^`+eJ@*0eHlKz57@chuA1!4m9)@&Bv6ldE&a=m+C3WXp>*yn^%`rZFR`YJ$;-i) zuaBD!4)-%-X>%kpPainm=DDDmTn$f!D863awrk%x;u~({vwhTXLek?S!)i!x#A)!h zu35gJdEK@TxSwqdvc)L0d~75-XBhoQP*OI=32`UIeEwgiO|Dx108uRJsgumZa~0&a z?_?KHL@po9QIYb{mlI8Wp?xn`)A5*}2alJRHOljfNh6Bo&MmlmNuEzLUg70&uigfg z8!uM&>m2l%uS16!lkK|*FFQ*w`sT|Ko?8i>&84GSHH4DN(v%Cq>HFK=u4At+7PfX% zyzef|&xox1s?=FaGee=gb1N4k_e71=r`}iSbmZ4=@11nI+{Y)}Un?Bg?r(c)cH|+t zj*Ve+c>oU~Nd|{~m!fOh<-*^bc~$+MLmxY>axlKyVOqr~EhomE7j0|Hwy#V1ecp^1 zt6U~(K<f*a9AvI}t6{hRKH10kW{t(C+?w>btG8K}H+N(2a90xHT~@;I<6|M$lRhWF z<My>l(y@Cu$gifhxQ_1HLk#e{n;zeY5#vstE7@*ihA~~XGd41;8A}#{lYyc;+Yo8% z#t+2L0xPG~yxZxAU2a(&$72kU4DKkIEiO%EXcR1PG<8SaApA{TIJd_}H`n6kjN0nz zgSWYQT!87Ru~LZLF{bKetRZ}a^-)m0<wXHCP&Gn`V(KUuydYx#00aU}evMMBQodm3 zB^ych6~k_hn$y|J8cQp_-t^(yt}1O7xdq*fACe)e6v~}4hD@m)6a!QUnxzb&NEo0< z5(I!yBnbjR^);3+L89o5+e~FCrieA|>_Dc7G$FFoXtPDwY{!DAw;ioIC@eN6v@GRt zPNPv#IpArsE>KHw8aD{d*`INdV*%7HO<B7!FLP~ZG;-}UV(jN~J;6$jUux+!!a0nG za8|x$M>%<$F0Bo8L5p>i<@c2GR#f-ycI7;gLTjq(3eDMKtL_}*#O$!v5xPWc2;U}( zELVH0vXlVTK<K7Gow5K}2?J3AB8UasAdSiZq9}tw-BTx^8X=Q71Vm~nBSz3_b{eA& z+ZAlfZqT@V&Z91!Z3Mg2$0Vj%K=zi!Po-w}bk!GkHfxcL#l+a{DPY;I8!Nb$30~>n zT^vJs5a)dewTRb3*_jo!=cR3D!g;3jobcx}K<POa@*44LJ*dhX$r*>ed=^IOjc^Z! zKUg)KUTV+)8qwN)2(H%JCqru#ayN_k0`X72b#;7AQ4CwkVeHisspaMKvLJo|$d7t5 z#gKZlGB3tJqBh#4TpQ7%lvR|y6=cnzB#p+%JFd{T^sxS^_@|ZcKIZvH)kGUz0tY1q zeqwGo`<TD)SsQ=-W~^6DT|PL{HjfPvr%#U}i!^UrJ7gNR?%8Eh%kZMP%-8pB`c_+b z&wYSdAUhChqE{E#GRVx8+%Ux@%+kG{lu<XEi6HC_ojRH?ne{JT^4W;?dVKRqa`hOn zozFOHC%m!2RDX0qyt&uKt@5<{7lU7=aeQvueceC5;_bK8cmDv}Bx+lHyS}&q*BQ+1 z-FFt2thbNo^0)S{M!!qqpZrq&^~-O2m*cngEgzO{;zMscg}eEkBM5Gqk~!-^>|MX{ z+GF}!vpwEV`m4lk^0;e0{{YKnFqiXYET?m0j#=4Di5|v=zmrFUg#o6k=z82!k4dba zGJG64IWGHMt<A3T+rGUx=_QT8VbGo~>HUS?)@65?j_ktsP8N6L<Sd@T7Dsgy)M;ay zY7J^@pzv8~T7KcgF~N+vZN!xymjHCfN7rb_x5XVY&YJ$|(U-wxD`O&o^N|p(2-{bE z)z22SHtO??>{iemoyfL{*IZ+|eMuve$qoRGc!lS@PekSD$G~1?vUw=%E!ZH9;JN<* zrek3(^3|u7r+%xR{8)>w`K{Tr*vmM@mvFM;87<xmAdW#0d1-Y?oxr+Eow%+uiMz<N zgYJxd)%k-Pjr|i0QWi?``D;d+Mqd3KDr-g8PA5IN6m9c&H&(LVTybselQK!7JWN6t z)q;!w2;N-U*TG`x)ze+q-;t8u^C4wrGoo$8VfNAT^xnys(KCG~*H9Wr4XWk)Ghc&$ zxo^d10h#AuaoIZv?<|Yyc<H2$2f*zBr>J=BYf4pjymGVWhE69Xdxf=|Cx*#BHd@`A zY3&IPjqtlhNElA-_AdNZ&W>F2S(e@3cj9s}iyr;Ohy<dny=yBI+I0>Dd?kAH+E<T# zY*3r!<)pT^l6J+{^*n9!S?XH0M*6IC9m$W4-5e@K9JTRt_%v-_XWrevJ`#B(mj3`4 zOfgS45i|b)Ole0Jd3{KJ7t=yDTD@G}O_hS<9e*XI%S$JX-f=_bHPE)2)7-jo?bE9p z#rrrPftEa`PT|&afL{%qR5Qp3)1OG#e~VSSbJ3a6ziE<&{s}U+3^bQarabCFr8%{| zNpH~adgFD)ZfxeWc*fYu%bR2BSX}v`c-DaZ(pRI8e}k6VGMs6;=)^`{MH)o;Ds({` zoU)<hq8pNcOZ8Pl%Tx?qMJQbAkViQ6A#fje%suO$CcPWgLMb>pyBgQs;<$FMjS%oa zK02>lxp6-rq8B9s=6p~&dI986E=U(73z7xNK)E1QK#{Bx7&0<Q9TpNbhuW5y%?68Z zZD=eu(MmKSvZVzS7bCT&u>|dbty9Pof+{ySH3ey|8q_?Qw^=4e2&&Z8&uy4jxwg0O zF4I<RbD0j|6d*ZoS%h;r4&eBQE~`VGzRo$^sN@(Ic~a`t%33n6GA=a$toaHOUR7tw zwP##8-BCd4Yp06JqI0RLiXL@KKsn1f5jfRVG6b_iRs^U^0U%1im7+H+(HTe@v_PtX zazHL}fE?s(kUJRZBxG&Wy}$vs<yL2RcPvs~e?aY92NNz<@zXh!;y5sfW2rqnt}7AI zi{9A?Z?o6-Sdix0Lw;?`S}6C3c*PhW!aX_$`09mWWS-bdvG9=M9$$9$n(~{Y2k^)K zbybYD`+DBrHp@@cI+Nkw$gquNgLaRh!6@s=BocKbl25eiqEvC{OOI3g6=tySXZ0p~ z{7N+tSjXz$HQ)C@xk#Hewsm|~nM=eL)!I=2*0rzDgVHfjew!a{2jGdI`_G&AptcYv z9-b)%CVom7+4$v&pZ=pt#dVIiA0-1qE2gx#juvx}&@9orjk|{ARwq`9D{kFEEUxmR zxy+@+GjfVIhrCv;ul*XVk1OtM25UAYINLYP7!Lf&2!=CGoSm=I69R|J90T#!SJrt^ z`dfxQzpV6Sjqj1J0nBNVCpa~Mgj5FtdaiqGt?Rd9Jw875?JN^bwVaT#@#tc+jL!c6 zZzo0#PrR)1dwOd=82jXJULCgSjH+II<i%S|EseFwl+d-3m|>+wL95(I)5I<sdzX2g zWd8vA{{Zye^}KpsiqU-Sf>)7gh`qh0hxG1bgIx_=7#m7d9aP)h#QfJu{mzrr+V<-4 zMq_ckz2CE2cI~ajj91XM>KiPhnD;_l;vMITyxI=S(d%>T%dOj6FWlqJ#kU>C-5tHt zGJ_i|_cyF;aRx|jts)V}<#S0T?k<1qUc23l;oElCX7;3*X5}QZZRO@e)iOzPOn^Cq zN;Baf+6z7_<g&=w1-WIsZH0{oNSY%Ww!1ciqA!ylC6~onx<=hyLleV~mChWra5^=$ zCv>ai^3LMOLhH+iz)Rwq)>zn0MNDpMssW{bCCc}7n=0GMkil7-3p-Cz^7cBuP~+;g zr^*c@4iWOL1zfS?HoaXY*ICg%O3NW6Huo2|P}?{V!udlQ7#_gz2R?2*oyb#ut34*z z#!GHHt6MtDA9l&kN?Xgg4>1#BaDl!)qn<~X`9j^8>mxHCHFsp-lIrcYkvK-!NSNJA z>PSQm^&IF)4IajV4vUW5cNuoqd7gznRNgYu>=w@fhzTQo9mVky&&-Xwu+#4oT2*6d zmr1el_fq7Ev%0MCO*8GBXQSm|;C(UA?@`nPmrkjyU8_1PNhXb^+01*PaMPa(y1KO2 zP;0YYr-JLQ*y!iKU3z@oCBJ!HTXDtZtcFIz(`#EBo5n^qhOHp(YPb7x$1BNYU$nKv z*-ItoZChl-w*jt+w)~<N?;G)R{H3ny(@?r;mmTo4g~E4cHr5M#b*wf{f=^srT}jSo zJerW;&n+Ac3hO&K)V=G7xWBaj0E&BkqT4BE9@n#obC_vIvX0WNK4{N^mp=q}^s>z9 z3+_XNlX;7tNiY5`M{`}*eK(s&J)+JtC2@zlW!;|b_~ZMpY2B_JK~}~yhgx4{ePHXm zKxM{Vn%zOW?d3bj2i<q#3y$3#Wz2GUJ1H^O1{XV=Z}UMg)vj+!FGif1j(1!$-z`Z# zD?&FtWdqKr2Bko`AO|^RKwm@))Ii>#K)p{e@cZ84iy89|PEy|uz01vABF((T%q{#Y zw-((nn``k+&27xRL|+pbHBdjOjTbaZZ&4X9Q3CZ4F_8m_5Emp5$rQODT#*mTs2n1a z54$b8D$7nCkXwtQg2>rr309FgRacc|HfG%Hx@h9(vORv4+9Q|9b@wg7%-`<hqn*C^ zoT9L9`k>37;6X}Xg+`*Q)=>+Q&?_nuvV=POkwD$bP%c>xHd=v>>V{dN)dHwX0S%Bk z2;PDu2};xpw?w8yGB*H$9gn#M`%m|sm-<2b7DuCY=l=l6J+=P;kc0mK9qKgTEPwYL z{{Z>df8)JhfmoLx-p}uU`O9AhT_<CIw_SgsQjW9keE}mi8^5}L@~Vz@UBAP{M&e9I z`$YcWq-SQ2Ri;z@)B?|m2d78<*!TY6fQHBuw)#Rr%H96}v|s-K`-^{UYYvX*9kadv z0KI0cYGyy(@c#g%{p!W74$l7oZ@>O{{{YQUch=iAWm4ULa{mD3Kd}|UWB&l&R^RB~ z`xZ#&JLCP$FZv_<7XAtGd8cB3?QY}$0L~x$Fub0}cTP7`+du9W{{V-I{GYx3S@*}@ z;Qcki-GA<fe?R{KPDT2Er~d#$@vn*O{{T~O!R%K50PF+#2kc*l)4lv(t@ympy1)KW zv;P40kN&A&tN#FPe?tENp8o)Y;C)~EpZ2=z{{a2JasGl|^H<({y}P{&vHt+}wWs<? zzs*!~-Twgo=y&*i(y-fx>_7IYf1Cb=v6J4P@6-N{f84q5-l=Z)z4yca0EQPXCb>H^ zGC%G^{PrKRRo8!q-pu_qO6UEG<Np9J{{YkrT%FkC?BjC(0PQmS*PgpA_MiLB-^f=z zyFDCk!q5Hdb^idIvi*%*XLo;sji>w4U*~`M#cnxl>^o=uu>Sz1Ke2jsdG>lN9|IS8 z+2`0!_!<0+{h?XeilJ}+0Q-ORkbj#hM0huG{{Xw){{Wtw{N$a|vt`-e%s*oEYUJws z2W+?cBmV$~S3TE74F3T8mmTkN&Yj!Y%$=8d<Q0k;$Q*2dI--Th0H9)k9F0RAij=DN zpWlCBzp--PyIS@uUytZo;`p_DEDeIw2UH3KvJwP=!UTbxx&#m#P!a^R639p#DjiY( E*-XAdWB>pF literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/orbit/03.jpg b/libraries/foundation-6/docs/assets/img/orbit/03.jpg new file mode 100755 index 0000000000000000000000000000000000000000..f0a4fb64f59dae03716fb1e4fd683e47f57aee65 GIT binary patch literal 71336 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 MAC#atAZS1T*}~E!egFUf literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/orbit/04.jpg b/libraries/foundation-6/docs/assets/img/orbit/04.jpg new file mode 100755 index 0000000000000000000000000000000000000000..1ae5cf02b1c60ad28502002db508375d94e0f533 GIT binary patch literal 55713 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 KsuqJ#fB)Hw10{q2 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/thumbnail/01.jpg b/libraries/foundation-6/docs/assets/img/thumbnail/01.jpg new file mode 100755 index 0000000000000000000000000000000000000000..c504ed19889580f532c53e809359b76cb405a3d4 GIT binary patch literal 6981 zcmd5=c|6qX_n$GCu`eMZ#w5vZ#yY}GV~LP`Uz%pd&S314t%yX*l2C{!TlOW9t!O5U zQ1&gPEJ-Qc@*92c?cQJa-rwu@=l8r`^LahXIp;a&dEU>N=bXLQd$Rz3oe*~y06<?~ z5&!}GNqZ{*F6}^^XD9#≺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 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/thumbnail/02.jpg b/libraries/foundation-6/docs/assets/img/thumbnail/02.jpg new file mode 100755 index 0000000000000000000000000000000000000000..766fa07163b759c5ad594f6918ab0e27574db6a5 GIT binary patch literal 8554 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 literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/thumbnail/03.jpg b/libraries/foundation-6/docs/assets/img/thumbnail/03.jpg new file mode 100755 index 0000000000000000000000000000000000000000..ff7cbb313f77a4c782ed173b9e4d216b03c657b6 GIT binary patch literal 14493 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 U%$a+6{%<J%U;nN{a=-Y$0CgLv*Z=?k literal 0 HcmV?d00001 diff --git a/libraries/foundation-6/docs/assets/img/yeti.svg b/libraries/foundation-6/docs/assets/img/yeti.svg new file mode 100755 index 00000000..d2735bf9 --- /dev/null +++ b/libraries/foundation-6/docs/assets/img/yeti.svg @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 255.3 214.7" enable-background="new 0 0 255.3 214.7" xml:space="preserve"> +<g> + <path fill="#198DA0" d="M18.7,320c0-7.3,57.4-13.3,109.2-13.3c61.7,0,109.2,5.9,109.2,13.3"/> + <path fill="#198DA0" d="M127.9,333.3c-60.3,0-109.2-5.9-109.2-13.3"/> + <path fill="#198DA0" d="M237.1,320c0,7.3-48.9,13.3-109.2,13.3"/> + <path fill="#EAF7FE" d="M24.6,271.9c0,0,2.6-2.6,4.7-3.4c0,0,2.9,6.8,6.8,12c3.9,5.2,12.7,9.6,17.9,9.6l9.8-0.4 + c-1.2,5.2-3.6,9.7-8.6,9.9l-0.6,0.9c-0.1,0-0.2,0-0.3,0c-0.1,1.5-3.2,1.8-4,2.9c-2.6,3.2-4.5,7.6-5.9,11.6c-1,2.9-0.5,2.9-1.2,5.9 + c-0.2,1-1.2,2-1.6,3c2.8-0.9,10.6-1.6,14.7-1.9l0.1,3.6c0,0,0.7,0.6,1.8,1.1c0,0,0.1,0,0.1,0c0.4,0,0.7,0.1,1.1,0.2 + c6.2-0.6,10.4,0.5,17.6-0.1c1.4-0.2,2.7-0.4,3.9-1.1c0.3-1,0.4-1.1,0.6-2.4c0-0.2,0-0.5,0.1-0.8c0.1,0,0.2,0,0.3-0.1 + c0,0,0.1,0,0.3,0c0,0,0.1,0,0.1,0c0.1,0,0.2,0,0.3,0c0.1,0,0.2,0,0.2,0c1.3-0.1,3.4-0.2,4.7-0.3c4.2,0,9.7,0.5,9.7,0.5 + c0.3-4.7,0.7-12,8.3-33.3l1.9-1.2c0,0,23.4,8.2,45-0.3c1.7,4.2,7.3,18.4,8.1,27.4c0.7,1,0.7,2.4,0.7,3.8c0,1.2,0.1,2.4,0.2,3.6 + c0.8-0.1,3.6-0.5,7.1-0.4c1.3,0.1,3.4,0.2,4.7,0.3c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0,0.3,0c0,0,0.1,0,0.1,0c0.1,0,0.2,0,0.3,0 + c0.1,0,0.2,0,0.3,0.1c0.1,0.3,0.1,0.5,0.1,0.8c0.2,1.3,0.2,1.4,0.6,2.4c0.1,0.1,0.2,0.1,0.3,0.2c3.9-0.5,7.8-0.6,11.7-0.4 + c3.1,0.1,6.1,0.7,9.1,1.3c0,0,0,0.1,0,0.1c0.3,0,0.6,0.1,0.9,0.1c1.6,0.3,3.2,0.6,4.9,0.7c0-2,0-3.8,0-5.4c3.3,0.2,8,0.8,9.9,1.1 + c0.8,0.2,1.4,0.3,2.1,0.4c0.1,0,0.2,0.1,0.3,0.1c0,0,0,0,0,0c0.7,0.2,1.4,0.3,2.4,0.7c-0.1-1.8-0.1-1.7-0.4-3.9 + c-0.2-1.7-1.4-6.9-3.7-9c0,0,2.5,1.1,3.3,1.5c-2.5-3.3-3.7-8.1-11.4-11.4c0,0,1.4-0.7,2.7-0.8c-1.3-0.8-2.4-1.2-3.7-1.1 + c0.5-1.3,2.5-4.6,4.2-5.1c0,0-1.1-0.7-2.8-0.2c-0.6,0.3-1.3,0.7-1.9,1.1c-0.2,0.2-0.6,0-0.6-0.3c-0.5-2-0.9-4-1.2-6.1 + c15.6-0.6,17.7-8.5,17.7-8.5c1.3,1,1.3,3.4,1.3,3.4c6.8-8.8,6-17.7,6-17.7c1.6,0.3,2.9,1.3,2.9,1.3c0.8-13.5-3.4-36.7-3.4-36.7 + c2.1,1,3.4-0.3,3.4-0.3c-2.3-1-2.6-3.6-2.6-3.6c3.4,0.3,3.9-2.9,3.9-2.9c-3.4,0-7-1.6-9.6-13.5c-2.6-12-6.5-24.2-6.5-24.2 + c4.2,0,6.5-1.8,6.5-1.8c-2.9-1.3-9.1-5.7-13.3-11.2c-4.2-5.5-14.8-14.3-14.8-14.3s0-5.7,0-17.7c0-12,7.7-21.3,7.7-21.3 + c-5.2,0-7.7,4.7-7.7,4.7s0-0.3,0-25.2s12.6-36.1,12.6-36.1c-3.9-0.3-6.5,1.6-6.5,1.6c1.8-18.5,7.5-23.9,7.5-23.9 + c-20.8-5.5-32.4,6.8-32.4,6.8c-2.3-11.2,6.8-17.7,6.8-17.7c-10.7-2.3-19.5,0.8-19.5,0.8c0-16.4,6.5-21.8,6.5-21.8"/> + <path fill="#EAF7FE" d="M24.4,246.7l4.4,3.1c0,0-3.4,14-4.2,22.1"/> + <path fill="#EAF7FE" d="M167.7,9.2c-32.5,0-51,24.4-51,24.4c-1.3-10.4,1.6-19.5,1.6-19.5C86.8,27.4,78.5,56.8,78.5,56.8 + c-2.1-4.9-2.3-16.2-2.3-16.2s-13,21.8-15.3,36.9c-2.3,15.1,2.1,58.4,2.1,58.4s-2.1-2.6-6.5-3.1c0,0,4.7,5.2,4.7,16.9 + c0,0-1.8-1.6-4.9-0.8c0,0,4.9,4.4,5.5,12c0,0-5.7,3.9-8.8,7.8c0,0-4.9,0.3-7.5,1c0,0,4.2,2.3,4.9,4.4c0,0-12.2,12.5-18.5,22.6 + c0,0,5.5-3.4,9.4-2.3c0,0-8.6,10.4-11.4,27.6c0,0,4.2-2.1,6-1c0,0-5.2,10.9-5.5,22.4l-5.7,3.4"/> + <path fill="#CDEAF5" d="M81.6,322.4c0,0,0.6-6.6-1.5-11.3c0,0,4.1,0.3,4.7,11C84.8,322.1,81.9,322.4,81.6,322.4z"/> + <path fill="#CDEAF5" d="M61.2,300.2l0-0.2C61.2,300.1,61.2,300.2,61.2,300.2z"/> + <path fill="#CDEAF5" d="M65,321.9C65,321.9,65,321.9,65,321.9c0,0,0-0.1,0-0.1L65,321.9z"/> + <path fill="#CDEAF5" d="M167.7,9.2c-32.5,0-51,24.4-51,24.4c-1.3-10.4,1.6-19.5,1.6-19.5C86.8,27.4,78.5,56.8,78.5,56.8 + c-2.1-4.9-2.3-16.2-2.3-16.2s-13,21.8-15.3,36.9c-2.3,15.1,2.1,58.4,2.1,58.4s-2.1-2.6-6.5-3.1c0,0,4.7,5.2,4.7,16.9 + c0,0-1.8-1.6-4.9-0.8c0,0,4.9,4.4,5.5,12c0,0-5.7,3.9-8.8,7.8c0,0-4.9,0.3-7.5,1c0,0,4.2,2.3,4.9,4.4c0,0-12.2,12.5-18.5,22.6 + c0,0,5.5-3.4,9.4-2.3c0,0-8.6,10.4-11.4,27.6c0,0,4.2-2.1,6-1c0,0-5.2,10.9-5.5,22.4l-5.7,3.4"/> + <path fill="#CDEAF5" d="M24.6,271.9c0,0,2.6-2.6,4.7-3.4c0,0,2.9,6.8,6.8,12c3.9,5.2,12.7,9.6,17.9,9.6l0.7-0.1 + c-0.3,1.8-0.6,3.6-1.1,5.3c-0.1,0.2-0.4,0.4-0.6,0.3c-0.6-0.4-1.2-0.8-1.9-1.1c-1.7-0.6-2.8,0.2-2.8,0.2c1.7,0.4,3.8,3.7,4.2,5.1 + c-1.4-0.1-2.4,0.2-3.7,1.1c1.3,0.2,2.7,0.8,2.7,0.8c-7.7,3.3-8.9,8-11.4,11.4c0.8-0.4,3.3-1.5,3.3-1.5c-2.3,2.1-3.5,7.3-3.7,9 + c-0.2,2.2-0.2,2.2-0.4,3.9c2-0.7,3-0.8,4.7-1.2c2.6-0.4,9.7-1.6,12.3-1.4l-0.4,4.8c0,0,0.1,0,0.1,0c1.3,0,2.4-0.1,3.7-0.2 + c0-1.4,0.1-2.6,0.2-4c-0.1-2.4,0.2-4.5,0.7-6.9c0-0.1,0-0.1,0.1-0.2c1-3.3,2.6-5.1,3.7-6.3c0.4-0.4,0.7-0.8,0.9-1.3 + c0.6-0.9,1.3-2,1.8-3.4c1.1-2.9,0.6-9.3-1.5-15.6c2.3,3.3,4.3,6.1,5.3,7.1l-0.1-8c0,0,4.2,4.2,7.9,7.3c1.8,1.6,4,3.4,5.6,4.2 + c0.1,0.1,0.2,0.1,0.3,0.2l0,0c0,0,0,0,0,0c2.1,1.2,4.3,2.2,6.3,3.6c0.2,0.1,0.4,0.3,0.7,0.4c0.9,0.6,2.6,1.4,4.1,2.2l1.4,16.6 + c1.3-17.5,11.2-34.2,11.2-34.2l-0.4-0.1c-3.1-1-25.6-8.7-38.9-36.6c-0.9-1.8,4.9,2.1,4.9,2.1c-5.5-13.3-7.5-34.6-7.5-34.6 + c1.8,1.6,3.6,1.8,3.6,1.8c-3.9-10.9-5.5-24.4-5.5-36.7c-1-65.8,23.3-80.9,23.3-80.9c-4.2-1.6-8.6-1.4-8.6-1.4 + c4.8-11.6,20.8-27.7,20.8-27.7c-4.3,0.3-21.1,4.8-21.1,4.8c13.9-36.3,28-45.9,28-45.9c-1,8.7,2.3,17.9,2.3,17.9 + c30.2-37.3,54.4-35.6,54.4-35.6c1.8-3.7,3.8-6.3,3.8-6.3"/> + <path fill="#CDEAF5" d="M24.4,246.7l4.4,3.1c0,0-3.4,14-4.2,22.1"/> + <path fill="#CDEAF5" d="M202,322.2c0,0-0.3-9.4-2.4-14.2c0,0,5.6,3.4,5.6,14.3C205.1,322.4,202.3,322.2,202,322.2z"/> + <path fill="#ACDBE3" d="M56.5,273.7c3.7-36.1,4.7-106.6,4.7-106.6c-8,15.8-14.4,44.5-14.4,44.5l1.6,6.2l-3.5-1.6 + c-5.6,19.6-1.8,45.8-0.6,53.2C47.8,272.3,52.1,273.2,56.5,273.7z"/> + <path fill="#ACDBE3" d="M49,272.9c1.1,5.8,2.3,11.3,3.6,17.1c1,0.1,2.1,0.1,2.1,0.1c0.9-3.5,1-8.9,1.7-15.5 + C53.9,274.3,51.3,273.8,49,272.9z"/> + <path fill="#CDEAF5" d="M171.2,304c-0.2,0.1-0.4,0-0.5-0.2c-0.4,0.1-0.7,0.2-0.9,0.2l0,0c5.4-3.9,5.9-8,5.9-8 + c-3.6,1.6-7.3,2.2-9.2,2.4c12.4-10.7,14.5-30.7,14.5-30.7c-5.1,6.2-12.3,11.5-17.9,15l0,0c0,0-3.7,2.1-7.2,3.7 + c-0.2,0-0.3,0-0.4,0.2c-1.8,0.8-3.4,1.5-4.4,1.7c0,0,2.9,5.3,4.1,8.2l-0.2,0.2c0,0,4.2,9.8,5.7,19.3c0.2,1.6,0.3,3,0.4,4.1 + c0.1,1.4,0.2,2.4,0.2,2.4c5.5-0.8,13.3,0,13.3,0c0,0.9,0.5,3,0.5,3.4c2.6-0.4,5.2-0.5,7.9-0.5C182.8,316.1,182.4,300.8,171.2,304z" + /> + <path fill="#85C1CE" d="M56.2,276.5c-8.6-1.5-16.4-11.4-16.4-11.4c6.3,6.7,14.1,7.6,14.1,7.6c1-7.6-5.3-25.1-5.3-25.1 + c4.7,5.8,7.2,12.5,8.6,18L56.2,276.5z"/> + <path fill="#ACDBE3" d="M75.8,263c0,0,6.8,11.9,12.7,17.1c6.4,5.6,12.4,13.5,14.9,18.2c0,0,3.2-7.5,5-10.1 + C108.4,288.3,89.4,282.7,75.8,263z"/> + <path fill="#ACDBE3" d="M164.2,286.3c0.9-1.3,2-2.6,3.1-3.8c1.7-2.1,3.6-4.1,5-6.3c-2.4,1.8-5.2,3.4-7.9,5.1 + c-8.1,5.5-13.7,7-13.7,7c1.8,2.6,5,10.1,5,10.1c1.5-2.9,4.3-6.9,7.7-10.9C163.6,287.1,164,286.7,164.2,286.3z"/> + <path fill="#5C5B5D" d="M73.2,85.1c-0.7,0.1-3.1,0.1-3.1,0.1c-21.4,1.5-37.2-15.1-37.2-15.1s-1.4,13,7.9,24.3 + c9.3,11.4,28.2,13.3,28.2,13.3c0.6,2.7-0.7,8.6-0.7,8.6s5.5-6.1,6.9-17.7C76.2,90.5,73.7,85.1,73.2,85.1"/> + <path fill="#747F83" d="M73.2,85.1c-0.7,0-3.1,0.1-3.1,0.1c-21.4,1.5-37.2-15.1-37.2-15.1s9.8,28.3,42.5,26.1 + C75.4,96.2,76.3,91,73.2,85.1"/> + <path fill="#5C5B5D" d="M180.2,85.1c0.7,0.1,3.1,0.1,3.1,0.1c21.4,1.5,37.2-15.1,37.2-15.1s1.4,13-7.9,24.3 + c-9.3,11.4-28.2,13.3-28.2,13.3c-0.6,2.7,0.7,8.6,0.7,8.6s-5.5-6.1-6.9-17.7C177.3,90.5,179.8,85.1,180.2,85.1"/> + <path fill="#747F83" d="M180.2,85.1c0.7,0,3.1,0.1,3.1,0.1c21.4,1.5,37.2-15.1,37.2-15.1s-9.8,28.3-42.5,26.1 + C178,96.2,177.1,91,180.2,85.1"/> + <path fill="#CDEAF5" d="M62.7,181.1c0,0-15,55.4,0,90.9V181.1z"/> + <path fill="#CDEAF5" d="M215.5,268.7c-7.6,5.8-15.5,6.2-15.5,6.2c-0.4-7.6,7.9-24.2,7.9-24.2c-1.9,1.1-3.4,2.5-4.6,3.9l-0.1-5.6 + l6-4.9l-4.8-3.9l6.1-24.6l-5.9,3.9c0,0-1.8-35-0.5-50.1c0,0-7.4-7.4-11.1-10.4c0,0,0.7,10.8,1.5,28c3.3,13.8,8.5,42.4,2.1,67.5 + c0.1,5.1,0.1,10.3,0.2,15.5c0,0,3.2,11.1,4.2,18.9c0,0,1,0.3,2.6,0l-0.1-11.9C211.5,274.7,215.5,268.7,215.5,268.7z"/> + <ellipse fill="#CDEAF5" cx="151.8" cy="161.5" rx="8.5" ry="10.7"/> + <ellipse fill="#FFFFFF" cx="151.9" cy="158.6" rx="8.3" ry="10.5"/> + <path fill="#4F4E51" d="M149.7,153.2c-0.1,0.3-0.1,0.5-0.1,0.8c0,1.5,1,2.7,2.2,2.7c1.1,0,1.9-1,2.1-2.2c0.7,0.9,1.1,2.1,1.1,3.4 + c0,2.7-1.8,5-4,5c-2.2,0-4-2.2-4-5C147,155.7,148.1,153.9,149.7,153.2z"/> + <ellipse fill="#CDEAF5" cx="111.2" cy="161.5" rx="8.5" ry="10.7"/> + <ellipse fill="#FFFFFF" cx="111.4" cy="158.6" rx="8.3" ry="10.5"/> + <path fill="#4F4E51" d="M110.7,153.2c-0.1,0.3-0.1,0.5-0.1,0.8c0,1.5,1,2.7,2.2,2.7c1.1,0,1.9-1,2.1-2.2c0.7,0.9,1.1,2.1,1.1,3.4 + c0,2.7-1.8,5-4,5c-2.2,0-4-2.2-4-5C108,155.7,109.1,153.9,110.7,153.2z"/> + <path fill="#5C5B5D" d="M180.4,148.6c-3.8-0.6-10.3-1.2-18.2-0.8c-10.3,0.5-19.1,2-24.3,2.8c-1.6,0.3-2.8,0.5-3.7,0.6l-1,0.1 + c-1.2,0.2-1.9,0.3-2.6,0.3c-0.6,0-1.4-0.1-2.6-0.3l-1-0.1c-0.9-0.1-2.2-0.3-3.7-0.6c-5.3-0.9-14.1-2.3-24.3-2.8 + c-7.9-0.4-14.5,0.2-18.2,0.8c0,0-4,0.5-7.5,2l0.7,4.4c0,0,3.6-0.9,7.2-1.3c0.7,6.2,1.9,14.1,1.9,14.1l0,0.2 + c0.1,0.4,0.2,0.8,0.3,1.2c0.7,3.1,1.5,4.9,4.4,6c2.9,1.1,9.7,2.1,16.5,2.4c2.5,0.1,5.4,0,8.4-0.5c4.3-0.6,8.3-1.8,9.8-2.9 + c2.2-1.6,3.3-5.7,4.1-8.3l0.2-0.8c0.3-0.9,0.5-1.9,0.7-2.8c0.3-1.3,0.7-2.7,1-3.2c0.1-0.1,0.3-0.4,1.2-0.5c0.3,0,0.6-0.1,1-0.1 + c0.4,0,0.7,0,1,0.1c1,0.1,1.2,0.4,1.2,0.5c0.3,0.5,0.6,1.9,1,3.2c0.2,0.9,0.5,1.9,0.7,2.8l0.2,0.8c0.8,2.7,1.9,6.7,4.1,8.3 + c1.5,1.1,5.4,2.3,9.8,2.9c2.9,0.4,5.8,0.6,8.4,0.5c6.8-0.4,13.6-1.4,16.5-2.4c2.9-1.1,3.6-2.9,4.4-6c0.1-0.4,0.2-0.8,0.3-1.2l0-0.2 + c0,0,1.3-7.9,1.9-14.1c3.6,0.5,7.2,1.3,7.2,1.3l0.7-4.4C184.4,149.2,180.4,148.6,180.4,148.6z M123.7,158.1L123.7,158.1 + c-0.2,1.5-1.1,8.7-2.6,11.1c-1.5,2.4-2,3-6.5,3.7c-0.2,0-0.4,0.1-0.6,0.1c-4.9,0.7-13.9,0.8-18.9-0.1l-0.3-0.1 + c-5.1-1-6.9-1.4-7.5-3c-0.7-2.2-2.1-12.1-2.2-14.3c-0.1-1.6,1.4-2.4,1.9-2.5c0.3-0.1,0.7-0.1,1.2-0.2c3.6-0.5,11.5-1,15.2-0.9 + c4.7,0.2,16.2,1.8,18.8,3C124,155.9,123.9,156.6,123.7,158.1z M173.8,169.9c-0.5,1.6-2.3,2-7.5,3L166,173c-5,1-14,0.8-18.9,0.1 + c-0.2,0-0.4-0.1-0.6-0.1c-4.6-0.8-5.1-1.4-6.5-3.7c-1.5-2.4-2.4-9.6-2.6-11.1l0-0.1c-0.2-1.5-0.3-2.2,1.7-3.1 + c2.6-1.2,14.1-2.8,18.8-3c3.7-0.2,11.6,0.4,15.2,0.9c0.6,0.1,1,0.2,1.2,0.2c0.4,0.1,1.9,0.9,1.9,2.5 + C175.9,157.8,174.5,167.7,173.8,169.9z"/> + <path fill="#A1D4E9" d="M113.9,137.6c0,0-9.4-4.5-14.8,3.8c0,0-0.6-8.3,7-9.2C113.7,131.3,113.9,137.6,113.9,137.6z"/> + <path fill="#A1D4E9" d="M110.3,125.4c0,0-8.7-4.1-12.7,3.8c0,0-1.3-6.9,4.9-8.6C108.8,119,110.3,125.4,110.3,125.4z"/> + <path fill="#A1D4E9" d="M147.5,142.6c0,0,7.3-3.5,11.5,3c0,0,0.4-6.4-5.5-7.1C147.6,137.8,147.5,142.6,147.5,142.6z"/> + <path fill="#A1D4E9" d="M152.7,131.1c0,0,7.4-1.2,8.7,5.6c0,0,2.5-4.9-1.8-7.5C155.3,126.7,152.7,131.1,152.7,131.1z"/> + <path fill="#B2DEEF" d="M113.2,203.2c0,0,5.2-3.5,8.2-3.9c0,0,0.7,6.5,3.7,9.8c0,0,6.5-5.9,13-6.3c0,0,1.7,3.6,4.4,4.9l0,0 + c1,0.6,2.2,1.2,3.3,1.5c0,0,3.7-2.2,4.8-6.3c0,0,0.4,8.6-5.1,13.4c0,0-4.1-2-7.1-5.3c-0.9-0.9-1.8-1.9-2.3-2.7 + c0,0-9.6,6.8-9.9,10.6c0,0-6.9-6.7-9.3-11.9c0,0-4.6,1.5-5.9,2.4c0,0-3.7-6.1-4.5-11.5C106.5,197.7,111,202,113.2,203.2z"/> + <path fill="#5C5B5D" d="M130.6,186.2c-0.4-0.1,9.7,0.7,19.6,0.3c0,0,0.5-1.9,1.3-2.9c0,0-0.2,3.2,0.7,3.8c0,0-5,2-10,1.9 + c0,0,5.5-0.9,7.3-1.9C149.6,187.5,139.6,188.1,130.6,186.2z"/> +</g> +</svg> diff --git a/libraries/foundation-6/docs/assets/js/docs.buildingBlocks.js b/libraries/foundation-6/docs/assets/js/docs.buildingBlocks.js new file mode 100755 index 00000000..1af9e9df --- /dev/null +++ b/libraries/foundation-6/docs/assets/js/docs.buildingBlocks.js @@ -0,0 +1,27 @@ +// Adds links to Building Blocks from the ZURB library to each component page + +!function() { + +$.ajax({ + url: 'http://zurb.com/library/api/building_blocks/type/buttons', + dataType: 'jsonp', + success: addBuildingBlocks +}); + +function addBuildingBlocks(data) { + var html = ''; + + $.each(data, function() { + html += '<div class="docs-bb"><div class="docs-bb-thumb"><a href="http://zurb.com/building-blocks/'+this.slug+'"><img src="'+this.image_url+'"/></a></div><div class="docs-bb-main"><h3><a href="http://zurb.com/building-blocks/'+this.slug+'">'+this.name+'</a></h3><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor, amet incidunt sint esse nihil eum repellendus necessitatibus officiis iusto reprehenderit, alias laudantium veniam ad. Soluta repellat nemo quaerat quis laboriosam.</p></div></div>'; + }); + + $('[data-building-blocks]').each(function() { + $(this).html(html); + }); + + if ($('[data-building-blocks] .docs-bb').length === 0) { + $('.docs-building-blocks').hide(0); + } +} + +}() \ No newline at end of file diff --git a/libraries/foundation-6/docs/assets/js/docs.examples.js b/libraries/foundation-6/docs/assets/js/docs.examples.js new file mode 100755 index 00000000..7f0ce757 --- /dev/null +++ b/libraries/foundation-6/docs/assets/js/docs.examples.js @@ -0,0 +1,30 @@ +// Code for specific docs examples. + +!function() { + +$('[data-docs-example-ofc]').click(function() { + $('#offCanvasLeft').toggleClass('reveal-for-large'); + $('.sticky').foundation('_calc', true); +}); + +$('[data-docs-example-series]').click(function() { + $('#series-example').addClass('is-animating'); +}); + +var $transitionDemo = $('.docs-transition-demo'); +$('.docs-transitions').change(function() { + var value = $(this).val(); + var method = value.match('-in') ? 'animateIn' : 'animateOut'; + + Foundation.Motion[method]($transitionDemo, value, function() { + $transitionDemo.show(); + }); +}); +var stickyMag = $('#sticky-magellan'); +stickyMag.on('sticky.zf.stuckto:top', function(){ + stickyMag.find('nav').addClass('stuck-mag'); +}).on('sticky.zf.unstuckfrom:top', function(e){ + stickyMag.find('nav').removeClass('stuck-mag'); +}); + +}(); diff --git a/libraries/foundation-6/docs/assets/js/docs.interchangeMap.js b/libraries/foundation-6/docs/assets/js/docs.interchangeMap.js new file mode 100755 index 00000000..f05372cd --- /dev/null +++ b/libraries/foundation-6/docs/assets/js/docs.interchangeMap.js @@ -0,0 +1,45 @@ +!function() { +var loaded = false; +$('#docs-example-interchange').on('replaced.zf.interchange', function() { + if(Foundation.MediaQuery.atLeast('large')){ + if(!loaded){ + $.getScript("https://maps.googleapis.com/maps/api/js?key=AIzaSyBOVwxUM9akvFrSWmmb2iKc7Fe0vjRBY7c&sensor=false&callback=initializeMaps") + .done(function(){ + loaded = true; + }); + }else{ + window.initializeMaps(); + } + } +}); + +window.initializeMaps = function() { + // Basic options for a simple Google Map + // For more options see: https://developers.google.com/maps/documentation/javascript/reference#MapOptions + var mapOptions = { + // How zoomed in you want the map to start at (always required) + zoom: 11, + + // The latitude and longitude to center the map (always required) + center: new google.maps.LatLng(37.2845934,-121.951675), // ZURB HQ + + // How you would like to style the map. + // This is where you would paste any style found on Snazzy Maps. + styles: [{'featureType':'water','stylers':[{'visibility':'on'},{'color':'#acbcc9'}]},{'featureType':'landscape','stylers':[{'color':'#f2e5d4'}]},{'featureType':'road.highway','elementType':'geometry','stylers':[{'color':'#c5c6c6'}]},{'featureType':'road.arterial','elementType':'geometry','stylers':[{'color':'#e4d7c6'}]},{'featureType':'road.local','elementType':'geometry','stylers':[{'color':'#fbfaf7'}]},{'featureType':'poi.park','elementType':'geometry','stylers':[{'color':'#c5dac6'}]},{'featureType':'administrative','stylers':[{'visibility':'on'},{'lightness':33}]},{'featureType':'road'},{'featureType':'poi.park','elementType':'labels','stylers':[{'visibility':'on'},{'lightness':20}]},{},{'featureType':'road','stylers':[{'lightness':20}]}] + }; + + // Get the HTML DOM element that will contain your map + // We are using a div with id="map" seen below in the <body> + var mapElement = document.getElementById('map'); + + // Create the Google Map using out element and options defined above + var map = new google.maps.Map(mapElement, mapOptions); + var markerOptions = { + map: map, + position: {lat: 37.2845934, lng: -121.951675}, + title: 'ZURB HQ' + }; + var marker = new google.maps.Marker(markerOptions); +}; + +}(); diff --git a/libraries/foundation-6/docs/assets/js/docs.js b/libraries/foundation-6/docs/assets/js/docs.js new file mode 100755 index 00000000..af814d63 --- /dev/null +++ b/libraries/foundation-6/docs/assets/js/docs.js @@ -0,0 +1,18 @@ +$(document).foundation(); + +// [TODO] Remove this when possible +$(function() { + // Equalizer test + var counter = 0; + $('#test-eq').on('postEqualized.zf.Equalizer', function() { + counter++; + console.log(counter); + }); + $('#pokemonRed').on('invalid.fndtn.abide', function(e, data) { + console.log(data); + }); +}); + +$(function() { + $('[data-docs-version]').text('v' + Foundation.version); +}); diff --git a/libraries/foundation-6/docs/assets/js/docs.kissmetrics.js b/libraries/foundation-6/docs/assets/js/docs.kissmetrics.js new file mode 100755 index 00000000..1fe846a0 --- /dev/null +++ b/libraries/foundation-6/docs/assets/js/docs.kissmetrics.js @@ -0,0 +1,18 @@ +// Kissmetrics reporting + +!function() { + +var _kmq = _kmq || []; +var _kmk = _kmk || "d945f04ff5e68057c85f5323b46f185efb3826b3"; +function _kms(u){ + setTimeout(function(){ + var d = document, f = d.getElementsByTagName('script')[0], + s = d.createElement('script'); + s.type = 'text/javascript'; s.async = true; s.src = u; + f.parentNode.insertBefore(s, f); + }, 1); +} +_kms('//i.kissmetrics.com/i.js'); +_kms('//doug1izaerwt3.cloudfront.net/' + _kmk + '.1.js'); + +}(); diff --git a/libraries/foundation-6/docs/assets/partials/interchange-default.html b/libraries/foundation-6/docs/assets/partials/interchange-default.html new file mode 100755 index 00000000..553041fa --- /dev/null +++ b/libraries/foundation-6/docs/assets/partials/interchange-default.html @@ -0,0 +1 @@ +<img src="assets/img/interchange/map-small.png" /> diff --git a/libraries/foundation-6/docs/assets/partials/interchange-large.html b/libraries/foundation-6/docs/assets/partials/interchange-large.html new file mode 100755 index 00000000..564bc7e5 --- /dev/null +++ b/libraries/foundation-6/docs/assets/partials/interchange-large.html @@ -0,0 +1,12 @@ +<style type="text/css"> + /* Set a size for our map container, the Google Map will take up 100% of this container */ + #map { + width: 100%; + height: 400px; + } +</style> + +<!-- The element that will contain our Google Map. This is used in both the Javascript and CSS above. --> +<div id="map"> + +</div> diff --git a/libraries/foundation-6/docs/assets/partials/interchange-medium.html b/libraries/foundation-6/docs/assets/partials/interchange-medium.html new file mode 100755 index 00000000..674b9049 --- /dev/null +++ b/libraries/foundation-6/docs/assets/partials/interchange-medium.html @@ -0,0 +1 @@ +<p><img src="assets/img/interchange/map-medium.png" /></p> diff --git a/libraries/foundation-6/docs/assets/partials/sticky-nav.html b/libraries/foundation-6/docs/assets/partials/sticky-nav.html new file mode 100755 index 00000000..5474a46a --- /dev/null +++ b/libraries/foundation-6/docs/assets/partials/sticky-nav.html @@ -0,0 +1,229 @@ +<head> + <!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/foundation/6.1.1/foundation.min.css"> --> + <link href="../css/docs.css" rel="stylesheet" /> + <style> + .title-bar { + width: 100%; + z-index: 10; + transition: height .25s ease; + height: 4.5em; + } + .title-bar .title-bar-right, .title-bar .title-bar-left { + transition: padding-top .25s ease; + padding-top: 1.4em; + } + .title-bar.shrink { + height: 3em; + } + .title-bar.shrink .title-bar-right, .title-bar.shrink .title-bar-left { + padding-top: 0em; + } + .title-bar .dropdown.menu li { + float: left; + } + .title-bar .dropdown.menu .is-dropdown-submenu { + border: none; + background-color: #0A0A0A; + } + #root { + margin-top: 2em; + } + </style> +</head> +<body> + <div data-sticky-container> + <div class="title-bar" data-sticky data-options="marginTop:0;"> + <div class="title-bar-left"> + + <span class="title-bar-title">Sticky Navigation</span> + </div> + <div class="title-bar-right"> + <ul class="dropdown menu align-right" data-dropdown-menu> + <li> + <a>Item 1</a> + <ul class="menu"> + <li><a href="#">Item 1A</a></li> + <li> + <a href="#">Item 1B</a> + <ul class="menu"> + <li><a href="#">Item 1B i</a></li> + <li><a href="#">Item 1B ii</a></li> + <li> + <a href="#">Item 1B iii</a> + <ul class="menu"> + <li><a href="#">Item 1B iii alpha</a></li> + <li><a href="#">Item 1B iii omega</a></li> + </ul> + </li> + <li> + <a href="#">Item 1B iv</a> + <ul class="menu"> + <li><a href="#">Item 1B iv alpha</a></li> + </ul> + </li> + </ul> + </li> + <li><a href="#">Item 1C</a></li> + </ul> + </li> + <li> + <a href="#">Item 2</a> + <ul class="menu"> + <li><a href="#">Item 2A</a></li> + <li><a href="#">Item 2B</a></li> + </ul> + </li> + <li><a href="#">Item 3</a></li> + <li><a href="#">Item 4</a></li> + </ul> + + + </div> + </div> + </div> + + + <div class='column row' id='root'> + <h3 class='text-center'>Creating a sticky Nav Menu with Title Bar, DropdownMenu, and Sticky!</h3> + <div class='callout primary'> + <p class='lead'>It's important to note that sticky requires a bit of developer input to work properly. To create a sticky nav bar like this one, set the nav container width to 100%. It's also important to set the minimum top-anchor point to 1px, otherwise it'll never stick!</p> + <p>Here we're also having a bit of fun with transitions using event triggers from the sticky plugin. When the nav bar becomes sticky, it emits <code>sticky.zf.stuckto:top</code>, which we're listening to. Then we're adding a class to reduce the height and top padding of our nav bar.</p> + </div> + <p> + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Something other than generic lorem here. Make sure to find the You're Special book in your old home before setting out to start your epic Fallout journey... + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, temporibus a reprehenderit, adipisci expedita nam odio neque alias eligendi, consectetur sapiente dicta tenetur perspiciatis. Aspernatur modi provident obcaecati impedit dignissimos. + + </p> + </div> + <script src="../js/vendor.js"></script> + <script src="../js/foundation.js"></script> + <script>$(document).foundation(); + $('.title-bar').on('sticky.zf.stuckto:top', function(){ + $(this).addClass('shrink'); +}).on('sticky.zf.unstuckfrom:top', function(){ + $(this).removeClass('shrink'); +})</script> +</body> diff --git a/libraries/foundation-6/docs/assets/scss/docs.scss b/libraries/foundation-6/docs/assets/scss/docs.scss new file mode 100755 index 00000000..228a3c97 --- /dev/null +++ b/libraries/foundation-6/docs/assets/scss/docs.scss @@ -0,0 +1,27 @@ +// The CSS for the Foundation docs is stored in an external codebase: +// https://github.com/zurb/foundation-docs +// +// You can test Sass changes locally by running these commands: +// git clone https://github.com/zurb/foundation-docs +// npm link ./foundation-docs +// +// Feel free to submit pull requests to foundation-docs like you would Foundation itself! + +@import 'settings/settings'; +@import 'foundation'; +@import 'motion-ui'; + +@include foundation-everything; +@include foundation-flex-classes; +@include foundation-range-input; +@include foundation-progress-element; +@include foundation-meter-element; +@include motion-ui-transitions; + +@import 'foundation-docs'; +@import 'examples/grid'; +@import 'examples/motion-ui'; +@import 'examples/off-canvas'; +@import 'examples/orbit'; +@import 'examples/reveal'; +@import 'examples/top-bar'; diff --git a/libraries/foundation-6/docs/assets/scss/examples/_grid.scss b/libraries/foundation-6/docs/assets/scss/examples/_grid.scss new file mode 100755 index 00000000..d11829d1 --- /dev/null +++ b/libraries/foundation-6/docs/assets/scss/examples/_grid.scss @@ -0,0 +1,77 @@ +// Grid +.row.display { + background: #eee; + font-size: 11px; + margin-bottom: 10px; + line-height: 2rem; + border: solid 1px #c6c6c6; + margin-left: 0 !important; + margin-right: 0 !important; + + .columns { + &:nth-child(2), + &.small-centered, + &.large-centered { + background: darken(#eee, 5%); + } + + &.color-end { + background: darken(#eee, 10%) + } + } +} + +.row.display-end { + background: #fff; + font-size: 11px; + margin-bottom: 10px; + line-height: 2rem; + border: solid 1px #c6c6c6; + margin-left: 0 !important; + margin-right: 0 !important; + + .columns { + background: darken(#eee, 5%); + border-left: 1px solid #c6c6c6; + + &.color-end { + background: darken(#eee, 10%) + } + } +} + +// Flex Grid +[id^="docs-flex"].docs-component .docs-code-live { + @include foundation-flex-grid; + + .row { + background: #f9f9f9; + font-size: 11px; + margin-bottom: 10px; + line-height: 2rem; + border: solid 1px #c6c6c6; + margin-left: 0; + margin-right: 0; + margin-bottom: 1.5rem; + + // Disable clearfix + &::before, + &::after { + display: none; + } + } + + .column, + .columns { + float: none; + width: auto; + margin-right: -1px; // Not sure why this has to be here + + &:nth-child(odd) { + background: #eee; + } + &:nth-child(even) { + background: #ddd; + } + } +} diff --git a/libraries/foundation-6/docs/assets/scss/examples/_motion-ui.scss b/libraries/foundation-6/docs/assets/scss/examples/_motion-ui.scss new file mode 100755 index 00000000..15cc87f7 --- /dev/null +++ b/libraries/foundation-6/docs/assets/scss/examples/_motion-ui.scss @@ -0,0 +1,25 @@ +.docs-transitions { + max-width: 400px; +} + +.docs-transition-demo { + @include thumbnail; + display: block; + max-width: 400px; + margin: 0 auto; + backface-visibility: hidden; +} + +@include mui-series { + #series-example-1 { + @include mui-queue(0.5s, 0s, fade, slide(in, up)); + } + + #series-example-2 { + @include mui-queue(0.5s, 0.5s, fade, spin); + } + + #series-example-3 { + @include mui-queue(0.5s, 0s, fade, hinge(in, bottom)); + } +} diff --git a/libraries/foundation-6/docs/assets/scss/examples/_off-canvas.scss b/libraries/foundation-6/docs/assets/scss/examples/_off-canvas.scss new file mode 100755 index 00000000..0be535bb --- /dev/null +++ b/libraries/foundation-6/docs/assets/scss/examples/_off-canvas.scss @@ -0,0 +1,7 @@ +body > .off-canvas { + padding-top: 2rem; +} + +.docs-example-burger { + @include hamburger; +} diff --git a/libraries/foundation-6/docs/assets/scss/examples/_orbit.scss b/libraries/foundation-6/docs/assets/scss/examples/_orbit.scss new file mode 100755 index 00000000..c5be0586 --- /dev/null +++ b/libraries/foundation-6/docs/assets/scss/examples/_orbit.scss @@ -0,0 +1,22 @@ +// Examples for the Orbit documentation. + +.docs-example-orbit-slide { + padding: 2rem 4rem; + color: $white; + + .orbit-slide:nth-of-type(1) & { + background: dodgerblue; + } + + .orbit-slide:nth-of-type(2) & { + background: rebeccapurple; + } + + .orbit-slide:nth-of-type(3) & { + background: darkgoldenrod; + } + + .orbit-slide:nth-of-type(4) & { + background: lightseagreen; + } +} diff --git a/libraries/foundation-6/docs/assets/scss/examples/_reveal.scss b/libraries/foundation-6/docs/assets/scss/examples/_reveal.scss new file mode 100755 index 00000000..591407af --- /dev/null +++ b/libraries/foundation-6/docs/assets/scss/examples/_reveal.scss @@ -0,0 +1,7 @@ +.docs-example-modal { + display: block; + position: static; + width: 100%; + max-width: none; + margin-bottom: 1rem; +} diff --git a/libraries/foundation-6/docs/assets/scss/examples/_top-bar.scss b/libraries/foundation-6/docs/assets/scss/examples/_top-bar.scss new file mode 100755 index 00000000..8c820684 --- /dev/null +++ b/libraries/foundation-6/docs/assets/scss/examples/_top-bar.scss @@ -0,0 +1,5 @@ +.docs-code-live .top-bar-title strong { + margin-top: 7px; + display: inline-block; + margin-left: 8px; +} diff --git a/libraries/foundation-6/docs/layout/default.html b/libraries/foundation-6/docs/layout/default.html new file mode 100755 index 00000000..08578c16 --- /dev/null +++ b/libraries/foundation-6/docs/layout/default.html @@ -0,0 +1,67 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta name="description" content="{{description}}"> + <link rel="icon" href="assets/img/icons/favicon.ico" type="image/x-icon"> + <title>Foundation for Sites 6 Docs{{#unlesspage 'index'}} | {{title}}{{/unlesspage}}</title> + <link href="assets/css/docs.css" rel="stylesheet" /> + <link href="//cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css" rel="stylesheet"> + <!-- <link rel="stylesheet" href="./node_modules/motion-ui/dist/motion-ui.css" /> --> +</head> +<body> + + <div class="off-canvas-wrapper"><div class="off-canvas-wrapper-inner" data-off-canvas-wrapper> + + {{> off-canvi}} + + <div class="off-canvas-content" data-off-canvas-content> + <!-- Info Banner For Announcements or Links --> + <!-- <a href="http://zurb.com/article/1416/foundation-6-is-here" id="notice"> + <div class="info"> + <h5>Foundation 6 is here!</h5> + </div> + </a> --> + + {{> navigation}} + {{> mobile-navigation}} + + <input type="text" class="docs-search" data-docs-search placeholder="Find a page, component, variable, mixin, function..."> + + <div class="expanded row"> + <div class="medium-9 large-10 medium-push-3 large-push-2 columns"> +{{> body}} + </div> + <div class="medium-3 large-2 medium-pull-9 large-pull-10 columns"> + {{> component-list}} + </div> + </div> + + {{> footer}} + </div> + </div> + + <script> + var _gaq = _gaq || []; + _gaq.push( + ['_setAccount', 'UA-2195009-2'], + ['_trackPageview'], + ['b._setAccount', 'UA-2195009-27'], + ['b._trackPageview'] + ); + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + </script> + + <script src="assets/js/vendor.js"></script> + <script src="assets/js/foundation.js"></script> + <script src="assets/js/docs.js"></script> + <script type="text/javascript" src="https://intercom.zurb.com/scripts/zcom.js"></script> +</body> +</html> diff --git a/libraries/foundation-6/docs/pages/abide.md b/libraries/foundation-6/docs/pages/abide.md new file mode 100755 index 00000000..e2e75b9b --- /dev/null +++ b/libraries/foundation-6/docs/pages/abide.md @@ -0,0 +1,221 @@ +--- +title: Abide +description: Abide is an form validation library that extends the HTML5 validation API with custom validators. +sass: scss/forms/_error.scss +js: js/foundation.abide.js +tags: + - forms + - validation +--- + +### Abide Demo + +These input types create a text field: `text`, `date`, `datetime`, `datetime-local`, `email`, `month`, `number`, `password`, `search`, `tel`, `time`, `url`, and `week`. + +```html_example +<form data-abide novalidate> + <div data-abide-error class="alert callout" style="display: none;"> + <p><i class="fi-alert"></i> There are some errors in your form.</p> + </div> + <div class="row"> + <div class="small-12 columns"> + <label>Number Required + <input type="text" placeholder="1234" aria-describedby="exampleHelpText" required pattern="number"> + <span class="form-error"> + Yo, you had better fill this out, it's required. + </span> + </label> + <p class="help-text" id="exampleHelpText">Here's how you use this input field!</p> + </div> + <div class="small-12 columns"> + <label>Nothing Required! + <input type="text" placeholder="Use me, or don't" aria-describedby="exampleHelpTex" data-abide-ignore> + </label> + <p class="help-text" id="exampleHelpTex">This input is ignored by Abide using `data-abide-ignore`</p> + </div> + <div class="small-12 columns"> + <label>Password Required + <input type="password" id="password" placeholder="yeti4preZ" aria-describedby="exampleHelpText" required > + <span class="form-error"> + I'm required! + </span> + </label> + <p class="help-text" id="exampleHelpText">Enter a password please.</p> + </div> + <div class="small-12 columns"> + <label>Re-enter Password + <input type="password" placeholder="yeti4preZ" aria-describedby="exampleHelpText2" required pattern="alpha_numeric" data-equalto="password"> + <span class="form-error"> + Hey, passwords are supposed to match! + </span> + </label> + <p class="help-text" id="exampleHelpText2">This field is using the `data-equalto="password"` attribute, causing it to match the password field above.</p> + </div> + </div> + <div class="row"> + <div class="medium-6 columns"> + <label>URL Pattern, not required, but throws error if it doesn't match the Regular Expression for a valid URL. + <input type="text" placeholder="http://foundation.zurb.com" pattern="url"> + </label> + </div> + <div class="medium-6 columns"> + <label>European Cars, Choose One, it can't be the blank option. + <select id="select" required> + <option value=""></option> + <option value="volvo">Volvo</option> + <option value="saab">Saab</option> + <option value="mercedes">Mercedes</option> + <option value="audi">Audi</option> + </select> + </label> + </div> + </div> + <div class="row"> + <fieldset class="large-6 columns"> + <legend>Choose Your Favorite, and this is required, so you have to pick one.</legend> + <input type="radio" name="pokemon" value="Red" id="pokemonRed"><label for="pokemonRed">Red</label> + <input type="radio" name="pokemon" value="Blue" id="pokemonBlue" required><label for="pokemonBlue">Blue</label> + <input type="radio" name="pokemon" value="Yellow" id="pokemonYellow"><label for="pokemonYellow">Yellow</label> + </fieldset> + <fieldset class="large-6 columns"> + <legend>Choose Your Favorite - not required, you can leave this one blank.</legend> + <input type="radio" name="pockets" value="Red" id="pocketsRed"><label for="pocketsRed">Red</label> + <input type="radio" name="pockets" value="Blue" id="pocketsBlue"><label for="pocketsBlue">Blue</label> + <input type="radio" name="pockets" value="Yellow" id="pocketsYellow"><label for="pocketsYellow">Yellow</label> + </fieldset> + <fieldset class="large-6 columns"> + <legend>Check these out</legend> + <input id="checkbox1" type="checkbox"><label for="checkbox1">Checkbox 1</label> + <input id="checkbox2" type="checkbox" required><label for="checkbox2">Checkbox 2</label> + <input id="checkbox3" type="checkbox"><label for="checkbox3">Checkbox 3</label> + </fieldset> + </div> + <div class="row"> + <fieldset class="large-6 columns"> + <button class="button" type="submit" value="Submit">Submit</button> + </fieldset> + <fieldset class="large-6 columns"> + <button class="button" type="reset" value="Reset">Reset</button> + </fieldset> + </div> +</form> +``` +--- + +<p> </p> + +<div class="alert callout"> + <p><i class="fi-alert"></i> There are some errors in your form.</p> +</div> + +<label class="is-invalid-label"> + Required Thing + <input type="text" class="is-invalid-input"> + <span class="form-error is-visible"> + Yo, you had better fill this out. + </span> +</label> + +<label class="is-invalid-label"> + Required Thing + <textarea type="text" class="is-invalid-input"></textarea> +</label> + +## Initial State + +```html +<form data-abide> + <!-- Add "display: none" right away --> + <div data-abide-error class="alert callout" style="display: none;"> + <p><i class="fi-alert"></i> There are some errors in your form.</p> + </div> + <label> + Name + <input type="text" required> + <span class="form-error">This field is required.</span> + </label> +</form> +``` + +## Error State + +```html +<form data-abide> + <!-- Add role="alert" --> + <!-- Add "display: block" --> + <div data-abide-error role="alert" class="alert callout" style="display: block;"> + <p><i class="fi-alert"></i> There are some errors in your form.</p> + </div> + <!-- Add "is-invalid-label" --> + <label class="is-invalid-label"> + Name + <!-- Add "is-invalid-input" --> + <input type="text" class="is-invalid-input" required aria-invalid aria-describedby="uuid"> + <!-- Add "is-visible" --> + <span class="form-error is-visible" id="uuid">This field is required.</span> + </label> +</form> +``` +## Event Listener +Setup event listener after foundation is initialized (especially for formvalid/forminvalid). Easier to chain via document selector. +* valid.zf.abide and invalid.zf.abide are field level events, triggered in validateInput function + * ev.target is the DOM field element, + * elem is jQuery selector for field element +* formvalid.zf.abide and forminvalid.zf.abide are form events, triggered in validateForm function + * ev.target is the DOM form element, + * frm is jQuery selector for form element + +```javascript +$(document) + // field element is invalid + .on("invalid.zf.abide", function(ev,elem) { + console.log("Field id "+ev.target.id+" is invalid"); + }) + // field element is valid + .on("valid.zf.abide", function(ev,elem) { + console.log("Field name "+elem.attr('name')+" is valid"); + }) + // form validation failed + .on("forminvalid.zf.abide", function(ev,frm) { + console.log("Form id "+ev.target.id+" is invalid"); + }) + // form validation passed, form will submit if submit event not returned false + .on("formvalid.zf.abide", function(ev,frm) { + console.log("Form id "+frm.attr('id')+" is valid"); + // ajax post form + }) + // to prevent form from submitting upon successful validation + .on("submit", function(ev) { + ev.preventDefault(); + console.log("Submit for form id "+ev.target.id+" intercepted"); + }); +// You can bind field or form event selectively +$("#foo").on("invalid.zf.abide", function(ev,el) { + alert("Input field foo is invalid"); +}); +$("#bar").on("formvalid.zf.abide", function(ev,frm) { + alert("Form is valid, finally!"); + // do something perhaps +}); + ``` +## Adding Custom Pattern and Validator +* Override builtin patterns and validators before foundation is initialized +* Add new patterns and validators before or after foundation is initialized + +```javascript +$(document).foundation(); +Foundation.Abide.defaults.patterns['dashes_only'] = /^[0-9-]*$/; +Foundation.Abide.defaults.validators['greater_than'] = +function($el,required,parent) { + // parameter 1 is jQuery selector + if (!required) return true; + var from = $('#'+$el.attr('data-greater-than')).val(), + to = $el.val(); + return (parseInt(to) > parseInt(from)); +}; +``` +```html +<input id="phone" type="text" pattern="dashes_only" required > +<input id="min" type="number" required > +<input id="max" type="number" data-validator="greater_than" data-greater-than="min" required> +``` diff --git a/libraries/foundation-6/docs/pages/accessibility.md b/libraries/foundation-6/docs/pages/accessibility.md new file mode 100755 index 00000000..33a6528a --- /dev/null +++ b/libraries/foundation-6/docs/pages/accessibility.md @@ -0,0 +1,77 @@ +--- +title: Accessibility +description: Foundation for Sites is a fully-accessible framework. Here are some general guidelines to keep in mind as you make your pages accessible. +--- + +In addition to the accessibility features built into Foundation's components, be sure to follow best practices for making your site more accessible. + +<div class="primary callout"> + <p>Care about accessibility or want to contribute? Submit a Pull Request or get into the [conversation on GitHub](https://github.com/zurb/foundation-sites/labels/accessibility).</p> +</div> + +## Basic Principles + +- **Structure your document properly.** Use the right HTML tags for the job when marking up navigation, lists, links, controls, and so on. +- **Label everything.** If a control or form element has no text label, add one. You can use the [visibility classes](visibility.html#accessibility) to hide labels visually while maintaining accessibility. Use the `alt` attribute on all images to describe what they are. +- **Don't rely on purely visual cues.** The content of a page should make sense even if page is being read to the user, or if the user is colorblind and can't make use of color-based labeling. +- **Make everything usable on a keyboard and mouse.** Lucky for you, all of our components work with keyboards, mice, and touch screens out of the box. + +--- + +## Types of Disabilities + +### Visual + +Visually-impaired users may have low vision or be completely blind. For low vision users, proper typographic contrast is important, both size and color. Foreground colors should stand out from background colors. You can use tools to calculate the contrast ratio of your foreground and background colors. The contrast ratio should at least be 1:4.5 for normal text and 3:1 for large text. +Blind users consume the web by reading it using a [screen reader](http://en.wikipedia.org/wiki/Screen_reader). Screen readers read the content of a web page out loud, or write it out as Braille, using certain queues from the HTML to infer meaning. + +### Motor + +Users with motor disabilities may have trouble using a mouse, or don't use a mouse at all. For this reason, it's very important that your site is fully keyboard-accessible. Visually-impaired users also typically navigate websites using only their keyboard. + +When using only the keyboard, the <kbd>tab</kbd> key is the primary way to navigate through a page. However, most screen readers include many shortcut keys to skip around a page. For example, a screen reader can read every heading on a page, or every link, making it easier to find the right content on the page. + +More complex components like menus, tabs, or sliders can also typically be used with arrow keys, not just the <kbd>tab</kbd> keys. All of our JavaScript plugins provide advanced keyboard support by default. + +### Auditory + +If your site has video, provide captions so that users who are deaf or hard-of-hearing can properly view the content. + +--- + +## Foundation and Accessibility + +All of Foundation's components are keyboard-accessible and screen reader-friendly. All of our code examples include the required accessibility hooks, but there may be instances where you, as the developer, need to fine-tune the specifics of how those hooks are used. Our JavaScript plugins will automatically add many required attributes to the HTML for you. Refer to each component's documentation to learn how to ensure your markup is screen reader-friendly. + +Foundation's CSS makes use of the library [what-input](https://github.com/ten1seven/what-input), which can detect the user's current input device and adjust CSS accordingly. We use it to disable outlines for mouse users, but not keyboard users, who need the outline to know what element on the page has focus. + +If you're using the Sass version of Foundation, you can use this mixin to enable the feature on your own components: + +```scss +.element { + @include disable-mouse-outline; + // ... +} +``` + +--- + +## Learn More + +### Resources + +- [WCAG 2.0 Guide](http://www.w3.org/TR/UNDERSTANDING-WCAG20/) +- [MDN accessibility documentation](https://developer.mozilla.org/en-US/docs/Web/Accessibility) +- [w3.org Introduction to Accessibility](http://www.w3.org/WAI/intro/accessibility.php) +- [Section 508 government requirements](http://www.section508.gov/) +- [WebAIM certification and training](http://webaim.org/) +- [Web Accessibility Checklist](http://a11yproject.com/checklist.html) + +### Tools + +- [Tenon accessibility checker](https://tenon.io/index.php) +- [WAVE Chrome plugin - free accessibility checker](http://wave.webaim.org) +- [Color Contrast Checker](http://webaim.org/resources/contrastchecker) +- [ChromeVox screen reader plugin for Chrome](http://www.chromevox.com) +- [JAWS screen reader for Windows](http://www.freedomscientific.com/Products/Blindness/Jaws) +- [NVDA screen reader for Windows - Free](http://www.nvaccess.org/download/) diff --git a/libraries/foundation-6/docs/pages/accordion-menu.md b/libraries/foundation-6/docs/pages/accordion-menu.md new file mode 100755 index 00000000..f271fe06 --- /dev/null +++ b/libraries/foundation-6/docs/pages/accordion-menu.md @@ -0,0 +1,59 @@ +--- +title: Accordion Menu +sass: scss/components/_accordion-menu.scss +js: js/foundation.accordionMenu.js +description: Change a basic vertical Menu into a expandable accordion menu with the Accordion Menu plugin. +--- + +## Basics + +Accordion menus follow the basic [Menu](menu.html) syntax of `<ul>`, `<li>`, and `<a>`. To convert a basic menu into an accordion, add the attribute `data-accordion-menu`. You probably also want it to be vertical, so add the class `.vertical` as well. + +Any `<a>` will behave like a standard link. However, any `<a>` paired with a nested `<ul>` menu will then slide that sub-menu up and down when clicked on. + +<div class="primary callout"> + <p>You can use the built-in <code>.nested</code> class to add an indent to a nested menu.</p> +</div> + +<div class="primary callout"> + <p>To have a sub-menu already open when the page loads, add the class <code>.is-active</code> to that sub-menu.</p> +</div> + +```html +<ul class="vertical menu" data-accordion-menu> + <li> + <a href="#">Item 1</a> + <ul class="menu vertical nested"> + <li><a href="#">Item 1A</a></li> + <li><a href="#">Item 1B</a></li> + </ul> + </li> + <li><a href="#">Item 2</a></li> +</ul> +``` + +<ul class="vertical menu" data-accordion-menu> + <li> + <a href="#">Item 1</a> + <ul class="menu vertical nested"> + <li> + <a href="#">Item 1A</a> + <ul class="menu vertical nested"> + <li><a href="#">Item 1Ai</a></li> + <li><a href="#">Item 1Aii</a></li> + <li><a href="#">Item 1Aiii</a></li> + </ul> + </li> + <li><a href="#">Item 1B</a></li> + <li><a href="#">Item 1C</a></li> + </ul> + </li> + <li> + <a href="#">Item 2</a> + <ul class="menu vertical nested"> + <li><a href="#">Item 2A</a></li> + <li><a href="#">Item 2B</a></li> + </ul> + </li> + <li><a href="#">Item 3</a></li> +</ul> diff --git a/libraries/foundation-6/docs/pages/accordion.md b/libraries/foundation-6/docs/pages/accordion.md new file mode 100755 index 00000000..27a2078f --- /dev/null +++ b/libraries/foundation-6/docs/pages/accordion.md @@ -0,0 +1,124 @@ +--- +title: Accordion +description: Accordions are elements that help you organize and navigate multiple documents in a single container. They can be used for switching between items in the container. +sass: scss/components/_accordion.scss +js: js/foundation.accordion.js +--- + +## Basics + +The container for an accordion needs the class `.accordion`, and the attribute `data-accordion`. Note that in these examples, we use a `<ul>`, but you can use any element you want. + +```html +<ul class="accordion" data-accordion></ul> +``` + +Inside the accordion, place a series of panes with the class `.accordion-item` and the attribute `data-accordion-item`. To mark which pane should be open by default, add the class `.is-active` to that pane. + +Each pane has a **title**, an `<a>` with the class `.accordion-title`, and a **content area**, an element with the class `.accordion-content` and the attribute `data-tab-content`. + +```html +<ul class="accordion" data-accordion> + <li class="accordion-item is-active" data-accordion-item> + <a href="#" class="accordion-title">Accordion 1</a> + <div class="accordion-content" data-tab-content> + I would start in the open state, due to using the `is-active` state class. + </div> + </li> + <!-- ... --> +</ul> +``` + +Once you put it all together, here's what you get! + +<ul class="accordion" data-accordion> + <li class="accordion-item is-active" data-accordion-item> + <a href="#" class="accordion-title">Accordion 1</a> + <div class="accordion-content" data-tab-content > + <p>Panel 1. Lorem ipsum dolor</p> + <a href="#">Nowhere to Go</a> + </div> + </li> + <li class="accordion-item" data-accordion-item> + <a href="#" class="accordion-title">Accordion 2</a> + <div class="accordion-content" data-tab-content> + <textarea></textarea> + <button class="button">I do nothing!</button> + </div> + </li> + <li class="accordion-item" data-accordion-item> + <a href="#" class="accordion-title">Accordion 3</a> + <div class="accordion-content" data-tab-content> + Pick a date! + <input type="date"></input> + </div> + </li> +</ul> + +--- + +## Advanced Options + +### Multi-expand + +By default, only one pane of an accordion can be open at a time. This can be changed by setting the `multiExpand` option to `true`. + +```html +<ul class="accordion" data-accordion data-multi-expand="true"> + <!-- ... --> +</ul> +``` + +<ul class="accordion" data-accordion data-multi-expand='true'> + <li class="accordion-item is-active" data-accordion-item> + <a href="#" class="accordion-title">Accordion 1</a> + <div class="accordion-content" data-tab-content > + Panel 1. Lorem ipsum dolor + </div> + </li> + <li class="accordion-item" data-accordion-item> + <a href="#" class="accordion-title">Accordion 2</a> + <div class="accordion-content" data-tab-content> + Panel 2. Lorem ipsum dolor + </div> + </li> + <li class="accordion-item" data-accordion-item> + <a href="#" class="accordion-title">Accordion 3</a> + <div class="accordion-content" data-tab-content> + Panel 3. Lorem ipsum dolor + </div> + </li> +</ul> + +--- + +### All Closed + +By default, at least one pane in an accordion must be open. This can be changed by setting `allowAllClosed` option to `true`. + +```html +<ul class="accordion" data-accordion data-allow-all-closed="true"> + <!-- ... --> +</ul> +``` + +<ul class="accordion" data-accordion data-allow-all-closed='true'> + <li class="accordion-item is-active" data-accordion-item> + <a href="#" class="accordion-title">Accordion 1</a> + <div class="accordion-content" data-tab-content > + Panel 1. Lorem ipsum dolor + </div> + </li> + <li class="accordion-item" data-accordion-item> + <a href="#" class="accordion-title">Accordion 2</a> + <div class="accordion-content" data-tab-content> + Panel 2. Lorem ipsum dolor + </div> + </li> + <li class="accordion-item" data-accordion-item> + <a href="#" class="accordion-title">Accordion 3</a> + <div class="accordion-content" data-tab-content> + Panel 3. Lorem ipsum dolor + </div> + </li> +</ul> diff --git a/libraries/foundation-6/docs/pages/badge.md b/libraries/foundation-6/docs/pages/badge.md new file mode 100755 index 00000000..d5e2b8f4 --- /dev/null +++ b/libraries/foundation-6/docs/pages/badge.md @@ -0,0 +1,53 @@ +--- +title: Badge +description: The badge is a basic component that displays a number. It's useful for calling out a number of unread items. +sass: scss/components/_badge.scss +--- + +## Basics + +Add the `.badge` class to an element to create a badge. In the below example, we're using `<span>`, but any tag will work fine. + +```html_example +<span class="badge">1</span> +``` + +<br> + +A badge will typically be describing another element on the page. To bind the two elements together, give the badge a unique ID, and reference that ID in an `aria-describedby` attribute on the main element. + +```html +<h1 aria-describedby="messageCount">Unread Messages</h1> +<span class="badge" id="messageCount">1<span> +``` + +Finally, the content itself might need more context for users that use screen readers. You can add extra text inside the badge using the `.show-for-sr` class. + +```html +<span class="badge" id="messageCount">1 <span class="show-for-sr">unread message</span></span> +``` + +--- + +## Coloring + +Badges can be colored with the same classes used for buttons and other components. + +```html_example +<span class="secondary badge">2</span> +<span class="success badge">3</span> +<span class="alert badge">A</span> +<span class="warning badge">B</span> +``` + +--- + +### With Icons + +An icon can be used in place of text. We're using the [Foundation icon font](http://zurb.com/playground/foundation-icon-fonts-3) here, but any icon fonts or image-based icons will work fine. + +```html_example +<span class="info badge"><i class="fi-share"></i></span> +<span class="success badge"><i class="fi-check"></i></span> +<span class="warning badge"><i class="fi-wrench"></i></span> +``` \ No newline at end of file diff --git a/libraries/foundation-6/docs/pages/base-typography.md b/libraries/foundation-6/docs/pages/base-typography.md new file mode 100755 index 00000000..40a6b6db --- /dev/null +++ b/libraries/foundation-6/docs/pages/base-typography.md @@ -0,0 +1,262 @@ +--- +title: Base Typography +description: Typography in Foundation 6 is meant to make your life easier by providing clean, attractive, simple default styles for all of the most basic typographical elements. +sass: + - scss/typography/_base.scss + - scss/typography/_print.scss +tags: + - paragraph + - heading + - link + - definition + - blockquote + - abbreviation + - acronym + - code + - keystroke +--- + +## Paragraphs + +This is a paragraph. Paragraphs are preset with a font size, line height and spacing to match the overall vertical rhythm. To show what a paragraph looks like this needs a little more content—so, did you know that there are storms occurring on Jupiter that are larger than the Earth? Pretty cool. Use the `<strong>` and `<em>` tags to denote text that should be displayed or read with emphasis. Browsers will bold and italicize them, while screen readers will read the words with *emphasis*. + +<div class="callout primary"> + <p>If the emphasis of a phrase is important, don't make the emphasis purely visual—use the `<em>` or `<strong>` tags to mark it as well. Both of these tags have built-in styles, but there's no harm in adding additional styles in specific contexts.</p> +</div> + +```html +<p>This is a paragraph. Paragraphs are preset with a font size, line height and spacing to match the overall vertical rhythm. To show what a paragraph looks like this needs a little more content so, did you know that there are storms occurring on Jupiter that are larger than the Earth? Pretty cool. Wrap strong around type to <strong>make it bold!</strong>. You can also use em to <em>italicize your words</em>.</p> +``` + +--- + +## Header + +Foundation includes styles for all headings—they're balanced and sized along a modular scale. + +<div class="callout primary"> + <p>Avoid skipping heading levels when structuring your document, as it confuses screen readers. For example, after using an <code><h2></code> in your code, the next heading used should be either <code><h2></code> or <code><h3></code>. If you need a heading to look bigger or smaller to match a specific style, use CSS to override the default size.</p> +</div> + +```html_example +<h1>h1. This is a very large header.</h1> +<h2>h2. This is a large header.</h2> +<h3>h3. This is a medium header.</h3> +<h4>h4. This is a moderate header.</h4> +<h5>h5. This is a small header.</h5> +<h6>h6. This is a tiny header.</h6> +``` + +--- + +### Header Sizes + +The framework includes two typographic scales—one uses a narrow range of sizes for small-sized screens, and the other uses a wider range of sizes for medium- and large-sized screens. You can change these scales, or add new ones for other breakpoints, by editing the `$header-sizes` map in your project's <a href="sass.html#the-settings-file">Settings File</a>. + +Header | Default | Medium and up +--------|---------|-------------- +`<h1>` | 24px | 48px +`<h2>` | 20px | 40px +`<h3>` | 19px | 31px +`<h4>` | 18px | 25px +`<h5>` | 17px | 20px +`<h6>` | 16px | 16px + +--- + +### Small Header Segments + +By inserting a `<small>` element into a header Foundation will scale the header font size down for an inline element, allowing you to use this for subtitles or other secondary header text. + +```html_example +<h3>Foundation for Sites <small>Version 6</small></h3> +``` + +--- + +## Links + +Links are very standard, and the color is preset to the Foundation primary color. <a href="global.html">Learn more about Foundation's global colors.</a> + +<div class="callout"> + <p>To make links screen reader-friendly, avoid using vague words like "here" or "read more" within link text. The text of the link itself should adequately describe where the link goes.</p> +</div> + +```html +<p>Links are very standard, and the color is preset to the Foundation primary color. <a href="global.html">Learn more about Foundation's global colors.</a></p> +``` + +--- + +## Dividers + +Use dividers to define thematic breaks between paragraphs. To denote the end of one section of a page and the start of another, it's better to use the `<section>` tag. + +```html +<hr> +``` + +--- + +## Unordered Lists + +Use an unordered list to... *list things*, if the order of the items doesn't matter. + +```html_example +<ul> + <li>List item with a much longer description or more content.</li> + <li>List item</li> + <li>List item + <ul> + <li>Nested list item</li> + <li>Nested list item</li> + <li>Nested list item</li> + </ul> + </li> + <li>List item</li> + <li>List item</li> + <li>List item</li> +</ul> +``` + +--- + +## Ordered Lists + +Use an `<ol>` when creating a list where the order of the items is important, like ranking pizza toppings from best to worst. + +```html_example +<ol> + <li>Cheese (essential)</li> + <li>Pepperoni</li> + <li>Bacon + <ol> + <li>Normal bacon</li> + <li>Canadian bacon</li> + </ol> + </li> + <li>Sausage</li> + <li>Onions</li> + <li>Mushrooms</li> +</ol> +``` + +--- + +## Definition Lists + +A definition list (`<dl>`) is used to display name-value pairs, like metadata or a dictionary definition. Each term (`<dt>`) is paired with one or more definitions (`<dd>`). + +```html_example +<dl> + <dt>Time</dt> + <dd>The indefinite continued progress of existence and events in the past, present, and future regarded as a whole.</dd> + <dt>Space</dt> + <dd>A continuous area or expanse that is free, available, or unoccupied.</dd> + <dd>The dimensions of height, depth, and width within which all things exist and move.</dd> +</dl> +``` + +--- + +## Blockquotes + +Sometimes other people say smart things, and you may want to mention those things with a quote. We've got you covered. + +```html_example +<blockquote> + Those people who think they know everything are a great annoyance to those of us who do. + <cite>Isaac Asimov</cite> +</blockquote> +``` + +--- + +## Abbreviations + +Use the `<abbr>` tag to annotate a shortened term. Abbreviations must always have a `title` attribute which clarifies the full term. + +```html_example +<p>In my dream last night, I saw <abbr title="John Ronald Reuel">J. R. R.</abbr> Tolkien and George <abbr title="Raymond Richard">R. R.</abbr> Martin hanging out on Sunset <abbr title="Boulevard">Blvd</abbr>.</p> +``` + +--- + +## Code + +Format references to code with the `<code>` tag. + +```html_example +Remember to escape angle brackets when printing HTML: <code><div></code> +``` + +--- + +## Keystrokes + +Use the `<kbd>` element to annotate a key stroke or combination. + +```html_example +<p>Press <kbd>Cmd+Q</kbd> (or <kbd>Ctrl+Q</kbd> on Windows) to play Half-Life 3.</p> +``` + +--- + +## Accessibility + +Text is core to the content of your page, so making it accessible to everyone is important. Here are some general guidelines to follow. + +### Text vs. Images + +Prefer using actual text over text inside a graphic. Assistive technologies can't read an image, and the text in an image can't be resized by a browser, like normal text. If an image has text that needs to be read, add it in the `alt` attribute of the image. + +```html +<img src="assets/img/buy-now.jpg" alt="Buy now"> +``` + +--- + +### Contrast + +The contrast between the color of an element's text and its background should be high enough that low-vision users can read it. **The minimum recommended contrast ratio is 4.5:1.** There are no automated tools that can effectively check this for you, but if you aren't sure about a specific color combination, you can run it through one of many color contrast checkers, such as [WebAIM's color contrast checker](http://webaim.org/resources/contrastchecker/). + +Google Chrome's [Accessibility Developer Tools](https://chrome.google.com/webstore/detail/accessibility-developer-t/fpkknkljclfencbdbgkenhalefipecmb?hl=en) also includes a contrast checker. By selecting an element in the inspector, you can see if the contrast meets the minimum standards. + +<img class="thumbnail" src="assets/img/a11y/chrome-a11y-inspector.jpg" alt="Screenshot of Google Chrome's Accessibility Tools"> + +--- + +### Type Size + +When possible, use the `rem` and `em` units to size everything. Not just font size, but also padding, margins, and any length value. This ensures that your design scales up and down uniformly if the user changes their browser's text size. It's common for vision-impaired users to resize their browser up to 200% zoom. + +We use the `rem` unit nearly everywhere in Foundation, and even wrote a Sass function to make it a little easier. The `rem-calc()` function can take one or more pixel values and convert them to proper `rem` values. + +```scss +.element { + width: rem-calc(300); + padding: rem-calc(10 16); +} +``` + +--- + +### More Resources + +- [WebAIM: Fonts](http://webaim.org/techniques/fonts/) +- [WebAIM: Links and HyperText](http://webaim.org/techniques/hypertext/) +- [WebAIM: Writing Clearly and Simply](http://webaim.org/techniques/semanticstructure/) +- [WebAIM: Color Contrast Checker](http://webaim.org/resources/contrastchecker/) + +--- + +## Print Styles + +Foundation includes print styles developed by HTML5 Boilerplate to give you some basic print-specific styles. These are activated when you print through a media query. It includes: + +- Clearing out backgrounds, box shadows and text shadows +- Appending link URLs after the anchor text +- Adding borders to `<blockquote>` and `<pre>` elements +- Page cleanup and window minimization + +On top of that, Foundation includes a couple of simple classes you can use to control elements printing, or not printing. Simply attach `.show-for-print` to an element to only show when printing, and `.hide-for-print` to hide something when printing. diff --git a/libraries/foundation-6/docs/pages/breadcrumbs.md b/libraries/foundation-6/docs/pages/breadcrumbs.md new file mode 100755 index 00000000..7d822c3b --- /dev/null +++ b/libraries/foundation-6/docs/pages/breadcrumbs.md @@ -0,0 +1,28 @@ +--- +title: Breadcrumbs +description: Breadcrumbs come in handy to show a navigation trail for users clicking through your site. +sass: scss/components/_breadcrumbs.scss +--- + +To make a set of breadcrumb links, just add the class `.breadcrumbs` to a `<ul>`, and then add links instead of `<li>` elements. + +The current page doesn't require a link or a class, but you should add some explanatory text for AT that indicates which item is the current page. + +To mark a disabled item, add the class `.disabled` to the `<li>`, and just use plain text instead of a link. + +<div class="warning callout"> + <p>We use a CSS <code>::after</code> element containing a slash character to create the separator between items. Some screen readers will read this character out loud—if this is an issue, you can use a background image or a separate element with <code>aria-hidden="true"</code> to create the separator instead.</p> +</div> + +```html_example +<nav aria-label="You are here:" role="navigation"> + <ul class="breadcrumbs"> + <li><a href="#">Home</a></li> + <li><a href="#">Features</a></li> + <li class="disabled">Gene Splicing</li> + <li> + <span class="show-for-sr">Current: </span> Cloning + </li> + </ul> +</nav> +``` diff --git a/libraries/foundation-6/docs/pages/button-group.md b/libraries/foundation-6/docs/pages/button-group.md new file mode 100755 index 00000000..315f9a33 --- /dev/null +++ b/libraries/foundation-6/docs/pages/button-group.md @@ -0,0 +1,107 @@ +--- +title: Button Group +description: Button groups are containers for related action items. They're great when you need to display a group of actions in a bar. These build off the button styles and work perfectly with the grid. +sass: scss/components/_button-group.scss +tags: + - split button +flexbox: true +--- + +## Basics + +Add the `.button-group` class to a container, and inside it place any number of buttons. The buttons are separated by a small border. + +```html_example +<div class="button-group"> + <a class="button">One</a> + <a class="button">Two</a> + <a class="button">Three</a> +</div> +``` + +--- + +## Sizing + +Button groups can be sized with the same classes as standard buttons: `.tiny`, `.small`, and `.large`. + +```html_example +<div class="small button-group"> + <a class="button">Small</a> + <a class="button">Button</a> + <a class="button">Group</a> +</div> +``` + +--- + +## Coloring + +Buttons within a button group can be colored individually with the `.secondary`, `.success`, `.warning`, and `.alert` classes. + +```html_example +<div class="button-group"> + <a class="secondary button">View</a> + <a class="success button">Edit</a> + <a class="warning button">Share</a> + <a class="alert button">Delete</a> +</div> +``` + +The entire group can also be colored using the same classes. + +```html_example +<div class="secondary button-group"> + <a class="button">Harder</a> + <a class="button">Better</a> + <a class="button">Faster</a> + <a class="button">Stronger</a> +</div> +``` + +--- + +## Even-width Group + +Add the `.expanded` class to the container to make a full-width button group. Each item will automatically size itself based on how many buttons there are, up to a maximum of six. + +```html_example +<div class="expanded button-group"> + <a class="button">Expanded</a> + <a class="button">Button</a> + <a class="button">Group</a> +</div> +``` + +--- + +## Stacking + +A button group can be made vertical with the `.stacked` class. You can also use `.stacked-for-small` to only stack a button group on small screens, or `.stacked-for-medium` to only stack on small and medium screens. + +```html_example +<div class="stacked-for-small button-group"> + <a class="button">How</a> + <a class="button">Low</a> + <a class="button">Can</a> + <a class="button">You</a> + <a class="button">Go</a> +</div> +``` + +--- + +## Split Buttons + +To build a split button, just create a button group with two buttons. + +To create a button with only an arrow, add the class `.arrow-only`. Note that the button still needs a label for screen readers, which can be embedded inside the button with a `.show-for-sr` element. In the example below, an assistive device will read the arrow button as "Show menu". + +```html_example +<div class="button-group"> + <a class="button">Primary Action</a> + <a class="dropdown button arrow-only"> + <span class="show-for-sr">Show menu</span> + </a> +</div> +``` diff --git a/libraries/foundation-6/docs/pages/button.md b/libraries/foundation-6/docs/pages/button.md new file mode 100755 index 00000000..9a081d1f --- /dev/null +++ b/libraries/foundation-6/docs/pages/button.md @@ -0,0 +1,110 @@ +--- +title: Button +description: Buttons are convenient tools when you need more traditional actions. To that end, Foundation has many easy to use button styles that you can customize or override to fit your needs. +sass: scss/components/_button.scss +tags: + - dropdown button +--- + +## Basics + +A basic button can be created with minimal markup. Because buttons can be used for many purposes, it's important to use the right tag. + +- Use the `<a>` tag if the button is a link to another page, or a link to an anchor within a page. Generally anchors don't require JavaScript to work. +- Use the `<button>` tag if the button performs an action that changes something on the current page. `<button>` elements almost always require JavaScript to function. + +<div class="primary callout"> + <p>Add the attribute <code>type="button"</code> to <code><button></code> elements, unless the button submits a form, in which case you use <code>type="submit"</code></p> +</div> + +```html_example +<!-- Anchors (links) --> +<a href="about.html" class="button">Learn More</a> +<a href="#features" class="button">View All Features</a> + +<!-- Buttons (actions) --> +<button type="button" class="success button">Save</button> +<button type="button" class="alert button">Delete</button> +``` + +--- + +## Sizing + +Additional classes can be added to your button to change its size and shape. + +```html_example +<a class="tiny button" href="#">So Tiny</a> +<a class="small button" href="#">So Small</a> +<a class="button" href="#">So Basic</a> +<a class="large button" href="#">So Large</a> +<a class="expanded button" href="#">Such Expand</a> +<a class="small expanded button" href="#">Wow, Small Expand</a> +``` + +--- + +## Coloring + +Give a button additional meaning by adding a coloring class, or `.disabled` to create a faded appearance. + +<div class="primary callout"> + <p>The <code>.disabled</code> class is a purely visual style, and won't actually disable a control. For <code><button></code> elements, you can add the <code>disabled</code> attribute to disable it. If you want to disable a link, you should add the `aria-disabled` attribute to mark it as disabled for assistive technology.</p> +</div> + +```html_example +<a class="secondary button" href="#">Secondary Color</a> +<a class="success button" href="#">Success Color</a> +<a class="alert button" href="#">Alert Color</a> +<a class="warning button" href="#">Warning Color</a> +<a class="disabled button" href="#">Disabled Button</a> +``` + +--- + +## Hollow Style + +Add the `.hollow` class to a button to give it a hollow style. Change the `$button-fill` variable in your settings file to `hollow` to make this the default style. Changing this setting will remove the `.hollow` class from your CSS. + +```html_example +<button class="hollow button" href="#">Primary Color</button> +<button class="secondary hollow button" href="#">Secondary Color</button> +<button class="success hollow button" href="#">Success Color</button> +<button class="alert hollow button" href="#">Alert Color</button> +<button class="warning hollow button" href="#">Warning Color</button> +``` + +--- + +## Dropdown Arrows + +Add a dropdown arrow to your button with the `.dropdown` class. + +<div class="primary callout"> + <p>This doesn't add dropdown functionality automatically. To do that, you can attach our <a href="dropdown.html">Dropdown plugin</a>.</p> +</div> + +```html_example +<button class="tiny dropdown button">Dropdown Button</button> +<button class="small dropdown button">Dropdown Button</button> +<button class="dropdown button">Dropdown Button</button> +<button class="large dropdown button">Dropdown Button</button> +<button class="expanded dropdown button">Dropdown Button</button> +``` + +--- + +## Accessibility + +Make sure that the text of the button is descriptive. If for some reason, your button contains no readable text (for example, just a symbol or icon), add screen reader-only text to the button to clarify it's purpose. The symbol or icon should be wrapped in an element with the attribute `aria-hidden="true"`, to prevent screen readers from trying to pronounce the symbol. + +Use the `.show-for-sr` class to define screen reader-only text. + +```html_example +<button class="button" type="button"> + <!-- Screen readers will see "close" --> + <span class="show-for-sr">Close</span> + <!-- Visual users will see the X, but not the "Close" text --> + <span aria-hidden="true"><i class="fi-x"></i></span> +</button> +``` diff --git a/libraries/foundation-6/docs/pages/callout.md b/libraries/foundation-6/docs/pages/callout.md new file mode 100755 index 00000000..f2959251 --- /dev/null +++ b/libraries/foundation-6/docs/pages/callout.md @@ -0,0 +1,113 @@ +--- +title: Callout +description: Callouts combine panels and alerts from Foundation 5 into one generic container component. +sass: scss/components/_callout.scss +tags: + - panel + - alert +--- + +## Basics + +A callout is just an element with a `.callout` class applied. You can put any kind of content inside. + +```html_example +<div class="callout"> + <h5>This is a callout.</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> + <a href="#">It's dangerous to go alone, take this.</a> +</div> +``` + +--- + +## Coloring + +Callouts can be colored using the `.secondary`, `.primary`, `.success`, `.warning`, or `.alert` classes. Links inside the callout will be tinted to match the color of the callout. + +```html +<div class="callout secondary"> + <h5>This is a secondary callout</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> + <a href="#">It's dangerous to go alone, take this.</a> +</div> +``` + +<div class="callout secondary"> + <h5>This is a secondary callout</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> + <a href="#">It's dangerous to go alone, take this.</a> +</div> + +<div class="primary callout"> + <h5>This is a primary callout</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> + <a href="#">It's dangerous to go alone, take this.</a> +</div> + +<div class="success callout"> + <h5>This is a success callout</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> + <a href="#">It's dangerous to go alone, take this.</a> +</div> + +<div class="warning callout"> + <h5>This is a warning callout</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> + <a href="#">It's dangerous to go alone, take this.</a> +</div> + +<div class="alert callout"> + <h5>This is an alert callout</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> + <a href="#">It's dangerous to go alone, take this.</a> +</div> + +--- + +## Sizing + +Callouts can be sized using the `.small` and `.large` classes. These will affect the padding around content to be smaller and larger respectively. + +```html_example +<div class="callout small"> + <h5>This is a secondary panel</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> + <a href="#">It's dangerous to go alone, take this.</a> +</div> + +<div class="callout large"> + <h5>This is a secondary panel</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> + <a href="#">It's dangerous to go alone, take this.</a> +</div> +``` + +--- + +## Making Closable + +Pair the callout with the [close button](close-button.html) component and `data-closable` attribute to create a dismissable alert box. + +<div class="primary callout"> + <p>Any element can be used as a close trigger, not just close button. Adding the attribute <code>data-close</code> to any element within the callout will turn it into a close trigger.</p> + <p>When using the <code>data-closable</code> attribute, you can optionally add <a href="http://foundation.zurb.com/sites/docs/motion-ui.html">Motion UI</a> classes to the attribute to change the closing animation. If no class is added, the plugin defaults to jQuery's <code>.fadeOut()</code> function.</p> +</div> + +```html_example +<div class="alert callout" data-closable> + <h5>This is Important!</h5> + <p>But when you're done reading it, click the close button in the corner to dismiss this alert.</p> + <p>I'm using the default <code>data-closable</code> parameters, and simply fade out.</p> + <button class="close-button" aria-label="Dismiss alert" type="button" data-close> + <span aria-hidden="true">×</span> + </button> +</div> +<div class="success callout" data-closable="slide-out-right"> + <h5>This a friendly message.</h5> + <p>And when you're done with me, I close using a Motion UI animation.</p> + <button class="close-button" aria-label="Dismiss alert" type="button" data-close> + <span aria-hidden="true">×</span> + </button> +</div> +``` diff --git a/libraries/foundation-6/docs/pages/close-button.md b/libraries/foundation-6/docs/pages/close-button.md new file mode 100755 index 00000000..5a59022e --- /dev/null +++ b/libraries/foundation-6/docs/pages/close-button.md @@ -0,0 +1,47 @@ +--- +title: Close Button +description: The humble close button can be used anywhere you need something to go away on click. +sass: scss/components/_close-button.scss +--- + +A close button is a `<button>` element with the class `.close-button`. We use the multiplication symbol (`×`) as the X icon. This icon is wrapped in a `<span>` with the attribute `aria-hidden="true"`, so screen readers don't read the X icon. + +The button is also labeled with `aria-label` to clarify what the button's purpose is. + +```html_example +<div class="callout"> + <button class="close-button" aria-label="Close alert" type="button"> + <span aria-hidden="true">×</span> + </button> + <p>Look at this close button!</p> +</div> +``` + +--- + +## Making Closable + +<div class="callout primary"> + <p>The close button on its own doesn't close elements, but you can use it with <a href="toggler.html">Toggler</a>, <a href="reveal.html">Reveal</a>, <a href="off-canvas.html">Off-canvas</a>, and other plugins that have open and close behaviors.</p> +</div> + +<div class="primary callout"> + <p>Any element can be used as a close trigger, not just close button. Adding the attribute <code>data-close</code> to any element within the callout will turn it into a close trigger.</p> +</div> + +The below example pairs the callout with the close button component and `data-closable` attribute to create a dismissible alert box. + +```html_example +<div class="callout" data-closable> + <p>You can so totally close this!</p> + <button class="close-button" aria-label="Dismiss alert" type="button" data-close> + <span aria-hidden="true">×</span> + </button> +</div> +<div class="success callout" data-closable="slide-out-right"> + <p>You can close me too, and I close using a Motion UI animation.</p> + <button class="close-button" aria-label="Dismiss alert" type="button" data-close> + <span aria-hidden="true">×</span> + </button> +</div> +``` diff --git a/libraries/foundation-6/docs/pages/compatibility.md b/libraries/foundation-6/docs/pages/compatibility.md new file mode 100755 index 00000000..bb9442c5 --- /dev/null +++ b/libraries/foundation-6/docs/pages/compatibility.md @@ -0,0 +1,37 @@ +--- +title: Compatibility +description: Foundation is tested across many browsers and devices, and works back as far as IE9 and Android 2. +tags: + - support + - browser +--- + +## Overview + +<table class="docs-compat-table"> + <tr> + <td>Chrome</td> + <td class="works" rowspan="6">Last Two Versions</td> + </tr> + <tr><td>Firefox</td></tr> + <tr><td>Safari</td></tr> + <tr><td>Opera</td></tr> + <tr><td>Mobile Safari</td></tr> + <tr><td>IE Mobile</td></tr> + <tr> + <td>Internet Explorer</td> + <td class="works">Versions 9+</td> + </tr> + <tr> + <td>Android Browser</td> + <td class="works">Versions 2.3+</td> + </tr> +</table> + +--- + +## What Won't Work? + +- **The Grid:** Foundation's grid uses `box-sizing: border-box` to apply gutters to columns, but this property isn't supported in IE8. +- **Desktop Styles:** Because the framework is written mobile-first, browsers that don't support media queries will display the mobile styles of the site. +- **JavaScript:** Our plugins use a number of handy ECMAScript 5 features that aren't supported in IE8. diff --git a/libraries/foundation-6/docs/pages/drilldown-menu.md b/libraries/foundation-6/docs/pages/drilldown-menu.md new file mode 100755 index 00000000..0e223dbb --- /dev/null +++ b/libraries/foundation-6/docs/pages/drilldown-menu.md @@ -0,0 +1,86 @@ +--- +title: Drilldown Menu +description: Drilldown is one of Foundation's three menu patterns, which converts a series of nested lists into a vertical drilldown menu. +scss: scss/components/_drilldown.scss +js: js/foundation.drilldown.js +--- + +## Basics + +Drilldowns use the standard [Menu](menu.html#nested-style) syntax, using `<ul>`, `<li>`, and `<a>`. Add `data-drilldown` to the root menu to set up the drilldown. + +To create sub-menus, place a `<ul>` *next to* an `<a>`. Clicking that `<a>` will then open the `<ul>` that it's next to. + +Any `<a>` without a submenu will function like a normal link. + +```html +<ul class="vertical menu" data-drilldown> + <li> + <a href="#Item-1">Item 1</a> + <ul class="vertical menu"> + <li><a href="#Item-1A">Item 1A</a></li> + <!-- ... --> + </ul> + </li> + <li><a href="#Item-2">Item 2</a></li> +</ul> +``` + +<div class="primary callout"> + <p>The drilldown menu takes on the height of the tallest menu in the hierarchy, so the menu doesn't change height as the user navigates it.</p> +</div> + +<ul class="menu" data-drilldown style="width: 200px" id="m1"> + <li> + <a href="#">Item 1</a> + <ul class="menu"> + <li> + <a href="#">Item 1A</a> + <ul class="menu"> + <li><a href="#Item-1Aa">Item 1Aa</a></li> + <li><a href="#Item-1Ba">Item 1Ba</a></li> + <li><a href="#Item-1Ca">Item 1Ca</a></li> + <li><a href="#Item-1Da">Item 1Da</a></li> + <li><a href="#Item-1Ea">Item 1Ea</a></li> + </ul> + </li> + <li><a href="#Item-1B">Item 1B</a></li> + <li><a href="#Item-1C">Item 1C</a></li> + <li><a href="#Item-1D">Item 1D</a></li> + <li><a href="#Item-1E">Item 1E</a></li> + </ul> + </li> + <li> + <a href="#">Item 2</a> + <ul class="menu"> + <li><a href="#Item-2A">Item 2A</a></li> + <li><a href="#Item-2B">Item 2B</a></li> + <li><a href="#Item-2C">Item 2C</a></li> + <li><a href="#Item-2D">Item 2D</a></li> + <li><a href="#Item-2E">Item 2E</a></li> + </ul> + </li> + <li> + <a href="#">Item 3</a> + <ul class="menu"> + <li><a href="#Item-3A">Item 3A</a></li> + <li><a href="#Item-3B">Item 3B</a></li> + <li><a href="#Item-3C">Item 3C</a></li> + <li><a href="#Item-3D">Item 3D</a></li> + <li><a href="#Item-3E">Item 3E</a></li> + </ul> + </li> + <li><a href="#Item-4"> Item 4</a></li> +</ul> + +--- + +## Custom Styling + +The drilldown plugin automatically adds a back button to the top of each nested menu. To style this control, target the `.js-drilldown-back` class: + +```css +.js-drilldown-back { + // ... +} +``` diff --git a/libraries/foundation-6/docs/pages/dropdown-menu.md b/libraries/foundation-6/docs/pages/dropdown-menu.md new file mode 100755 index 00000000..e9ff92b2 --- /dev/null +++ b/libraries/foundation-6/docs/pages/dropdown-menu.md @@ -0,0 +1,162 @@ +--- +title: Dropdown Menu +description: Change a basic Menu into an expandable dropdown menu with the Dropdown Menu plugin. +sass: scss/components/_dropdown-menu.scss +js: js/foundation.dropdownMenu.js +--- + +## Horizontal + +Dropdown menus build on the [Menu](menu.html) component's syntax. Add the class `.dropdown` and the attribute `data-dropdown-menu` to the menu container to set up the dropdown. + +```html +<ul class="dropdown menu" data-dropdown-menu> + <li><a href="#">Item 1</a></li> + <li><a href="#">Item 2</a></li> + <li><a href="#">Item 3</a></li> + <li><a href="#">Item 4</a></li> +</ul> +``` + +To create dropdown menus, nest a new `<ul>` inside an `<li>`. You can nest further to create more levels of dropdowns. + +<div class="primary callout"> + <p>Note that the <code><ul></code> goes <em>after</em> the <code><a></code>, and not inside of it.</p> +</div> + +```html +<ul class="dropdown menu" data-dropdown-menu> + <li> + <a href="#">Item 1</a> + <ul class="menu"> + <li><a href="#">Item 1A</a></li> + <!-- ... --> + </ul> + </li> + <li><a href="#">Item 2</a></li> + <li><a href="#">Item 3</a></li> + <li><a href="#">Item 4</a></li> +</ul> +``` + +<ul class="dropdown menu" data-dropdown-menu> + <li> + <a>Item 1</a> + <ul class="menu"> + <li><a href="#Item-1A">Item 1A</a></li> + <li> + <a href="#Item-1B">Item 1B</a> + <ul class="menu"> + <li><a href="#Item-1Bi">Item 1B i</a></li> + <li><a href="#Item-1Bii">Item 1B ii</a></li> + <li> + <a href="#Item-1Biii">Item 1B iii</a> + <ul class="menu"> + <li><a href="#Item-1Biiialpha">Item 1B iii alpha</a></li> + <li><a href="#Item-1Biiiomega">Item 1B iii omega</a></li> + </ul> + </li> + <li> + <a href="#Item-1Biv">Item 1B iv</a> + <ul class="menu"> + <li><a href="#Item-1Bivalpha">Item 1B iv alpha</a></li> + </ul> + </li> + </ul> + </li> + <li><a href="#Item-1C">Item 1C</a></li> + </ul> + </li> + <li> + <a href="#Item-2">Item 2</a> + <ul class="menu"> + <li><a href="#Item-2A">Item 2A</a></li> + <li><a href="#Item-2B">Item 2B</a></li> + </ul> + </li> + <li><a href="#Item-3">Item 3</a></li> + <li><a href="#Item-4">Item 4</a></li> +</ul> + +--- + +## Vertical + +Add the `.vertical` class to the top-level menu to make it vertical. Sub-menus are automatically vertical, regardless of the orientation of the top-level menu. + +<div class="primary callout"> + <p>Menus are block-level elements, which means they stretch to fill the width of their container. To make the below example less goofy, we've hard-coded a <code>max-width</code> on the menu.</p> +</div> + +```html +<ul class="vertical dropdown menu" data-dropdown-menu style="max-width: 300px;"> + <li><a href="#">Item 1</a></li> + <!-- ... --> +</ul> +``` + +<ul class="vertical dropdown menu" data-dropdown-menu style="max-width: 300px;"> + <li> + <a>Item 1</a> + <ul class="menu"> + <li><a href="#Item-1A">Item 1A</a></li> + <li> + <a href="#Item-1B">Item 1B</a> + <ul class="menu"> + <li><a href="#Item-1Bi">Item 1B i</a></li> + <li><a href="#Item-1Bii">Item 1B ii</a></li> + <li> + <a href="#Item-1Biii">Item 1B iii</a> + <ul class="menu"> + <li><a href="#Item-1Biiialpha">Item 1B iii alpha</a></li> + <li><a href="#Item-1Biiiomega">Item 1B iii omega</a></li> + </ul> + </li> + <li> + <a href="#Item-1Biv">Item 1B iv</a> + <ul class="menu"> + <li><a href="#Item-1Bivalpha">Item 1B iv alpha</a></li> + </ul> + </li> + </ul> + </li> + <li><a href="#Item-1C">Item 1C</a></li> + </ul> + </li> + <li> + <a href="#Item-2">Item 2</a> + <ul class="menu"> + <li><a href="#Item-2A">Item 2A</a></li> + <li><a href="#Item-2B">Item 2B</a></li> + </ul> + </li> + <li><a href="#Item-3">Item 3</a></li> + <li><a href="#Item-4">Item 4</a></li> +</ul> + +--- + +## Sticky Navigation + +See the documentation for the [Sticky](sticky.html#sticky-navigation) plugin to see how to easily make a sticky nav bar. + +--- + +### Preventing FOUC + +Before the JavaScript on your page loads, the dropdown menus will not have arrows. However, once the JavaScript file has loaded, the arrows will appear causing a [flash of unstyled content](https://en.wikipedia.org/wiki/Flash_of_unstyled_content). You can prevent this by adding the `.is-dropdown-submenu-parent` class manually. + +```html +<ul class="dropdown menu" data-dropdown-menu> + <li class=".is-dropdown-submenu-parent"> + <a href="#">Item 1</a> + <ul class="menu"> + <li><a href="#">Item 1A</a></li> + <!-- ... --> + </ul> + </li> + <li><a href="#">Item 2</a></li> + <li><a href="#">Item 3</a></li> + <li><a href="#">Item 4</a></li> +</ul> +``` \ No newline at end of file diff --git a/libraries/foundation-6/docs/pages/dropdown.md b/libraries/foundation-6/docs/pages/dropdown.md new file mode 100755 index 00000000..244d1f2d --- /dev/null +++ b/libraries/foundation-6/docs/pages/dropdown.md @@ -0,0 +1,79 @@ +--- +title: Dropdown +description: Dropdown panes are little happy sprites which can be revealed on click or hover. +sass: scss/components/_dropdown.scss +js: js/foundation.dropdown.js +--- + +<div class="primary callout"> + <p>You might be looking for <a href="dropdown-menu.html">dropdown menus</a>, which are a separate plugin.</p> +</div> + +## Basics + +To create a dropdown pane, add the class `.dropdown-pane` and the attribute `data-dropdown` to an element. Give the dropdown a unique ID as well. + +To create the dropdown trigger, add `data-toggle` to a `<button>`. The value of `data-toggle` is the ID of the dropdown. + +```html_example +<button class="button" type="button" data-toggle="example-dropdown">Toggle Dropdown</button> +<div class="dropdown-pane" id="example-dropdown" data-dropdown data-auto-focus="true"> + Example form in a dropdown. + <form> + <div class="row"> + <div class="medium-6 columns"> + <label>Name + <input type="text" placeholder="Kirk, James T."> + </label> + </div> + <div class="medium-6 columns"> + <label>Rank + <input type="text" placeholder="Captain"> + </label> + </div> + </div> + </form> +</div> + + +<button class="button" type="button" data-toggle="example-dropdown-1">Hoverable Dropdown</button> +<div class="dropdown-pane" id="example-dropdown-1" data-dropdown data-hover="true" data-hover-pane="true"> + Just some junk that needs to be said. Or not. Your choice. +</div> +``` + +--- + +## Positioning + +By default, a dropdown anchors below the button that opened it. Add the class `.top`, `.right`, or `.bottom` to the dropdown to change this. + +```html_example +<button class="button" type="button" data-toggle="example-dropdown2">Top Aligned</button> + +<div class="dropdown-pane top" id="example-dropdown2" data-dropdown> + Just some junk that needs to be said. Or not. Your choice. +</div> +``` + +<button class="button" type="button" data-toggle="example-dropdown3" style="float: right;">Left Aligned</button> +<div class="dropdown-pane left" id="example-dropdown3" data-dropdown> + Just some junk that needs to be said. Or not. Your choice. +</div> + +<button class="button" type="button" data-toggle="example-dropdown4">Right Aligned</button> +<div class="dropdown-pane right" id="example-dropdown4" data-dropdown> + Just some junk that needs to be said. Or not. Your choice. +</div> + + +Adding `.float-right` or `.float-left` to the anchor will change the direction of the dropdown as well. +<button class="button float-right" type="button" data-toggle="example-dropdown5">Bottom-right Aligned</button> +<div class="dropdown-pane bottom" id="example-dropdown5" data-dropdown> + Just some junk that needs to be said. Or not. Your choice. +</div> + +<button class="button float-left" type="button" data-toggle="example-dropdown6">Bottom-left Aligned</button> +<div class="dropdown-pane bottom" id="example-dropdown6" data-dropdown> + Just some junk that needs to be said. Or not. Your choice. +</div> \ No newline at end of file diff --git a/libraries/foundation-6/docs/pages/equalizer.md b/libraries/foundation-6/docs/pages/equalizer.md new file mode 100755 index 00000000..3d71bd29 --- /dev/null +++ b/libraries/foundation-6/docs/pages/equalizer.md @@ -0,0 +1,199 @@ +--- +title: Equalizer +description: Equalizer makes it dead simple to give multiple items equal height. +js: js/foundation.equalizer.js +--- + +## Basics + +To set up an Equalizer group, you need a container, which gets the attribute `data-equalizer`, and then a series of child elements, which get the attribute `data-equalizer-watch`. The child elements will all be resized to have the same height. + +```html_example +<div class="row" data-equalizer data-equalize-on="medium" id="test-eq"> + <div class="medium-4 columns"> + <div class="callout" data-equalizer-watch> + <img src= "assets/img/generic/square-1.jpg"> + </div> + </div> + <div class="medium-4 columns"> + <div class="callout" data-equalizer-watch> + <p>Pellentesque habitant morbi tristique senectus et netus et, ante.</p> + </div> + </div> + <div class="medium-4 columns"> + <div class="callout" data-equalizer-watch> + <img src= "assets/img/generic/rectangle-1.jpg"> + </div> + </div> +</div> +``` + +--- + +## Nesting + +To use one Equalizer inside another, each container needs a unique ID, assigned with the `data-equalizer` attribute. Each `data-equalizer-watch` element should then have a value that matches its parent. + +In the below example, the first set of Equalizer elements have the value `foo`, while the inside elements have the value `bar`. In the live example, we've also set the `equalizeOn` option to 'medium' for the parent elements, and the child Equalizer contained in the first div equalizes on stack, and maintains equal height. + +```html +<div class="row" data-equalizer="foo"> + <div class="medium-4 columns" data-equalizer-watch="foo"> + <div class="callout" data-equalizer="bar"> + <h3>Parent panel</h3> + <div class="callout" data-equalizer-watch="bar"></div> + <div class="callout" data-equalizer-watch="bar"></div> + <div class="callout" data-equalizer-watch="bar"></div> + </div> + </div> + <div class="medium-4 columns"> + <div class="callout panel" data-equalizer-watch="foo"></div> + </div> + <div class="medium-4 columns"> + <div class="callout" data-equalizer-watch="foo"></div> + </div> +</div> +``` + +<div class="row" data-equalize-on="medium" data-equalizer="foo"> + <div class="medium-4 columns" > + <div class="callout" data-equalizer-watch="foo" data-equalizer="bar"> + <h3>Parent panel</h3> + <div class="callout" data-equalizer-watch="bar"> + <p>The three callouts in this panel will equalize, even when stacked.</p> + </div> + <div class="callout" data-equalizer-watch="bar"> + <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante.</p> + </div> + <div class="callout" data-equalizer-watch="bar"> + <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante.</p> + </div> + </div> + </div> + <div class="medium-4 columns"> + <div class="callout panel" data-equalizer-watch="foo"> + <p>Where these panels will not equalize on stack, and instead equalize on medium up.</p> + </div> + </div> + <div class="medium-4 columns"> + <div class="callout" data-equalizer-watch="foo"> + <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante.</p> + </div> + </div> +</div> + +--- + +## Equalize By Row + +If you have a gallery of items that wrap multiple times, Equalizer can be configured to match each row's items in height. Works great with the block grid! + +<div class="callout primary"> + <p><strong>Under the Hood:</strong></p> + <p>Equalizer splits the `data-equalizer-watch` elements into groups by checking their vertical offsets, and grouping ones with the same offset into a "row".</p> + <p>Be aware on what you set `data-equalizer-watch`, if the top position is different, Equalizer will interpret that as a new "row" and equalize accordingly.</p> +</div> + +```html +<div class="row small-up-1 medium-up-2 large-up-4" data-equalizer data-equalize-by-row="true"> + <div class="column"></div> + <div class="column"></div> + <div class="column"></div> + <!-- ... --> +</div> +``` + +<div class="row small-up-1 medium-up-2 large-up-4" data-equalizer data-equalize-by-row="true"> + <div class="column"> + <div class="callout" data-equalizer-watch> + <img src="//placehold.it/180x200" class="thumbnail" alt=""> + <p>Lorem ipsum dolor sit amet<p> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <p>Lorem ipsum dolor sit amet<p> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <p>Lorem ipsum dolor sit amet<p> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <img src="//placehold.it/180x180" class="thumbnail" alt=""> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <p>Lorem ipsum dolor sit amet<p> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <p>Lorem ipsum dolor sit amet<p> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <img src="//placehold.it/180x400" class="thumbnail" alt=""> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <img src="//placehold.it/180x200" class="thumbnail" alt=""> + <p>Lorem ipsum dolor sit amet<p> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <p>Lorem ipsum dolor sit amet<p> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <p>Lorem ipsum dolor sit amet<p> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <img src="//placehold.it/180x180" class="thumbnail" alt=""> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <p>Lorem ipsum dolor sit amet<p> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <p>Lorem ipsum dolor sit amet<p> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <p>Lorem ipsum dolor sit amet<p> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <p>Lorem ipsum dolor sit amet<p> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <p>Lorem ipsum dolor sit amet<p> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <p>Lorem ipsum dolor sit amet<p> + </div> + </div> + <div class="column"> + <div class="callout" data-equalizer-watch> + <img src="//placehold.it/180x400" class="thumbnail" alt=""> + </div> + </div> +</div> diff --git a/libraries/foundation-6/docs/pages/flex-grid.md b/libraries/foundation-6/docs/pages/flex-grid.md new file mode 100755 index 00000000..e9d258ab --- /dev/null +++ b/libraries/foundation-6/docs/pages/flex-grid.md @@ -0,0 +1,333 @@ +--- +title: Flex Grid +description: New in Foundation 6 is a Flexbox-powered grid, which you can use instead of the traditional float grid. +sass: scss/grid/_flex-grid.scss +--- + +The flex grid works very similarly to the standard float grid, but includes a number of useful features only possible with flexbox, like horizontal and vertical alignment, automatic sizing, and easier source ordering. + +--- + +## Browser support + +The flex grid is only supported in Chrome, Firefox, Safari 6+, IE10+, iOS 7+, and Android 4.4+. Flexbox is supported in Android 2, but not reliably enough for use with this grid. ([View flexbox browser support.](http://caniuse.com/#feat=flexbox)) We recommend only using the flex grid on projects that can live with purely cutting-edge browser support. + +<div class="warning callout"> + <p>In Firefox 43+, images in flex columns may overflow their container. To fix this, add a defined <code>width</code> to any images inside a flex column, or use <code>width: 100%</code> for full-bleed images.</p> +</div> + +--- + +## Importing + +If you're using the CSS version of Foundation, you can generate a <a href="https://foundation.zurb.com/sites/download">custom download of Foundation</a> with flexbox mode enabled. + +If you're using the Sass version of Foundation, you can enable a framework-wide flexbox mode, and add exports for the flex grid and flexbox helper classes. [Learn more about enabling flexbox mode.](flexbox.html#enabling-flexbox-mode) + +```scss +@import 'foundation'; + +// @include foundation-grid; +@include foundation-flex-classes; +@include foundation-flex-grid; +``` + +<div class="primary callout"> + <p>The flex grid uses the same settings variables as the float grid to adjust gutter size, column count, and so on. Refer to the <a href="grid.html#sass-variables">Sass variable reference</a> for the default grid to see how the flex grid can be customized.</p> +</div> + +<div class="warning callout"> + <p>The standard grid and flex grid use some of the same classes, namely <code>.row</code> and <code>.column</code>, and don't play nice together. If you want to use both in the same project, we recommend using the Sass mixins for each grid, instead of the default CSS.</p> +</div> + +--- + +## Basics + +The structure of the flex grid is identical to that of the float grid. Rows use the class `.row`, and columns use the class `.column` (or `.columns`). Basic percentage-based sizing can also be done using the same grid classes you're used to: `.small-6`, `.medium-12`, and so on. + +```html_example +<div class="row"> + <div class="small-6 columns">6 columns</div> + <div class="small-6 columns">6 columns</div> +</div> +<div class="row"> + <div class="medium-6 large-4 columns">12/6/4 columns</div> + <div class="medium-6 large-8 columns">12/6/8 columns</div> +</div> +``` + +--- + +## Advanced Sizing + +If no sizing class is added to the column, it will simply expand to fill the leftover space. We call this an *expand behavior*. + +```html_example +<div class="row"> + <div class="small-4 columns">4 columns</div> + <div class="columns">Whatever's left!</div> +</div> +``` + +--- + +Multiple expanding columns will share the leftover space equally. + +```html_example +<div class="row"> + <div class="small-4 columns">4 columns</div> + <div class="columns">Whatever's left!</div> + <div class="columns">Whatever's left!</div> +</div> +``` + +--- + +A column can also be made to *shrink*, by adding the `.shrink` class. This means it will only take up the horizontal space its contents need. + +```html_example +<div class="row"> + <div class="shrink columns">Shrink!</div> + <div class="columns">Expand!</div> +</div> +``` + +--- + +## Responsive Adjustments + +Columns in a flex grid will not wrap if not given an explicit size—this is what allows the magical auto-sizing to work. To make columns stack on smaller screens, add the class `.small-12` manually. + +To switch back to the expand behavior from a percentage or shrink behavior, use the classes `.medium-expand` or `.large-expand`. In the below example, the columns stack on small screens, and become even-width on large screens. + +```html_example +<div class="row"> + <div class="small-12 large-expand columns">One</div> + <div class="small-12 large-expand columns">Two</div> + <div class="small-12 large-expand columns">Three</div> + <div class="small-12 large-expand columns">Four</div> + <div class="small-12 large-expand columns">Five</div> + <div class="small-12 large-expand columns">Six</div> +</div> +``` + +--- + +### Automatic Stacking + +We have a few shorthand classes for the above behavior. Use the `.[size]-unstack` classes to stack all columns in the row by default, and then unstack them on a larger screen size, making each one equal-width. + +```html_example +<div class="row medium-unstack"> + <div class="columns">One</div> + <div class="columns">Two</div> + <div class="columns">Three</div> + <div class="columns">Four</div> + <div class="columns">Five</div> + <div class="columns">Six</div> +</div> +``` + +--- + +## Column Alignment + +Columns in a flex grid can be aligned across the horizontal or vertical axis of their parent row. + +### Horizontal Alignment + +Columns can be aligned the same way you would align text in a paragraph. By default, all columns align to the left (or the right in RTL), but this can be overridden with by adding the `.align-[dir]` class to the flex row. + +```html +<div class="row"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the left</div> +</div> +<div class="row align-right"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the right</div> +</div> +<div class="row align-center"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the middle</div> +</div> +<div class="row align-justify"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the edges</div> +</div> +<div class="row align-spaced"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the space around</div> +</div> +``` + +<div class="docs-code-live"> + <div class="text-center"> + <div class="row"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the left</div> + </div> + <div class="row align-right"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the right</div> + </div> + <div class="row align-center"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the middle</div> + </div> + <div class="row align-justify"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the edges</div> + </div> + <div class="row align-spaced"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the space around</div> + </div> + </div> +</div> + +You might be wondering what the difference between `.align-justify` and `.align-spaced` is. A justified grid (`justify-content: space-between`) evenly distributes the space *between* each column. The first and last columns pin to the edge of the grid. + +A spaced grid (`justify-content: space-around`) evenly distributes the space *around* each column. This means there will always be space to the left of the first column, and to the right of the last column. + +The horizontal alignment classes are shorthands for the `justify-content` CSS property. [Learn more about `justify-content`](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content). + +--- + +### Vertical Alignment + +By default, all columns in a flex grid stretch to be equal height. This behavior can be changed with another set of alignment classes. That's right, *middle alignment in CSS*! + +Your options for vertical alignment are `top`, `middle`, `bottom`, and `stretch`. Note that we use the word *middle* for vertical alignment, and *center* for horizontal alignment. + +Applying a vertical alignment class to the flex row will affect every column directly inside it. + +```html_example +<div class="row align-middle"> + <div class="columns">I'm in the middle!</div> + <div class="columns">I am as well, but I have so much text I take up more space! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quis facere ducimus earum minus, inventore, ratione doloremque deserunt neque perspiciatis accusamus explicabo soluta, quod provident distinctio aliquam omnis? Labore, ullam possimus.</div> +</div> +``` + +```html_example +<div class="row align-top"> + <div class="columns">These columns align to the top.</div> + <div class="columns">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatum, tempora. Impedit eius officia possimus laudantium? Molestiae eaque, sapiente atque doloremque placeat! In sint, fugiat saepe sunt dolore tempore amet cupiditate.</div> +</div> +``` + +--- + +Similar alignment classes can also be applied to individual columns, which use the format `.align-self-*` instead of `.align-*`. + +<div class="warning callout"> + <p>In Foundation 6.2, we introduced the <code>.align-self-*</code> classes, which replace the old method of using <code>.align-*</code> classes on columns. The old classes will be removed completely in Foundation 6.3.</p> +</div> + +```html_example +<div class="row"> + <div class="column align-self-bottom">Align bottom</div> + <div class="column align-self-middle">Align middle</div> + <div class="column align-self-top">Align top</div> + <div class="column">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Non harum laborum cum voluptate vel, eius adipisci similique dignissimos nobis at excepturi incidunt fugit molestiae quaerat, consequuntur porro temporibus. Nisi, ex?</div> +</div> +``` + +--- + +## Collapse/Uncollapse Rows + +The `.collapse` class lets you remove column gutters (padding). + +There are times when you won't want each media query to be collapsed or uncollapsed. In this case, use the media query size you want and collapse or uncollapse and add that to your row element. Example shows no gutter at small media size and then adds the gutter to columns at medium. + +```html +<div class="row medium-uncollapse large-collapse"> + <div class="small-6 columns"> + Removes gutter at large media query + </div> + <div class="small-6 columns"> + Removes gutter at large media query + </div> +</div> +``` + +<p class="lead">Scale the browser down to a medium size to see the difference.</p> + +<div class="row medium-uncollapse large-collapse"> + <div class="small-6 columns"> + <div class="callout secondary"> + <p class="show-for-small-only">On a small screen, I have gutters!</p> + <p class="show-for-medium-only">On a medium screen, I have gutters!</p> + <p class="show-for-large">On a large screen, I have no gutters!</p> + </div> + </div> + <div class="small-6 columns"> + <div class="callout secondary"> + <p class="show-for-small-only">On a small screen, I have gutters!</p> + <p class="show-for-medium-only">On a medium screen, I have gutters!</p> + <p class="show-for-large">On a large screen, I have no gutters!</p> + </div> + </div> +</div> + +--- + +## Offsets + +Offsets work identically to the float grid, by applying `margin-left` to a column. + +```html_example +<div class="row"> + <div class="small-4 large-offset-2 columns">Offset 2 on large</div> + <div class="small-4 columns">4 columns</div> +</div> +``` + +--- + +## Source Ordering + +Flexbox supports source ordering, making it easy to rearrange columns on different screen sizes without weird relative positioning tricks. + +The CSS property is easy enough to remember. + +```scss +.element { + order: 1; +} +``` + +Columns within a row will be sorted by their `order` property. Lower numbers are placed first. If multiple columns have the same number, they're sorted in the order they appear in the HTML. + +We have a set of classes that make it easy to setup source ordering in your HTML. They also come in responsive flavors, allowing you to reorder a grid on different screen sizes. + +```html_example +<div class="row"> + <div class="column small-order-2 medium-order-1"> + This column will come second on small, and first on medium and larger. + </div> + <div class="column small-order-1 medium-order-2"> + This column will come first on small, and second on medium and larger. + </div> +</div> +``` + +--- + +## Block Grids + +To define column widths at the row-level, instead of the individual column level, add the class `.[size]-up-[n]` to a row, where `[n]` is the number of columns to display per row, and `[size]` is the breakpoint at which to apply the effect. + +<div class="primary callout"> + <p>A block grid row has the property <code>align-items: stretch</code> by default, meaning the columns in each row are equal height. To change this, change the <code>align-items</code> property of the row, or use one of the <a href="flexbox.html#vertical-alignment">vertical alignment flexbox classes</a>.</p> +</div> + +```html_example +<div class="row small-up-1 medium-up-2 large-up-3"> + <div class="column">1 per row on small</div> + <div class="column">2 per row on medium</div> + <div class="column">3 per row on large</div> +</div> +``` diff --git a/libraries/foundation-6/docs/pages/flex-video.md b/libraries/foundation-6/docs/pages/flex-video.md new file mode 100755 index 00000000..68fd1fb7 --- /dev/null +++ b/libraries/foundation-6/docs/pages/flex-video.md @@ -0,0 +1,33 @@ +--- +title: Flex Video +description: Wrap embedded videos from YouTube, Vimeo, and others in a flex video container to ensure they maintain the correct aspect ratio regardless of screen size. +sass: scss/components/_flex-video.scss +--- + +Embedded videos won't maintain their aspect ratio as the width of the screen changes. To avoid squished videos, wrap them in a container with the class `.flex-video`. + +```html_example +<div class="flex-video"> + <iframe width="420" height="315" src="https://www.youtube.com/embed/V9gkYw35Vws" frameborder="0" allowfullscreen></iframe> +</div> +``` + +--- + +The default ratio is 4:3. Add the `.widescreen` class to change it to 16:9. + +```html_example +<div class="flex-video widescreen"> + <iframe width="420" height="315" src="https://www.youtube.com/embed/aiBt44rrslw" frameborder="0" allowfullscreen></iframe> +</div> +``` + +--- + +Embedded Vimeo videos are special snowflakes of their own. Add the `.vimeo` class to a flex video container that wraps a Vimeo embed. + +```html_example +<div class="flex-video widescreen vimeo"> + <iframe src="http://player.vimeo.com/video/60122989" width="400" height="225" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe> +</div> +``` diff --git a/libraries/foundation-6/docs/pages/flexbox.md b/libraries/foundation-6/docs/pages/flexbox.md new file mode 100755 index 00000000..bc498311 --- /dev/null +++ b/libraries/foundation-6/docs/pages/flexbox.md @@ -0,0 +1,195 @@ +--- +title: Flexbox +description: For browsers with cutting-edge support, some of Foundation's key components can be converted to flexbox. +sass: + - scss/components/_flex.scss + - scss/util/_flex.scss +--- + +Foundation components use a combination of floats, vertical alignment, table cells, and various other CSS hacks to get layouts looking right. These days, there's a better way... if you have the browser support! + +Enabling **flexbox mode** replaces those hacks with flexbox properties, streamlining how layouts are made, and making sizing and alignment of elements much easier. + +Flexbox mode is only supported these browsers: + +- The latest Chrome and Firefox +- Safari 6+ +- IE 10+ +- iOS 7+ +- Android 4.4+ + +--- + +## Enabling Flexbox Mode + +If you're using the CSS version of Foundation, you can generate a <a href="https://foundation.zurb.com/sites/download">custom download of Foundation</a> with flexbox mode enabled. If you're using the Sass version of Foundation, you can enable flexbox mode two ways: + +If you use the `foundation-everything()` mixin in your main Sass file, pass in the parameter `true` to enable flexbox mode. + +```scss +@include foundation-everything(true); +``` + +If you included each component manually (like our starter projects do), open your settings file (basic template: scss/_settings.scss, ZURB template: src/assets/scss/_settings.scss) and set `$global-flexbox` to `true`, and remove the `@include` for the float grid and replace it with the one for the flex grid, along with the helper classes (basic template: scss/app.scss, ZURB template: src/assets/scss/app.scss): + +```scss +$global-flexbox: true; + +// @include foundation-grid; +@include foundation-flex-grid; +@include foundation-flex-classes; +``` + +--- + +## Supported Components + +Besides the flex grid, these components have flexbox modes: + +- [Button group](button-group.html) +- [Input group](forms.html#inline-labels-and-buttons) +- [Menu](menu.html) +- [Top bar](top-bar.html) +- [Media object](media-object.html) +- [Title bar](off-canvas.html#title-bar) + +In general, all of the components work exactly the same. However, a few of them require slight changes to CSS classes used to work properly. Refer to the documentation for each to find out what's different. + +--- + +## Helper Classes + +Flexbox makes horizontal and vertical alignment painless, through the CSS properties [`align-content`](https://developer.mozilla.org/en-US/docs/Web/CSS/align-items), [`align-self`](https://developer.mozilla.org/en-US/docs/Web/CSS/align-self), and [`justify-content`](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content). Foundation includes a handful of classes for these properties, which work with any flexbox-enabled component. + +To understand how these classes work, you need to understand the parent-child relationship created with flexbox. An element with `display: flex` is a *flex parent*, and can horizontally or vertically align its children. All immediate children of the flex parent are *flex children*. A flex child can vertically align itself. + +Here's a basic example: when using the grid, a row is a flex parent, and a column is a flex child. + +```html +<div class="row"> + <div class="column"></div> + <div class="column"></div> + <div class="column"></div> +</div> +``` + +--- + +### Horizontal Alignment + +Horizontal alignment classes are applied to flex parents. Left alignment is the default, but you can use one of these classes to change this: + +- `.align-right` +- `.align-center` +- `.align-justify` +- `.align-spaced` + +<div class="docs-code-live"> + <div class="text-center"> + <div class="row"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the left</div> + </div> + <div class="row align-right"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the right</div> + </div> + <div class="row align-center"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the center</div> + </div> + <div class="row align-justify"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the edges</div> + </div> + <div class="row align-spaced"> + <div class="column small-4">Aligned to</div> + <div class="column small-4">the space around</div> + </div> + </div> +</div> + +You might be wondering what the difference between `.align-justify` and `.align-spaced` is. A justified grid (`justify-content: space-between`) evenly distributes the space *between* each column. The first and last columns pin to the edge of the grid. + +A spaced grid (`justify-content: space-around`) evenly distributes the space *around* each column. This means there will always be space to the left of the first column, and to the right of the last column. + +The horizontal alignment classes are shorthands for the `justify-content` CSS property. [Learn more about `justify-content`](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content). + +--- + +### Vertical Alignment + +Vertical alignment can be applied to a flex parent—which will align all the children automatically—or to a flex child, which will align only that element. + +Stretch alignment is the default. To set parent alignment, use these classes: + +- `.align-top` +- `.align-middle` +- `.align-bottom` +- `.align-stretch` + +<div class="primary callout"> + <p>Note that with vertical alignment, we use the term "middle" for the midpoint, while with horizontal alignment, we use the term "center". Otherwise, we'd have two CSS classes with the same name, but different functionality.</p> +</div> + +```html_example +<div class="row align-middle"> + <div class="columns">I'm in the middle!</div> + <div class="columns">I am as well, but I have so much text I take up more space! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quis facere ducimus earum minus, inventore, ratione doloremque deserunt neque perspiciatis accusamus explicabo soluta, quod provident distinctio aliquam omnis? Labore, ullam possimus.</div> +</div> +``` + +```html_example +<div class="row align-stretch"> + <div class="columns">These colums have the same height.</div> + <div class="columns">That's right, equal-height columns are possible with Flexbox too! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatum, tempora. Impedit eius officia possimus laudantium? Molestiae eaque, sapiente atque doloremque placeat! In sint, fugiat saepe sunt dolore tempore amet cupiditate.</div> +</div> +``` + +--- + +To align an individual child, use the below classes. They use the same alignment terms as the parent-level classes, but the classes start with `.align-self-` instead of `.align-`. + +- `.align-self-top` +- `.align-self-middle` +- `.align-self-bottom` +- `.align-self-stretch` + +```html_example +<div class="row"> + <div class="column align-self-bottom">Align bottom</div> + <div class="column align-self-middle">Align middle</div> + <div class="column align-self-top">Align top. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Non harum laborum cum voluptate vel, eius adipisci similique dignissimos nobis at excepturi incidunt fugit molestiae quaerat, consequuntur porro temporibus. Nisi, ex?</div> +</div> +``` + +--- + +## Helper Mixins + +If you're using the Sass version of Foundation, you can access the above helpers as mixins as well. + +For parent-level alignment, use `flex-align()`. You can pass in a horizontal alignment (`$x`), vertical alignment (`$y`), or both. + +```scss +.container { + @include flex-align($x: center, $y: stretch); +} +``` + +For child-level alignment, use `flex-align-self()`. You can pass in any horizontal alignment. + +```scss +.sidebar { + @include flex-align-self(bottom); +} +``` + +Interested in building your own flexbox-ey component? Use the `flex()` mixin to get started. + +```scss +.flexish-thang { + @include flex; + @include flex-align(center, middle); +} +``` diff --git a/libraries/foundation-6/docs/pages/float-classes.md b/libraries/foundation-6/docs/pages/float-classes.md new file mode 100755 index 00000000..74b5c685 --- /dev/null +++ b/libraries/foundation-6/docs/pages/float-classes.md @@ -0,0 +1,29 @@ +--- +title: Float Classes +description: Foundation includes a handful of helpful float classes to add common positioning behaviors to elements. +--- + +## Float Left/Right + +You can change the float behavior of an element by adding the `.float-left` or `.float-right` classes to an element. To clear floats, add the class `.clearfix` to the parent element. + +<div class="warning callout"> + <p>Float classes don't flip direction in a <a href="rtl.html">right-to-left</a> environment—<code>left</code> always means left, and <code>right</code> always means right.</p> +</div> + +```html_example +<div class="callout clearfix"> + <a class="button float-left">Left</a> + <a class="button float-right">Right</a> +</div> +``` + +--- + +## Float Center + +Okay, it's not *really* a float, but you can add the `.float-center` class to an element to engage the automatic margin centering trick. Note that this will only work on elements with an absolute width, which means not a percentage or `auto` width. + +```html_example +<img src="assets/img/generic/voyager.jpg" class="float-center"> +``` diff --git a/libraries/foundation-6/docs/pages/forms.md b/libraries/foundation-6/docs/pages/forms.md new file mode 100755 index 00000000..f1b1d2d5 --- /dev/null +++ b/libraries/foundation-6/docs/pages/forms.md @@ -0,0 +1,264 @@ +--- +title: Forms +description: We set out to create an easy, powerful and versatile form layout system. A combination of form styles and the Foundation grid means you can do almost anything. +sass: + - scss/forms/*.scss + - '!scss/forms/_error.scss' +tags: + - input + - select + - radio + - checkbox +flex: true +--- + +## Form Basics + +Creating a form in Foundation is designed to be easy but extremely flexible. Forms are built with a combination of standard form elements, as well as grid rows and columns. + +--- + +#### Text Inputs + +These input types create a text field: `text`, `date`, `datetime`, `datetime-local`, `email`, `month`, `number`, `password`, `search`, `tel`, `time`, `url`, and `week`. + +```html_example +<form> + <div class="row"> + <div class="medium-6 columns"> + <label>Input Label + <input type="text" placeholder=".medium-6.columns"> + </label> + </div> + <div class="medium-6 columns"> + <label>Input Label + <input type="text" placeholder=".medium-6.columns"> + </label> + </div> + </div> +</form> +``` + +--- + +#### Number Inputs + +In most desktop browsers, `<input type="number">` elements will have up/down controls inside them, which increment and decrement the number inside the field. These are called *spin buttons*. You can disable them by setting the `$input-number-spinners` Sass variable to `false`. + +```html_example +<label> + How many puppies? + <input type="number" value="100"> +</label> +``` + +--- + +#### Text Areas + +The `<textarea>` element creates a multi-line text input. + +```html_example +<label> + What books did you read over summer break? + <textarea placeholder="None"></textarea> +</label> +``` + +--- + +#### Select Menus + +Use select menus to combine many choices into one menu. + +```html_example +<label>Select Menu + <select> + <option value="husker">Husker</option> + <option value="starbuck">Starbuck</option> + <option value="hotdog">Hot Dog</option> + <option value="apollo">Apollo</option> + </select> +</label> +``` + +Add the `multiple` attribute to allow more than one option to be selected. Hold down the Ctrl (windows) / Command (Mac) button to select multiple options. + +```html_example +<label>Multiple Select Menu + <select multiple> + <option value="showboat">Showboat</option> + <option value="redwing">Redwing</option> + <option value="narcho">Narcho</option> + <option value="hardball">Hardball</option> + </select> +</label> +``` + +--- + +#### Checkboxes and Radio Buttons + +Use groups of checkboxes when the user may select multiple choices from a list, and use radio buttons when the user must select just one choice. + +Wrap a group of checkboxes or radio buttons in a `<fieldset>` element, and give them a common label using the `<legend>` element. Each individual control should also have its own label, created using a typical `<label>`. + +```html_example +<div class="row"> + <fieldset class="large-6 columns"> + <legend>Choose Your Favorite</legend> + <input type="radio" name="pokemon" value="Red" id="pokemonRed" required><label for="pokemonRed">Red</label> + <input type="radio" name="pokemon" value="Blue" id="pokemonBlue"><label for="pokemonBlue">Blue</label> + <input type="radio" name="pokemon" value="Yellow" id="pokemonYellow"><label for="pokemonYellow">Yellow</label> + </fieldset> + <fieldset class="large-6 columns"> + <legend>Check these out</legend> + <input id="checkbox1" type="checkbox"><label for="checkbox1">Checkbox 1</label> + <input id="checkbox2" type="checkbox"><label for="checkbox2">Checkbox 2</label> + <input id="checkbox3" type="checkbox"><label for="checkbox3">Checkbox 3</label> + </fieldset> +</div> +``` + +--- + +#### Fieldset Styles + +To encourage their use as an accessibility tool, the `<fieldset>` element is no longer styled by default. Those styles are now contained in the `.fieldset` class. + +```html_example +<fieldset class="fieldset"> + <legend>Check these out</legend> + <input id="checkbox12" type="checkbox"><label for="checkbox12">Checkbox 1</label> + <input id="checkbox22" type="checkbox"><label for="checkbox22">Checkbox 2</label> + <input id="checkbox32" type="checkbox"><label for="checkbox32">Checkbox 3</label> +</fieldset> +``` + +--- + +## Help Text + +Place help text below a field to clarify it's purpose. Whenever you use help text, give the text a unique ID, and add the attribute `aria-describedby` to the input. + +```html_example +<label>Password + <input type="password" aria-describedby="passwordHelpText"> +</label> +<p class="help-text" id="passwordHelpText">Your password must have at least 10 characters, a number, and an Emoji.</p> +``` + +--- + +## Label Positioning + +Sometimes you want a form with labels to the left of your inputs. Piece of cake! You can put the label inside a different column to the left of the input. Then use the class `.text-right` or `.float-right` (or add `text-align: right` yourself) to realign the label. + +<div class="warning callout"> + <p>In a <a href="rtl.html">right-to-left</a> environment, use <code>.float-left</code> instead.</p> +</div> + +```html +<form> + <div class="row"> + <div class="small-3 columns"> + <label for="right-label" class="text-right">Label</label> + </div> + <div class="small-9 columns"> + <input type="text" id="right-label" placeholder="Right-aligned text input"> + </div> + </div> +</form> +``` + +<div class="medium-8 column row"> + <div class="row"> + <div class="small-3 columns"> + <label for="right-label" class="text-right">Label</label> + </div> + <div class="small-9 columns"> + <input type="text" id="right-label" placeholder="Right-aligned text input"> + </div> + </div> +</div> + +--- + +Add the `.middle` class to vertically align the label with its input. + +```html +<form> + <div class="row"> + <div class="small-3 columns"> + <label for="middle-label" class="text-right middle">Label</label> + </div> + <div class="small-9 columns"> + <input type="text" id="middle-label" placeholder="Right- and middle-aligned text input"> + </div> + </div> +</form> +``` + +<div class="medium-8 column row"> + <div class="row"> + <div class="small-3 columns"> + <label for="middle-label" class="text-right middle">Label</label> + </div> + <div class="small-9 columns"> + <input type="text" id="middle-label" placeholder="Right- and middle-aligned text input"> + </div> + </div> +</div> + +--- + +## Inline Labels and Buttons + +To attach extra text or controls to the left or right of an input field, wrap the elements in an `.input-group` container, then add these classes to the elements inside: + +- `.input-group-field` on the text field. +- `.input-group-label` on a text label. +- `.input-group-button` on a button. **Place the button inside this wrapper.** + +<div class="primary callout"> + <p>This component supports flexbox mode. <a href="flexbox.html">Learn how to enable flexbox mode</a>.</p> +</div> + +```html_example +<div class="input-group"> + <span class="input-group-label">$</span> + <input class="input-group-field" type="number"> + <div class="input-group-button"> + <input type="submit" class="button" value="Submit"> + </div> +</div> +``` + +--- + +## File Upload Button + +Use `<input type="file">` to create a file upload button. For security reasons, most browsers don't let you style file inputs. To work around that, we can style a form label as a button, and point it to the `<input>`. To properly mask the input, the `.show-for-sr` class is added. + +```html_example +<label for="exampleFileUpload" class="button">Upload File</label> +<input type="file" id="exampleFileUpload" class="show-for-sr"> +``` + +--- + +## Custom Controls + +Custom form controls, like date pickers, range sliders, or switches need some extra attention to be made accessible. Our custom inputs, such as the range slider and switch, do most of this work for you. + +Custom inputs with labels or help text need the attributes `aria-labelledby` and `aria-describedby` added to them, so screen readers know how to describe the control. + +```html +<label id="ageLabel">Age</label> +<div class="slider" aria-labelledby="ageLabel" aria-describedby="ageHelpText" data-slider data-initial-start='50' data-end='200'> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span> + <span class="slider-fill" data-slider-fill></span> + <input type="hidden"> +</div> +<p id="ageHelpText">How old are you?</p> +``` diff --git a/libraries/foundation-6/docs/pages/global.md b/libraries/foundation-6/docs/pages/global.md new file mode 100755 index 00000000..4d6d4fa0 --- /dev/null +++ b/libraries/foundation-6/docs/pages/global.md @@ -0,0 +1,129 @@ +--- +title: Global Styles +description: Our global CSS includes helpful resets to ensure consistent styling across browsers. +sass: scss/_global.scss +--- + +## Font Sizing + +The default font size is set to 100% of the browser style sheet, usually 16 pixels. This ensures compatibility with browser-based text zoom or user-set defaults. If you're using the Sass version of Foundation, edit the `$global-font-size` variable to change the base font size. This can be a percentage value, or a pixel value. + +<div class="alert callout"> + <p><code>$rem-base</code> was deprecated in version 6.1, in favor of using <code>$global-font-size</code> to define rem calculation.</p> +</div> + +--- + +## Colors + +All interactive elements in Foundation, such as links and buttons, use the same color. The default shade of blue you see all over Foundation comes from the `$primary-color` Sass variable. + +Many components can also be colored with four other colors: secondary, alert, success, and warning. Use these colors to give more context to UI elements and actions. + +<div class="row small-up-1 medium-up-3 large-up-5"> + <div class="column"> + <div class="docs-color-block"> + <div class="docs-color-block-primary"></div> + <p>Primary</p> + </div> + </div> + <div class="column"> + <div class="docs-color-block"> + <div class="docs-color-block-secondary"></div> + <p>Secondary</p> + </div> + </div> + <div class="column"> + <div class="docs-color-block"> + <div class="docs-color-block-success"></div> + <p>Success</p> + </div> + </div> + <div class="column"> + <div class="docs-color-block"> + <div class="docs-color-block-warning"></div> + <p>Warning</p> + </div> + </div> + <div class="column"> + <div class="docs-color-block"> + <div class="docs-color-block-alert"></div> + <p>Alert</p> + </div> + </div> + <div class="column"> + <div class="docs-color-block"> + <div class="docs-color-block-white"></div> + <p>White</p> + </div> + </div> + <div class="column"> + <div class="docs-color-block"> + <div class="docs-color-block-light-gray"></div> + <p>Light Gray</p> + </div> + </div> + <div class="column"> + <div class="docs-color-block"> + <div class="docs-color-block-medium-gray"></div> + <p>Medium Gray</p> + </div> + </div> + <div class="column"> + <div class="docs-color-block"> + <div class="docs-color-block-dark-gray"></div> + <p>Dark Gray</p> + </div> + </div> + <div class="column"> + <div class="docs-color-block"> + <div class="docs-color-block-black"></div> + <p>Black</p> + </div> + </div> +</div> + +If you're using the Sass version of Foundation, it's possible to edit the default color palette, by changing the `$foundation-palette` variable in your settings file. The only required color is one named "primary". The names used in the palette will be output as CSS classes. + +```scss +$foundation-palette: ( + primary: #E44347, + mars: #D7525C, + saturn: #E4B884, + neptune: #5147D7, +) +``` + +Using the above palette, we can add the `.mars`, `.saturn`, or `.neptune` classes to buttons, labels, badges, and more. + +To access the colors in your code, use Sass's `map-get()` function: + +```scss +.mars { + color: map-get($foundation-palette, mars); +} +``` + +<div class="warning callout"> + <p>If you're upgrading an older version of Foundation 6 to 6.2, add the line <code>@include add-foundation-colors;</code> <em>below the Global section of your settings file</em>. This will allow legacy color variables, such as <code>$primary-color</code> and <code>$secondary-color</code>, to continue working. +</div> + +--- + +### Color Classes + +Some components, such as [buttons](button.html), [callouts](callout.html), and [labels](label.html), have *coloring classes*, which let you change the color of the element by adding the name of the color as a CSS class. + +```html_example +<button class="button">Primary Action</button> +<button class="secondary button">Secondary Action</button> +``` + +```html_example +<div class="success callout"> + <p>Created a new folder.</p> +</div> +<div class="alert callout"> + <p>Error fetching stick.</p> +</div> +``` diff --git a/libraries/foundation-6/docs/pages/grid.md b/libraries/foundation-6/docs/pages/grid.md new file mode 100755 index 00000000..7e0517a0 --- /dev/null +++ b/libraries/foundation-6/docs/pages/grid.md @@ -0,0 +1,566 @@ +--- +title: The Grid +description: Create powerful multi-device layouts quickly and easily with the default 12-column, nestable Foundation grid. If you're familiar with grid systems, you'll feel right at home. If not, you'll learn quickly. +sass: + - scss/grid/*.scss + - '!scss/grid/_flex-grid.scss' +tags: + - block grid +--- + +## Basics + +Start by adding an element with a class of `.row`. This will create a horizontal block to contain vertical columns. Then add elements with a `.column` class within that row. You can use `.column` or `.columns`—the only difference is grammar. Specify the widths of each column with the `.small-#`, `.medium-#`, and `.large-#` classes. + +**Foundation is mobile-first.** Code for small screens first, and larger devices will inherit those styles. Customize for larger screens as necessary. + +```html +<div class="row"> + <div class="small-2 large-4 columns"><!-- ... --></div> + <div class="small-4 large-4 columns"><!-- ... --></div> + <div class="small-6 large-4 columns"><!-- ... --></div> +</div> +<div class="row"> + <div class="large-3 columns"><!-- ... --></div> + <div class="large-6 columns"><!-- ... --></div> + <div class="large-3 columns"><!-- ... --></div> +</div> +<div class="row"> + <div class="small-6 large-2 columns"><!-- ... --></div> + <div class="small-6 large-8 columns"><!-- ... --></div> + <div class="small-12 large-2 columns"><!-- ... --></div> +</div> +<div class="row"> + <div class="small-3 columns"><!-- ... --></div> + <div class="small-9 columns"><!-- ... --></div> +</div> +<div class="row"> + <div class="large-4 columns"><!-- ... --></div> + <div class="large-8 columns"><!-- ... --></div> +</div> +<div class="row"> + <div class="small-6 large-5 columns"><!-- ... --></div> + <div class="small-6 large-7 columns"><!-- ... --></div> +</div> +<div class="row"> + <div class="large-6 columns"><!-- ... --></div> + <div class="large-6 columns"><!-- ... --></div> +</div> +``` + +<div class="row display"> + <div class="small-2 large-4 columns"><span class="hide-for-large">2</span><span class="show-for-large">4</span></div> + <div class="small-4 large-4 columns">4</div> + <div class="small-6 large-4 columns"><span class="hide-for-large">6</span><span class="show-for-large">4</span></div> +</div> +<div class="row display"> + <div class="large-3 columns"><span class="hide-for-large">full</span><span class="show-for-large">3</span></div> + <div class="large-6 columns"><span class="hide-for-large">full</span><span class="show-for-large">6</span></div> + <div class="large-3 columns"><span class="hide-for-large">full</span><span class="show-for-large">3</span></div> +</div> +<div class="row display"> + <div class="small-6 large-2 columns"><span class="hide-for-large">6</span><span class="show-for-large">2</span></div> + <div class="small-6 large-8 columns"><span class="hide-for-large">6</span><span class="show-for-large">8</span></div> + <div class="small-12 large-2 columns"><span class="hide-for-large">full</span><span class="show-for-large">2</span></div> +</div> +<div class="row display"> + <div class="small-3 columns">3</div> + <div class="small-9 columns">9</div> +</div> +<div class="row display"> + <div class="large-4 columns"><span class="hide-for-large">full</span><span class="show-for-large">4</span></div> + <div class="large-8 columns"><span class="hide-for-large">full</span><span class="show-for-large">8</span></div> +</div> +<div class="row display"> + <div class="small-6 large-5 columns"><span class="hide-for-large">6</span><span class="show-for-large">5</span></div> + <div class="small-6 large-7 columns"><span class="hide-for-large">6</span><span class="show-for-large">7</span></div> +</div> +<div class="row display"> + <div class="large-6 columns"><span class="hide-for-large">full</span><span class="show-for-large">6</span></div> + <div class="large-6 columns"><span class="hide-for-large">full</span><span class="show-for-large">6</span></div> +</div> + +--- + +### Small Grids + +Small grids expand to large screens easier than large grids cram into small screens. + +```html +<div class="row"> + <div class="small-2 columns">2 <span class="hide-for-small-only">columns</span></div> + <div class="small-10 columns">10 columns</div> +</div> +<div class="row"> + <div class="small-3 columns">3 columns</div> + <div class="small-9 columns">9 columns</div> +</div> +``` + +<div class="row display"> + <div class="small-2 columns">2 columns</div> + <div class="small-10 columns">10 columns</div> +</div> +<div class="row display"> + <div class="small-3 columns">3 columns</div> + <div class="small-9 columns">9 columns</div> +</div> + +--- + +### Medium Grid + +Medium sized screens will inherit styles from small, unless you specify a different layout using the medium grid classes. + +```html +<div class="row"> + <div class="medium-2 columns">2 columns</div> + <div class="medium-10 columns">10 columns</div> +</div> +<div class="row"> + <div class="medium-3 columns">3 columns</div> + <div class="medium-9 columns">9 columns</div> +</div> +``` + +<div class="row display"> + <div class="medium-2 columns">2 columns</div> + <div class="medium-10 columns">10 columns</div> +</div> +<div class="row display"> + <div class="medium-3 columns">3 columns</div> + <div class="medium-9 columns">9 columns</div> +</div> + +--- + +## Advanced + +### Combined Column/Row + +If you need a full-width column to use as a container, put the `.column` and `.row` classes on the same element. You can still nest more grids inside this container like usual. + +<div class="warning callout"> + <p>Column rows can use sizing classes like <code>.small-8</code>, but only when used as a top-level container—not when nested inside another row.</p> +</div> + +```html +<div class="column row"> + Row column +</div> +``` + +<div class="column row display"> + Row column +</div> + +--- + +### Fluid Row + +Normally, a row is always 1200 pixels wide. Make a row completely fluid by adding the `.expanded` class. + +```html +<div class="expanded row"> +</div> +``` + +--- + +### Nesting + +You can nest the grids indefinitely, though at a certain point it will get absurd. + +```html +<div class="row"> + <div class="small-8 columns">8 + <div class="row"> + <div class="small-8 columns">8 Nested + <div class="row"> + <div class="small-8 columns">8 Nested Again</div> + <div class="small-4 columns">4</div> + </div> + </div> + <div class="small-4 columns">4</div> + </div> + </div> + <div class="small-4 columns">4</div> +</div> +``` + +<div class="row display"> + <div class="small-8 columns">8 + <div class="row"> + <div class="small-8 columns">8 Nested + <div class="row"> + <div class="small-8 columns">8 Nested Again</div> + <div class="small-4 columns">4</div> + </div> + </div> + <div class="small-4 columns">4</div> + </div> + </div> + <div class="small-4 columns">4</div> +</div> + +--- + +### Offsets + +Move blocks up to 11 columns to the right by using classes like `.large-offset-1` and `.small-offset-3`. + +```html +<div class="row"> + <div class="large-1 columns">1</div> + <div class="large-11 columns">11</div> +</div> +<div class="row"> + <div class="large-1 columns">1</div> + <div class="large-10 large-offset-1 columns">10, offset 1</div> +</div> +<div class="row"> + <div class="large-1 columns">1</div> + <div class="large-9 large-offset-2 columns">9, offset 2</div> +</div> +<div class="row"> + <div class="large-1 columns">1</div> + <div class="large-8 large-offset-3 columns">8, offset 3</div> +</div> +``` + +<div class="row display"> + <div class="large-1 columns">1</div> + <div class="large-11 columns">11</div> +</div> +<div class="row display"> + <div class="large-1 columns">1</div> + <div class="large-10 large-offset-1 columns">10, offset 1</div> +</div> +<div class="row display"> + <div class="large-1 columns">1</div> + <div class="large-9 large-offset-2 columns">9, offset 2</div> +</div> +<div class="row display"> + <div class="large-1 columns">1</div> + <div class="large-8 large-offset-3 columns">8, offset 3</div> +</div> + +--- + +### Incomplete Rows + +In order to work around browsers' different rounding behaviors, Foundation will float the last column in a row to the right so the edge aligns. If your row doesn't have a count that adds up to 12 columns, you can tag the last column with a class of `.end` in order to override that behavior. + +```html +<div class="row"> + <div class="medium-3 columns">3</div> + <div class="medium-3 columns">3</div> + <div class="medium-3 columns">3</div> +</div> +<div class="row"> + <div class="medium-3 columns">3</div> + <div class="medium-3 columns">3</div> + <div class="medium-3 columns end">3 end</div> +</div> +``` + +<div class="row display-end"> + <div class="medium-3 columns">3</div> + <div class="medium-3 columns">3</div> + <div class="medium-3 columns">3</div> +</div> +<div class="row display-end"> + <div class="medium-3 columns">3</div> + <div class="medium-3 columns">3</div> + <div class="medium-3 columns end">3 end</div> +</div> + +--- + +### Gutters + +<div class="warning callout"> + <p>Responsive gutters were added in Foundation 6.1.</p> +</div> + +The grid *gutter*—the space between two columns in a row, and the space between the edge of a grid and the edge of the page—is responsive, and becomes wider on larger screens. + +Breakpoint | Gutter Size +-----------|------------ +`small` | 20px +`medium` | 30px + +If you're using the Sass version of Foundation, you can change these defaults by editing the `$grid-column-gutter` variable: + +```scss +$grid-column-gutter: ( + small: 20px, + medium: 30px, +); +``` + +To add more gutter definitions, add new lines to the map. The breakpoint names used here must match a breakpoint name in your project's `$breakpoints` map. + +Or, if you prefer using one gutter size on every breakpoint, just use a single number. + +```scss +$grid-column-gutter: 30px; +``` + +--- + +### Collapse/Uncollapse Rows + +The `.collapse` class lets you remove column gutters (padding). + +There are times when you won't want each media query to be collapsed or uncollapsed. In this case, use the media query size you want and collapse or uncollapse and add that to your row element. Example shows no gutter at small media size and then adds the gutter to columns at medium. + +```html +<div class="row medium-uncollapse large-collapse"> + <div class="small-6 columns"> + Removes gutter at large media query + </div> + <div class="small-6 columns"> + Removes gutter at large media query + </div> +</div> +``` + +<p class="lead">Scale the browser down to a medium size to see the difference.</p> + +<div class="row medium-uncollapse large-collapse"> + <div class="small-6 columns"> + <div class="callout secondary"> + <p class="show-for-small-only">On a small screen, I have gutters!</p> + <p class="show-for-medium-only">On a medium screen, I have gutters!</p> + <p class="show-for-large">On a large screen, I have no gutters!</p> + </div> + </div> + <div class="small-6 columns"> + <div class="callout secondary"> + <p class="show-for-small-only">On a small screen, I have gutters!</p> + <p class="show-for-medium-only">On a medium screen, I have gutters!</p> + <p class="show-for-large">On a large screen, I have no gutters!</p> + </div> + </div> +</div> + +--- + +### Centered Columns + +Center your columns by adding a class of `.small-centered` to your column. Large will inherit small centering by default, but you can also center solely on large by applying a `.large-centered` class. To uncenter on large screens, use `.large-uncentered`. + +```html +<div class="row"> + <div class="small-3 small-centered columns">3 centered</div> +</div> +<div class="row"> + <div class="small-6 large-centered columns">6 centered</div> +</div> +<div class="row"> + <div class="small-9 small-centered large-uncentered columns">9 centered</div> +</div> +<div class="row"> + <div class="small-11 small-centered columns">11 centered</div> +</div> +``` + +<div class="row display"> + <div class="small-3 small-centered columns">3 centered</div> +</div> +<div class="row display"> + <div class="small-6 large-centered columns">6 centered, large</div> +</div> +<div class="row display"> + <div class="small-9 small-centered large-uncentered columns">9 centered small</div> +</div> +<div class="row display"> + <div class="small-11 small-centered columns">11 centered</div> +</div> + +--- + +### Source Ordering + +Using these source ordering classes, you can shift columns around between our breakpoints. This means if you place sub-navigation below main content on small displays, you have the option to position the sub-navigation on either the left or right of the page for large displays. Prefix push/pull with the size of the device you want to apply the styles to. `.medium-push-#`, `.large-push-#` is the syntax you'll use. Use the number 0 instead to reset a push/pull, such as `.medium-push-0` or `.large-pull-0`. + +```html +<div class="row"> + <div class="small-10 small-push-2 columns">10</div> + <div class="small-2 small-pull-10 columns">2, last</div> +</div> +<div class="row"> + <div class="large-9 large-push-3 columns">9</div> + <div class="large-3 large-pull-9 columns">3, last</div> +</div> +<div class="row"> + <div class="large-8 large-push-4 columns">8</div> + <div class="large-4 large-pull-8 columns">4, last</div> +</div> +<div class="row"> + <div class="small-5 small-push-7 medium-7 medium-push-5 columns">7</div> + <div class="small-7 small-pull-5 medium-5 medium-pull-7 columns">5, last</div> +</div> +<div class="row"> + <div class="medium-6 medium-push-6 columns">6</div> + <div class="medium-6 medium-pull-6 columns">6, last</div> +</div> +``` + +<div class="row display"> + <div class="small-10 small-push-2 columns">10</div> + <div class="small-2 small-pull-10 columns">2, last</div> +</div> +<div class="row display"> + <div class="large-9 large-push-3 columns">9</div> + <div class="large-3 large-pull-9 columns">3, last</div> +</div> +<div class="row display"> + <div class="large-8 large-push-4 columns">8</div> + <div class="large-4 large-pull-8 columns">4, last</div> +</div> +<div class="row display"> + <div class="small-5 small-push-7 medium-7 medium-push-5 columns">7</div> + <div class="small-7 small-pull-5 medium-5 medium-pull-7 columns">5, last</div> +</div> +<div class="row display"> + <div class="medium-6 medium-push-6 columns">6</div> + <div class="medium-6 medium-pull-6 columns">6, last</div> +</div> + +--- + +### Block Grids + +The block grid from Foundation 5 has been merged into the main grid. Add a class of the format `[size]-up-[n]` to change the size of all columns within the row. By default, the max number of columns you can use with block grid are 8. + +```html_example +<div class="row small-up-1 medium-up-2 large-up-4"> + <div class="column"> + <img src="//placehold.it/300x300" class="thumbnail" alt=""> + </div> + <div class="column"> + <img src="//placehold.it/300x300" class="thumbnail" alt=""> + </div> + <div class="column"> + <img src="//placehold.it/300x300" class="thumbnail" alt=""> + </div> + <div class="column"> + <img src="//placehold.it/300x300" class="thumbnail" alt=""> + </div> + <div class="column"> + <img src="//placehold.it/300x300" class="thumbnail" alt=""> + </div> + <div class="column"> + <img src="//placehold.it/300x300" class="thumbnail" alt=""> + </div> +</div> +``` + +--- + +## Building Semantically + +Our grid CSS is generated with a powerful set of Sass mixins, which you can use in your own code to build a semantic grid. + +### Rows + +Use the `grid-row()` mixin to create a row. + +```scss +.container { + @include grid-row; +} +``` + +--- + +### Columns + +Use the `grid-column()` mixin to create a column. There are a number of ways to define the width of the column. + +```scss +.main-content { + // Use the full column count (100%) + @include grid-column; + + // Use a column count (33%); + @include grid-column(4); + + // Use a percentage (15%) + @include grid-column(15%); + + // Use a custom fraction (20%) + @include grid-column(1 of 5); +} +``` + +The grid column calculator can also be accessed as a function. This gives you the percentage value, without any of the grid column CSS. + +```scss +.main-content { + width: grid-column(1 of 7); +} +``` + +To center a column semantically. Use ´grid-column-position(center);´. + +```scss +.centered-column { + @include grid-column-position(center); +} +``` + +--- + +### Multiple Grids + +By default, all grids use the number of columns set by the `$grid-column-count` variable. However, this can be selectively overridden within an instance of a row. + +In this example, the grid is 16 columns instead of the normal 12. Any references to column math inside the mixin will use the new column count. + +```scss +.container { + @include grid-row(16) { + .main-content { + // 5/16 = 31.25% + @include grid-column(5); + } + + .sidebar { + // 11/16 = 68.75% + @include grid-column(11); + } + } +} +``` + +You can also temporarily change the grid context without outputting any row CSS, by using the `grid-context()` mixin. + +```scss +@include grid-context(7) { + .sidebar { + @include grid-column(4); + } +} +``` + +Every other grid feature, from sizing to offsets to source ordering, can also be accessed with a mixin. Pair them with the `breakpoint()` mixin to make your grid responsive. + +Refer to the Sass documentation below to learn how each mixin works. + +```scss +.main-content { + // The mixins have shorthands, too! + @include grid-col; + + @include breakpoint(medium) { + // Changes size only + @include grid-col-size(8); + + // Changes position only + @include grid-col-pos(4); + } +} +``` diff --git a/libraries/foundation-6/docs/pages/index.md b/libraries/foundation-6/docs/pages/index.md new file mode 100755 index 00000000..a0d6a8a5 --- /dev/null +++ b/libraries/foundation-6/docs/pages/index.md @@ -0,0 +1,180 @@ +--- +title: Foundation for Sites +description: We built Foundation for Sites to be the most advanced responsive front-end framework in the world. +tags: + - index + - home +--- + +## Installing + +There are a number of ways to install Foundation for Sites. If you're just getting started, we recommend downloading Yeti Launch, which allows you to quickly set up starter projects with any Foundation framework. You can also install our Node CLI to do the same thing. + +It's also possible to manually install Foundation for Sites into your project through npm, Bower, Meteor, or Composer. + +<a href="installation.html" class="large button">Install Foundation for Sites</a> + +### Looking for Foundation 5? +We're still supporting Foundation 5 for those who don't want to take the leap into the future with us. You can view the docs, download a package or visit the Github page. + +<div class="button-group"> + <a href="http://foundation.zurb.com/downloads/foundation-5.5.3.zip" class="button">Download</a> + <a href="http://foundation.zurb.com/sites/docs/v/5.5.3" class="button">Docs</a> + <a href="https://github.com/zurb/foundation-sites/tree/V5" class="button">GitHub</a> +</div> + +--- + +## What's in the Box? + +Get to know the pieces of Foundation. + +### General + +<div class="row up-1 medium-up-2 large-up-3 docs-big-index"> + <div class="column"><a href="global.html"> + <strong>Global Styles</strong> + <p>Global styles applied by the Foundation framework.</p> + </a></div> + <div class="column"><a href="accessibility.html"> + <strong>Accessibility</strong> + <p>An overview of Foundation's accessibility hooks.</p> + </a></div> + <div class="column"><a href="rtl.html"> + <strong>Right-to-Left Support</strong> + <p>Getting Foundation working with RTL languages.</p> + </a></div> + <div class="column"><a href="sass.html"> + <strong>Sass</strong> + <p>Installing and using the Sass version of Foundation.</p> + </a></div> + <div class="column"><a href="javascript.html"> + <strong>JavaScript</strong> + <p>Initializing and using Foundation's JavaScript plugins.</p> + </a></div> + <div class="column"><a href="media-queries.html"> + <strong>Media Queries</strong> + <p>Working with Foundation's breakpoints.</p> + </a></div> + <div class="column"><a href="flexbox.html"> + <strong>Flexbox Mode</strong> + <p>Supercharge your CSS with flexbox.</p> + </a></div> + <div class="column"><a href="compatibility.html"> + <strong>Compatibility</strong> + <p>What browsers does Foundation work with?</p> + </a></div> + <div class="column"><a href="kitchen-sink.html"> + <strong>Kitchen Sink</strong> + <p>Every component on one page.</p> + </a></div> +</div> + +### Components + +<div class="row up-1 medium-up-3 docs-small-index"> + <div class="column"> + <section> + <h4>Layout</h4> + <ul> + <li><a href="grid.html">Grid</a></li> + <li><a href="flex-grid.html">Flex Grid</a></li> + <li><a href="forms.html">Forms</a></li> + <li><a href="visibility.html">Visibility Classes</a></li> + <li><a href="float-classes.html">Float Classes</a></li> + <li><a href="flexbox.html">Flexbox</a></li> + </ul> + </section> + + <section> + <h4>Typography</h4> + <ul> + <li><a href="base-typography.html">Base Styles</a></li> + <li><a href="typography-helpers.html">Helper Classes</a></li> + </ul> + </section> + + <section> + <h4>Controls</h4> + <ul> + <li><a href="button.html">Button</a></li> + <li><a href="button-group.html">Button Group</a></li> + <li><a href="close-button.html">Close Button</a></li> + <li><a href="slider.html">Slider</a></li> + <li><a href="switch.html">Switch</a></li> + </ul> + </section> + + <section> + <h4>Libraries</h4> + <ul> + <li><a href="motion-ui.html">Motion UI</a></li> + <li><a href="panini.html">Panini</a></li> + </ul> + </section> + </div> + <div class="column"> + <section> + <h4>Navigation</h4> + <ul> + <li><a href="navigation.html">Overview</a></li> + <li><a href="menu.html">Menu</a></li> + <li><a href="dropdown-menu.html">Dropdown Menu</a></li> + <li><a href="drilldown-menu.html">Drilldown Menu</a></li> + <li><a href="accordion-menu.html">Accordion Menu</a></li> + <li><a href="top-bar.html">Top Bar</a></li> + <li><a href="responsive-navigation.html">Responsive Navigation</a></li> + <li><a href="magellan.html">Magellan</a></li> + <li><a href="pagination.html">Pagination</a></li> + <li><a href="breadcrumbs.html">Breadcrumbs</a></li> + </ul> + </section> + + <section> + <h4>Containers</h4> + <ul> + <li><a href="accordion.html">Accordion</a></li> + <li><a href="callout.html">Callout</a></li> + <li><a href="dropdown.html">Dropdown</a></li> + <li><a href="media-object.html">Media Object</a></li> + <li><a href="off-canvas.html">Off-canvas</a></li> + <li><a href="reveal.html">Reveal</a></li> + <li><a href="table.html">Table</a></li> + <li><a href="tabs.html">Tabs</a></li> + </ul> + </section> + </div> + <div class="column"> + <section> + <h4>Media</h4> + <ul> + <li><a href="badge.html">Badge</a></li> + <li><a href="flex-video.html">Flex Video</a></li> + <li><a href="label.html">Label</a></li> + <li><a href="orbit.html">Orbit</a></li> + <li><a href="progress-bar.html">Progress Bar</a></li> + <li><a href="thumbnail.html">Thumbnail</a></li> + <li><a href="tooltip.html">Tooltip</a></li> + </ul> + </section> + + <section> + <h4>Plugins</h4> + <ul> + <li><a href="abide.html">Abide</a></li> + <li><a href="equalizer.html">Equalizer</a></li> + <li><a href="interchange.html">Interchange</a></li> + <li><a href="toggler.html">Toggler</a></li> + <li><a href="sticky.html">Sticky</a></li> + </ul> + </section> + + <section> + <h4>Sass</h4> + <ul> + <li><a href="sass-mixins.html">Mixins</a></li> + <li><a href="sass-functions.html">Functions</a></li> + </ul> + </section> + </div> +</div> diff --git a/libraries/foundation-6/docs/pages/installation.md b/libraries/foundation-6/docs/pages/installation.md new file mode 100755 index 00000000..56e4e808 --- /dev/null +++ b/libraries/foundation-6/docs/pages/installation.md @@ -0,0 +1,162 @@ +--- +title: Installation +description: There are many ways to install Foundation, but if you're just getting started, we have a few suggestions. +--- + +<!--## Yeti Launch--> + +<!--Yeti Launch is our Mac app for quickly spinning up blank projects for any of the three Foundation frameworks. If you're just getting started with Foundation, we recommend downloading Yeti Launch to get going right away.--> + +<!--<a href="http://foundation.zurb.com/develop/yeti-launch" class="large button">Download Yeti Launch</a>--> + +### Command-Line Tool + +Not a fan of GUIs? The Node-powered Foundation CLI can install the same template projects for you. Install it with npm: + +```bash +npm install --global foundation-cli +``` + +Depending on how your machine is configured, the command may fail with an `EACCESS` error. To get around this, run the command with `sudo` at the beginning: + +```bash +sudo npm install --global foundation-cli +``` + +<div class="callout alert"> + <p>If you already have the Foundation 5 CLI on your machine, you will only be able to access one of the commands, depending on how your command line environment is configured.</p> + + <p>If you want to remove the old CLI, run <code>gem uninstall foundation</code>. After testing this new CLI, if you want to go back to the old CLI, run <code>npm uninstall foundation-cli --global</code>.</p> +</div> + +Once you've installed the CLI, use the `new` command to start making a new project: + +```bash +foundation new +``` + +--- + +## Manual Setup + +### Basic Template + +To manually set up the basic template, first download it with Git: + +```bash +git clone https://github.com/zurb/foundation-sites-template projectname +``` + +Then open the folder in your command line, and install the needed dependencies: + +```bash +cd projectname +npm install +bower install +``` + +Finally, run `npm start` to run the Sass compiler. It will re-run every time you save a Sass file. + +### ZURB Template + +To manually set up the ZURB template, first download it with Git: + +```bash +git clone https://github.com/zurb/foundation-zurb-template projectname +``` + +Then open the folder in your command line, and install the needed dependencies: + +```bash +cd projectname +npm install +bower install +``` + +Finally, run `npm start` to run Gulp. Your finished site will be created in a folder called `dist`, viewable at this URL: + +``` +http://localhost:8000 +``` + +To create compressed, production-ready assets, run `npm run build`. + +--- + +## CSS Download + +If you aren't into Sass, we have a starter template with compiled CSS and JavaScript, as well as a starting `index.html` file for you to hack on. Just unzip and get coding! + +<a href="http://foundation.zurb.com/sites/download" class="large button">Download CSS Version</a> + +--- + +## HTML Starter Template +Start with this HTML template and adapt it to your needs. + +```html +<!doctype html> +<html class="no-js" lang="en"> + <head> + <meta charset="utf-8" /> + <meta http-equiv="x-ua-compatible" content="ie=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Foundation Starter Template</title> + <link rel="stylesheet" href="css/foundation.css" /> + </head> + <body> + <h1>Hello, world!</h1> + + <script src="js/vendor/jquery.min.js"></script> + <script src="js/vendor/what-input.min.js"></script> + <script src="js/foundation.min.js"></script> + <script> + $(document).foundation(); + </script> + + </body> +</html> + +``` + +--- + +## CDN Links + +The folks at [jsDelivr](https://www.jsdelivr.com) host the compressed Foundation CSS and JavaScript for us. Just drop one of these `<script>` tags into your HTML and you're set: + +```html +<!-- Compressed CSS --> +<link rel="stylesheet" href="https://cdn.jsdelivr.net/foundation/6.2.1/foundation.min.css"> + +<!-- Compressed JavaScript --> +<script src="https://cdn.jsdelivr.net/foundation/6.2.1/foundation.min.js"></script> +``` + +--- + +## Package Managers + +Foundation is available on npm, Bower, Meteor, and Composer. The package includes all of the source Sass and JavaScript files, as well as compiled CSS and JavaScript, in uncompressed and compressed flavors. + +- npm: `npm install foundation-sites` +- Bower: `bower install foundation-sites` +- Meteor: `meteor add zurb:foundation-sites` +- Composer: `php composer.phar require zurb/foundation` +- NuGet: `Install-Package foundation-sites` + +### Package Contents + +Here's what comes in the package. + +- `scss/`: Source Sass files. Use this folder as a load path in Sass. +- `js/`: Source JavaScript files. If you're using a build system, make sure `foundation.core.js` is loaded first. +- `dist/`: Compiled files. + - `css/`: Compiled CSS files. Includes minified and unminified files. + - `js/`: Concatenated JavaScript files. Includes minified and unminified files. + +--- + +## Other Integrations + +The Foundation community has helped us integrate the framework into Rails, WordPress, Django, and more. Head to our [resources page](http://foundation.zurb.com/sites/resources) to find even more ways to use Foundation. diff --git a/libraries/foundation-6/docs/pages/interchange.md b/libraries/foundation-6/docs/pages/interchange.md new file mode 100755 index 00000000..842af572 --- /dev/null +++ b/libraries/foundation-6/docs/pages/interchange.md @@ -0,0 +1,89 @@ +--- +title: Interchange +description: Interchange uses media queries to dynamically load responsive content that is appropriate for the user's device. +js: js/foundation.interchange.js +--- + +<img data-interchange="[assets/img/interchange/small.jpg, small], [assets/img/interchange/medium.jpg, medium], [assets/img/interchange/large.jpg, large]"> + +--- + +## Use with Images + +Bandwidth is precious on mobile networks, so it helps to serve users on smaller screens a smaller image. Using Interchange, you can serve up specific images for users depending on their screen size. CSS media queries are used to determine what size the user's device is, and which image should be served. + +In the above example, we have three different sizes of image: one for small screens, one for medium, and one for large. Use the below format to set up a responsive image. The image will change automatically as the browser resizes. + +```html +<img data-interchange="[assets/img/interchange/small.jpg, small], [assets/img/interchange/medium.jpg, medium], [assets/img/interchange/large.jpg, large]"> +``` + +The image set is a comma-separated list of items with this format: + +``` +[image_path, media_query] +``` + +`image_path` can be a relative or absolute path. `media_query` can be any CSS media query, or a Foundation breakpoint—see [Named Media Queries](#named-media-queries) below. + +<div class="callout primary"> + <p>Interchange evaluates rules in order, and the last rule to match will be used. For this reason, you should order your rules from smallest screen to largest screen.</p> +</div> + +--- + +## Use with HTML + +Interchange can also swap in and out entire chunks of HTML. This allows you to load in mobile-friendly components on small screens, or more advanced versions on large screens. + +In the below example, we've applied `data-interchange` to a `<div>` instead of an `<img>` element, and the paths are to HTML files instead of images. + +```html +<div data-interchange="[assets/partials/interchange-default.html, small], [assets/partials/interchange-medium.html, medium], [assets/partials/interchange-large.html, large]"></div> +``` + +<div id="docs-example-interchange" data-interchange="[assets/partials/interchange-default.html, small], [assets/partials/interchange-medium.html, medium], [assets/partials/interchange-large.html, large]"></div> + +--- + +## Use with Background Images + +When using Interchange on a non-`<img>` element, you can pass in an image path instead of an HTML path, and the element's `background-image` property will be set to the path of the matching rule. + +```html +<div data-interchange="[assets/img/interchange/small.jpg, small], [assets/img/interchange/medium.jpg, medium], [assets/img/interchange/large.jpg, large]"></div> +``` + +--- + +## Named Media Queries + +Interchange supports named queries as shorthands for full CSS media queries. Any breakpoint defined in the `$breakpoints` variable in your Sass will work, along with a few other keywords. [Learn more about changing the default breakpoints.](media-queries.html) + +Query Name | Media Query +-----------|------------ +small | `screen and (min-width: 0em)` +medium | `only screen and (min-width: 40em)` +large | `only screen and (min-width: 64em)` +xlarge | `only screen and (min-width: 75em)` +xxlarge | `only screen and (min-width: 90em)` +portrait | `screen and (orientation: portrait)` +landscape | `screen and (orientation: landscape)` +retina | `only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)` + +To add your own named media queries, add them as properties to `Foundation.Interchange.SPECIAL_QUERIES`. + +```js +Foundation.Interchange.SPECIAL_QUERIES['square'] = 'screen and (aspect-ratio: 1/1)'; +``` + +--- + +## Programmatic Use + +When using Interchange programmatically, you need to pass in your ruleset in the `options` object, as well as the *container* element, *not* the content elements, like so: + +```js +var $photoFrame = $('#some-container'); +var interchange = new Foundation.Interchange($photoFrame, {rules: "[path/to/default.jpg, small], [path/to/medium.jpg, medium], [path/to/large.jpg, large]"}); +``` diff --git a/libraries/foundation-6/docs/pages/javascript-utilities.md b/libraries/foundation-6/docs/pages/javascript-utilities.md new file mode 100755 index 00000000..c9e21919 --- /dev/null +++ b/libraries/foundation-6/docs/pages/javascript-utilities.md @@ -0,0 +1,177 @@ +--- +title: JavaScript Utilities +description: Our JavaScript Utility Libraries are easy to use and super helpful. +--- + +## Installing + +See our [JavaScript](javascript.html) and [Installation](installation.html) pages on how to install our files in your project. + +## Box +`js/foundation.util.box.js` + +One of the useful libraries is `Foundation.Box`, and it has a couple methods designed to make your life easier. You can pass either jQuery objects or plain JavaScript elements to both. + +```js + +var dims = Foundation.Box.GetDimensions(element); +``` +Will return an object that contains the dimensions of the `element` passed. The object return looks like: + +```js + +{ + height: 54, + width: 521, + offset: { + left: 198, + top: 1047 + }, + parentDims: { + height: ... // parentDims and windowDims share the same format as the element dimensions. + }, + windowDims: { + height: ... + } +} +``` + +Also included is the `ImNotTouchingYou` function. It returns a boolean based on whether the element you pass it is colliding with the edge of the window, or optionally, a parent element. The other two options are for detecting collisions on only one axis, and are simply booleans you pass in. +```js + +var clear = Foundation.Box.ImNotTouchingYou(element [, parent, leftAndRightOnly, topAndBottomOnly]); +``` + +## Keyboard +`js/foundation.util.keyboard.js` + +Another quite useful library, `Foundation.Keyboard` has several methods to make keyboard event interaction easier for all. Shout out to [Marius Olbertz](http://www.mariusolbertz.de/) of Germany who conceived and coded this library. + +Ever wanted a handy list of common keycodes and the keys they represent? Use `Foundation.Keyboard.keys`. This is an object containing key/value pairs of the most frequently used keys in our framework. + +Want to manage your own keyboard inputs? No problem! Within your `.on('key**')` callback, call `Foundation.Keyboard.parseKey(event)` to get a string of what key was pressed, e.g. `'TAB'` or `'ALT_X'`. +You can also use this function outside of the Foundation components in your own JavaScript code. + +What if you want to know if there's focusable elements somewhere on a page? Instead of writing that function and selector yourself, just use: +```js +var focusable = Foundation.Keyboard.findFocusable($('#content')); +``` + +The real gem of this library, however, is the `handleKey` function. Any plugin that is registered with the utility can call on this method to manage keyboard inputs. +```js +Foundation.Keyboard.register('pluginName', { + 'TAB': 'next' +}); +...//in event callback +Foundation.Keyboard.handleKey(event, 'pluginName', { + next: function(){ + //do stuff + } +}); +``` +There are also the functions `handled` and `unhandled` where you can place any code that shall always be executed after the key event has been handled or not. + +If you want to use your own key bindings, you can simply call the `Foundation.Keyboard.register` function even after Foundation has been initialized. + +## MediaQuery +`js/foundation.util.mediaQuery.js` + +The media query library used by Foundation has two publicly accessible functions and two properties: +```js + +Foundation.MediaQuery.get('medium'); +// returns the minimum pixel value for the `medium` breakpoint. +Foundation.MediaQuery.atLeast('large'); +// returns a boolean if the current screen size is, you guessed it, at least `large`. +Foundation.MediaQuery.queries; +// an array of media queries Foundation uses for breakpoints. +Foundation.MediaQuery.current; +// a string of the current breakpoint size. +``` + +Also included is an event emitter for breakpoint changes. You can hook into this event with +```js + +$(window).on('changed.zf.mediaquery', function(event, newSize, oldSize){}); +``` + +## Motion & Move +`js/foundation.util.motion.js` + +Two handy utilities, one little file. + +Foundation.Motion is the same JavaScript used by the [Motion-UI](https://github.com/zurb/motion-ui) library, and is included in Foundation 6. See the GitHub page for more details. + +Foundation.Move is a simple helper function for utilizing browsers' `requestAnimationFrame` method for hardware acceleration. Invoke like so: +```js +Foundation.Move(durationInMS, $element, function(){ + //animation logic +}); +``` +Your jQuery element will fire `finished.zf.animate` when the animation is complete. + +## Timer & Images Loaded +`js/foundation.util.timerAndImageLoader.js` + +Both functions are used by [Orbit](orbit.html) and can be useful elsewhere as well. +```js + +var timer = new Foundation.Timer($element, {duration: ms, infinite: bool}, callback); +// includes: timer.start(), timer.pause(), timer.restart() +``` +Similar to `setInterval`, except you can pause and pick back up where you left off. + +```js +Foundation.onImagesLoaded($images, callback); +``` +This will execute your callback function after all the images in your jQuery collection have loaded. + +## Touch +`js/foundation.util.touch.js` + +Gives you the ability to add swipe and psuedo-drag events to elements. + +```js +$('selector').addTouch().on('mousemove', handleDrag); +// Binds elements to touch events. Used in the Slider plugin for mobile devices. +$('selector').spotSwipe().on('swipeleft', handleLeftSwipe); +// Binds elements to swipe events. Used in the Orbit plugin for mobile devices. +``` + +## Triggers +`js/foundation.util.triggers.js` + +Provides a number of event listeners and triggers your script can hook into. Most of them are self-explanatory, and utilized in many Foundation plugins. +```html +<button data-open='someId'>I open something!</button> +<button data-close='someId'>I close something!</button> +<button data-toggle='someId'>I toggle something!</button> +``` +```js +// Add the data-open/close/toggle='idOfElement' tag to your markup. +// When a click event is triggered on that element, these are the non-bubbling events directed at your element. +// If you don't use an `id` selector, an event will be triggered that bubbles up to window. +$('selector').on('open.zf.trigger', handleOpen); +$('selector').on('close.zf.trigger', handleClose); +$('selector').on('toggle.zf.trigger', handleToggle); +``` +Besides these useful click triggers, there are also other listeners for you to tap into. Need to know when the window has been resized, but only when it's done resizing? How about a debounced scroll event? Add this markup and JavaScript and you're good to go! + +```html +<div data-scroll='someId'>...</div> +<div data-resize='someId'>...</div> +``` +```js +$('#someId').on('scrollme.zf.trigger', handleScroll); +$('#someId').on('resizeme.zf.trigger', handleResize); +``` + +## Miscellaneous + +Foundation includes a couple useful features in the core library that are used in many places, that you can tap into. + +`Foundation.GetYoDigits([number, namespace])` returns a base-36, psuedo-random string with a hyphenated namespace (if you include one). Both arguments are optional, it will by default return a string six characters long. + +`Foundation.getFnName(fn)` returns a string representation of a named function. Seems small, but believe us, it's useful. + +`Foundation.transitionend()` is a function<span data-tooltip title="Goodbye ZURB, I'll miss you"> </span>that returns the string of the properly vendor-prefixed version of `transitionend` events. Most browsers don't require a prefix these days, but for those that do, we've got you covered. But IE 9 doesn't support transitions?? Quite right you are! In that case our plugins that use transitions will simply snap to whatever location or visibility state they were headed to, and this function will fire a `transitionend` event manually on the element you passed. It still gives the desired results, and allows Motion-UI to work in IE 9. diff --git a/libraries/foundation-6/docs/pages/javascript.md b/libraries/foundation-6/docs/pages/javascript.md new file mode 100755 index 00000000..635f4b63 --- /dev/null +++ b/libraries/foundation-6/docs/pages/javascript.md @@ -0,0 +1,213 @@ +--- +title: JavaScript +description: Our JavaScript is easy to set up and only requires jQuery to get going. +--- + +## Installing + +You can get the Foundation JavaScript files from a ZIP download, package manager, or CDN. Check out the [Installation](installation.html) page to learn more. + +Once you have the files, add links to jQuery and Foundation as `<script>` tags at the bottom of your page, just before the closing `<body>` tag. + +```html +<script src="js/jquery.min.js"></script> +<!-- this will include every plugin and utility required by Foundation --> +<script src="js/foundation.min.js"></script> +``` + +<div class="callout warning"> + <p>Make sure Foundation loads <em>after</em> jQuery.</p> +</div> + +### Babel Required + +Our JavaScript uses some features of ECMAScript 2015. **If you use Foundation with a build system, you'll need to compile our code to ES5.** We use [Babel](https://babeljs.io/) in our templates to do this. Babel has [plugins](https://babeljs.io/docs/setup/) for every build system imaginable, so integrating it into an existing setup is easy. + +When configuring Babel to work with Foundation, you only need to include the `es2015` preset. At the root of your project, add a file called `.babelrc` with these contents to load that configuration: + +```json +{ + "presets": ["es2015"] +} +``` + +### File Structure + +All of Foundation's plugins ship as individual files, named `foundation.tabs.js`, `foundation.accordion.js`, and so on. These files are also combined into one big file called `foundation.js`, which allows you to get every plugin at once. + +If you're only using certain plugins, know that they all require `foundation.core.js` and `foundation.util.mediaQuery.js` to be loaded *first*. Some plugins also require specific utility libraries that ship with Foundation—refer to a plugin's documentation to find out which plugins require what, and see the [JavaScript Utilities](javascript-utilities.html) page for more information. + +```html +<!-- Example of selectively including files --> +<script src="js/jquery.min.js"></script> +<script src="js/foundation.core.js"></script> +<script src="js/foundation.util.mediaQuery.js"></script> +<script src="js/foundation.tabs.js"></script> +<script src="js/foundation.accordion.js"></script> +``` + +<div class="callout warning"> + <p>Loading many individual files like this creates a lot of network overhead, especially for users on mobile networks. To keep your pages loading quick, we recommend using a tool like <a href="http://gruntjs.com">Grunt</a> or <a href="http://gulpjs.com">Gulp</a> to combine all of your JavaScript files into one.</p> +</div> + +--- + +## Initializing + +The `.foundation()` function on the jQuery object will kick off every Foundation plugin at once. + +```js +$(document).foundation(); +``` + +You can also selectively initialize plugins by call the `.foundation();` method on one or more elements with a plugin. + +```js +$('#foo').foundation(); // initialize all plugins within the element `#foo` +$('.has-tip').foundation(); // initialize all tooltips on the page. +``` + +--- + +## Using Plugins + +Plugins are attached to HTML elements using data attributes. The data attribute will match the name of the plugin. For example, adding `data-accordion` to an element creates an accordion, while adding `data-tooltip` creates a tooltip link. + +```html_example +<p><span data-tooltip aria-haspopup="true" class="has-tip" tabindex="1" title="Fancy word for a beetle.">Scarabaeus</span></p> +``` + +<div class="callout warning"> + <p>A single element can only have one Foundation plugin on it at a time. However, most plugins can be nested inside other ones.</p> +</div> + +--- + +## Configuring Plugins + +Each plugin has a set of configuration settings that customize how it works. For example, you change how fast an [accordion](accordion.html) slides up and down, or if [tooltips](tooltip.html) should appear on touch devices. + +Plugin settings can be changed globally by changing the `DEFAULTS` property on the plugin. + +```js +Foundation.Accordion.defaults.slideSpeed = 500; +Foundation.Accordion.defaults.multiExpand = true; +``` + +An individual instance of a plugin can also have different settings. These can be set in the HTML or in JavaScript. +<div class="callout warning"> + <p>In the HTML, each setting can be defined as an individual data attribute. Note that camelCased options are converted to hyphenated words. In the below example, `multiExpand` becomes `data-multi-expand`.</p> +</div> + +```html +<div data-accordion data-slide-speed="500" data-multi-expand="true"></div> +``` + +Data options can also be set in bulk on one attribute, `data-options`. Options are written with the format `key: value;`, with a semicolon separating each option. The above example can be written using `data-options` like so: + +```html +<div data-accordion data-options="slideSpeed: 500; multiExpand: true;"></div> +``` +There is one exception to this rule above, in the [Sticky](sticky.html) plugin. Because of the way you pass top and bottom anchors to that plugin, you can't include them in your `data-options` attribute. If you are using a single anchor or no declared anchor at all, you can still use `data-options`, and you can use it for all other options available. + +<hr> +Setting options with JavaScript involves passing an object into the constructor function, like this: + +```js +var options = {multiExpand: true, allowAllClosed: false}; +var accordion = new Foundation.Accordion($('#some-accordion'), options); +``` + +It's worth noting that options passed to plugins via JavaScript take the highest precedence, and will overwrite any default values or options applied via the `data-some-option` tag. This is also how the `data-options="someOption:true; someOtherOption:false"` options are passed into constructor functions. So, if you were to say: +```html +<div data-accordion data-slide-speed="500" data-options="slideSpeed:250;">...</div> +``` +your accordion element would have a slide speed of 250 milliseconds. + +--- + +## Adding Plugins After Page Load + +If you add new HTML to the DOM, any plugins on those elements won't be initialized by default. Re-call the `.foundation()` function to check for new plugins. + +```js +$.ajax('assets/partials/kitten-carousel.html', function(data) { + $('#kitten-carousel').html(data).foundation(); +}); +``` + +--- + +## Adding Content to Plugins + +In previous versions of Foundation, there was a method for plugins called `reflow`, though it's inclusion on plugins wasn't universal. For Foundation 6 we've added a global `reInit` method that will remove and reapply event listeners, update the plugin's instance data for relevant information, like a new tab or content pane being added, and reset any cached data the plugin may rely on. + +This method can be called on a plugin class: +```js +Foundation.reInit('tooltip'); +``` +an array of plugin classes: +```js +Foundation.reInit(['tooltip', 'accordion', 'reveal']); +``` +or an individual element or collection of elements selected with jQuery: +```js +Foundation.reInit($('#some-plugin')); +Foundation.reInit($('.some-plugin-class')); +``` + +If passing strings, it is required to pass proper <strong>camelCased</strong> or <strong>kebab-cased</strong> plugin names. Passing `DropdownMenu` or `dropdown-menu` are equivalent. + +--- + +## Programmatic Use + +Plugins can be created programmatically in JavaScript. Every plugin is a class on the global `Foundation` object, with a constructor that accepts two parameters: an element to attach to, and an object of options. + +```js +var $accordion = new Foundation.Accordion($('#accordion'), { + slideSpeed: 500, + multiExpand: true +}); +``` + +Most plugins have a public API that allows you to manipulate it through JavaScript. Refer to a plugin's documentation to learn what functions are available. Invoking methods is easy as pie: + +```js +$('#reveal').foundation('open'); //will open a Reveal modal with id `reveal`. + +$('[data-tabs]').eq(0).foundation('selectTab', $('#example')); //will change the first Tabs on the page to whatever panel you choose. + +$('.tooltip').foundation('destroy'); //will destroy all Tooltips on the page. + +``` +You can use any jQuery selector you like, and if the selector encompasses multiple plugins, they will all have the same the chosen method invoked. You pass arguments just like you would any in other JavaScript `function(comma, delimited, so, easy)`. We did make an effort to reduce the number of public methods that require arguments, but check the plugin's page to see if it requires additional information. + +If you are creating your plugins programmatically, you can, of course, invoke methods directly: + +```js +var $modal = new Foundation.Reveal($('#some-modal'), options); +$modal.open(); +``` + +<div class="callout warning"> + <p>Plugin methods prefixed with an underscore are considered part of the internal API, which means they could change, break, or disappear without warning. We recommend sticking to only the public API, which is documented on each plugin's page.</p> +</div> + +--- + +## Events + +Every plugin fires DOM events when certain functions finish. For example, you can listen for when tabs change, or an off-canvas menu opens, and create a callback to respond to it. + +```js +$('[data-tabs]').on('change.zf.tabs', function() { + console.log('Those tabs sure did change!'); +}); +``` + +Refer to each plugin's documentation to see a list of events it fires, and when they fire. + +<div class="callout warning"> + <p>Starting with Foundation 6, we removed callbacks as plugin settings. All use of callbacks with plugins should be done as event listeners.</p> +</div> diff --git a/libraries/foundation-6/docs/pages/kitchen-sink.md b/libraries/foundation-6/docs/pages/kitchen-sink.md new file mode 100755 index 00000000..0b9d1737 --- /dev/null +++ b/libraries/foundation-6/docs/pages/kitchen-sink.md @@ -0,0 +1,1097 @@ +--- +title: Kitchen Sink +description: Everything but. +--- + +## Abide + +```html_example +<form data-abide novalidate> + <div data-abide-error class="alert callout" style="display: none;"> + <p><i class="fi-alert"></i> There are some errors in your form.</p> + </div> + <div class="row"> + <div class="small-12 columns"> + <label>Number Required + <input type="text" placeholder="1234" aria-describedby="exampleHelpText" required pattern="number"> + <span class="form-error"> + Yo, you had better fill this out, it's required. + </span> + </label> + <p class="help-text" id="exampleHelpText">Here's how you use this input field!</p> + </div> + <div class="small-12 columns"> + <label>Nothing Required! + <input type="text" placeholder="Use me, or don't" aria-describedby="exampleHelpTex" data-abide-ignore> + </label> + <p class="help-text" id="exampleHelpTex">This input is ignored by Abide using `data-abide-ignore`</p> + </div> + <div class="small-12 columns"> + <label>Password Required + <input type="password" id="password" placeholder="yeti4preZ" aria-describedby="exampleHelpText" required > + <span class="form-error"> + I'm required! + </span> + </label> + <p class="help-text" id="exampleHelpText">Enter a password please.</p> + </div> + <div class="small-12 columns"> + <label>Re-enter Password + <input type="password" placeholder="yeti4preZ" aria-describedby="exampleHelpText2" required pattern="alpha_numeric" data-equalto="password"> + <span class="form-error"> + Hey, passwords are supposed to match! + </span> + </label> + <p class="help-text" id="exampleHelpText2">This field is using the `data-equalto="password"` attribute, causing it to match the password field above.</p> + </div> + </div> + <div class="row"> + <div class="medium-6 columns"> + <label>URL Pattern, not required, but throws error if it doesn't match the Regular Expression for a valid URL. + <input type="text" placeholder="http://foundation.zurb.com" pattern="url"> + </label> + </div> + <div class="medium-6 columns"> + <label>European Cars, Choose One, it can't be the blank option. + <select id="select" required> + <option value=""></option> + <option value="volvo">Volvo</option> + <option value="saab">Saab</option> + <option value="mercedes">Mercedes</option> + <option value="audi">Audi</option> + </select> + </label> + </div> + </div> + <div class="row"> + <fieldset class="large-6 columns"> + <legend>Choose Your Favorite, and this is required, so you have to pick one.</legend> + <input type="radio" name="pokemon" value="Red" id="pokemonRed"><label for="pokemonRed">Red</label> + <input type="radio" name="pokemon" value="Blue" id="pokemonBlue" required><label for="pokemonBlue">Blue</label> + <input type="radio" name="pokemon" value="Yellow" id="pokemonYellow"><label for="pokemonYellow">Yellow</label> + </fieldset> + <fieldset class="large-6 columns"> + <legend>Choose Your Favorite - not required, you can leave this one blank.</legend> + <input type="radio" name="pockets" value="Red" id="pocketsRed"><label for="pocketsRed">Red</label> + <input type="radio" name="pockets" value="Blue" id="pocketsBlue"><label for="pocketsBlue">Blue</label> + <input type="radio" name="pockets" value="Yellow" id="pocketsYellow"><label for="pocketsYellow">Yellow</label> + </fieldset> + <fieldset class="large-6 columns"> + <legend>Check these out</legend> + <input id="checkbox1" type="checkbox"><label for="checkbox1">Checkbox 1</label> + <input id="checkbox2" type="checkbox" required><label for="checkbox2">Checkbox 2</label> + <input id="checkbox3" type="checkbox"><label for="checkbox3">Checkbox 3</label> + </fieldset> + </div> + <div class="row"> + <fieldset class="large-6 columns"> + <button class="button" type="submit" value="Submit">Submit</button> + </fieldset> + <fieldset class="large-6 columns"> + <button class="button" type="reset" value="Reset">Reset</button> + </fieldset> + </div> +</form> +``` + +--- + +## Accordion + +```html_example +<ul class="accordion" data-accordion role="tablist"> + <li class="accordion-item is-active"> + <!-- The tab title needs role="tab", an href, a unique ID, and aria-controls. --> + <a href="#panel1d" role="tab" class="accordion-title" id="panel1d-heading" aria-controls="panel1d">Accordion 1</a> + <!-- The content pane needs an ID that matches the above href, role="tabpanel", data-tab-content, and aria-labelledby. --> + <div id="panel1d" class="accordion-content" role="tabpanel" data-tab-content aria-labelledby="panel1d-heading"> + Panel 1. Lorem ipsum dolor + </div> + </li> + <li class="accordion-item"> + <!-- The tab title needs role="tab", an href, a unique ID, and aria-controls. --> + <a href="#panel1d" role="tab" class="accordion-title" id="panel1d-heading" aria-controls="panel1d">Accordion 1</a> + <!-- The content pane needs an ID that matches the above href, role="tabpanel", data-tab-content, and aria-labelledby. --> + <div id="panel1d" class="accordion-content" role="tabpanel" data-tab-content aria-labelledby="panel1d-heading"> + Panel 2. Lorem ipsum dolor + </div> + </li> + <li class="accordion-item"> + <!-- The tab title needs role="tab", an href, a unique ID, and aria-controls. --> + <a href="#panel1d" role="tab" class="accordion-title" id="panel1d-heading" aria-controls="panel1d">Accordion 1</a> + <!-- The content pane needs an ID that matches the above href, role="tabpanel", data-tab-content, and aria-labelledby. --> + <div id="panel1d" class="accordion-content" role="tabpanel" data-tab-content aria-labelledby="panel1d-heading"> + Panel 3. Lorem ipsum dolor + </div> + </li> +</ul> +``` + +--- + +## Accordion Menu + +```html_example +<ul class="vertical menu" data-accordion-menu> + <li> + <a href="#">Item 1</a> + <ul class="menu vertical nested is-active"> + <li> + <a href="#">Item 1A</a> + <ul class="menu vertical nested"> + <li><a href="#">Item 1Ai</a></li> + <li><a href="#">Item 1Aii</a></li> + <li><a href="#">Item 1Aiii</a></li> + </ul> + </li> + <li><a href="#">Item 1B</a></li> + <li><a href="#">Item 1C</a></li> + </ul> + </li> + <li> + <a href="#">Item 2</a> + <ul class="menu vertical nested"> + <li><a href="#">Item 2A</a></li> + <li><a href="#">Item 2B</a></li> + </ul> + </li> + <li><a href="#">Item 3</a></li> +</ul> +``` + +--- + +## Badge + +```html_example +<span class="secondary badge">2</span> +<span class="success badge">3</span> +<span class="alert badge">A</span> +<span class="warning badge">B</span> +``` + +--- + +## Breadcrumbs + +```html_example +<nav aria-label="You are here:" role="navigation"> + <ul class="breadcrumbs"> + <li><a href="#">Home</a></li> + <li><a href="#">Features</a></li> + <li class="disabled">Gene Splicing</li> + <li> + <span class="show-for-sr">Current: </span> Cloning + </li> + </ul> +</nav> +``` + +--- + +## Button + +```html_example +<!-- Anchors (links) --> +<a href="about.html" class="button">Learn More</a> +<a href="#features" class="button">View All Features</a> + +<!-- Buttons (actions) --> +<button type="button" class="success button">Save</button> +<button type="button" class="alert button">Delete</button> + +<a class="tiny button" href="#">So Tiny</a> +<a class="small button" href="#">So Small</a> +<a class="large button" href="#">So Large</a> +<a class="expanded button" href="#">Such Expand</a> + +<div class="button-group"> + <a class="button">One</a> + <a class="button">Two</a> + <a class="button">Three</a> +</div> +``` + +--- + +## Callout + +```html_example +<div class="callout"> + <h5>This is a callout.</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> + <a href="#">It's dangerous to go alone, take this.</a> +</div> + +<div class="callout secondary"> + <h5>This is a secondary callout</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> + <a href="#">It's dangerous to go alone, take this.</a> +</div> + +<div class="callout success"> + <h5>This is a success callout</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> + <a href="#">It's dangerous to go alone, take this.</a> +</div> + +<div class="callout warning"> + <h5>This is a warning callout</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> + <a href="#">It's dangerous to go alone, take this.</a> +</div> + +<div class="callout alert"> + <h5>This is an alert callout</h5> + <p>It has an easy to override visual style, and is appropriately subdued.</p> + <a href="#">It's dangerous to go alone, take this.</a> +</div> +``` + +--- + +## Close Button + +```html_example +<div class="callout"> + <button class="close-button" aria-label="Close alert" type="button"> + <span aria-hidden="true">×</span> + </button> + <p>This is a static close button example.</p> +</div> +``` + +--- + +## Drilldown Menu + +```html_example +<ul class="vertical menu" data-drilldown style="width: 200px" id="m1"> + <li> + <a href="#">Item 1</a> + <ul class="vertical menu" id="m2"> + <li> + <a href="#">Item 1A</a> + <ul class="vertical menu" id="m3"> + <li><a href="#">Item 1Aa</a></li> + <li><a href="#">Item 1Ba</a></li> + <li><a href="#">Item 1Ca</a></li> + <li><a href="#">Item 1Da</a></li> + <li><a href="#">Item 1Ea</a></li> + </ul> + </li> + <li><a href="#">Item 1B</a></li> + <li><a href="#">Item 1C</a></li> + <li><a href="#">Item 1D</a></li> + <li><a href="#">Item 1E</a></li> + </ul> + </li> + <li> + <a href="#">Item 2</a> + <ul class="vertical menu"> + <li><a href="#">Item 2A</a></li> + <li><a href="#">Item 2B</a></li> + <li><a href="#">Item 2C</a></li> + <li><a href="#">Item 2D</a></li> + <li><a href="#">Item 2E</a></li> + </ul> + </li> + <li> + <a href="#">Item 3</a> + <ul class="vertical menu"> + <li><a href="#">Item 3A</a></li> + <li><a href="#">Item 3B</a></li> + <li><a href="#">Item 3C</a></li> + <li><a href="#">Item 3D</a></li> + <li><a href="#">Item 3E</a></li> + </ul> + </li> + <li><a href='#'> Item 4</a></li> +</ul> +``` + +--- + +## Dropdown Menu + +```html_example +<ul class="dropdown menu" data-dropdown-menu> + <li> + <a>Item 1</a> + <ul class="menu"> + <li><a href="#">Item 1A Loooong</a></li> + <li> + <a href='#'> Item 1 sub</a> + <ul class='menu'> + <li><a href='#'>Item 1 subA</a></li> + <li><a href='#'>Item 1 subB</a></li> + <li> + <a href='#'> Item 1 sub</a> + <ul class='menu'> + <li><a href='#'>Item 1 subA</a></li> + <li><a href='#'>Item 1 subB</a></li> + </ul> + </li> + <li> + <a href='#'> Item 1 sub</a> + <ul class='menu'> + <li><a href='#'>Item 1 subA</a></li> + </ul> + </li> + </ul> + </li> + <li><a href="#">Item 1B</a></li> + </ul> + </li> + <li> + <a href="#">Item 2</a> + <ul class="menu"> + <li><a href="#">Item 2A</a></li> + <li><a href="#">Item 2B</a></li> + </ul> + </li> + <li><a href="#">Item 3</a></li> + <li><a href='#'>Item 4</a></li> +</ul> +``` + +--- + +## Dropdown Pane + +```html_example +<button class="button" type="button" data-toggle="example-dropdown">Toggle Dropdown</button> +<div class="dropdown-pane" id="example-dropdown" data-dropdown> + Just some junk that needs to be said. Or not. Your choice. +</div> +``` + +--- + +## Equalizer + +```html_example +<div class="row" data-equalizer data-equalize-on="medium" id="test-eq"> + <div class="medium-4 columns"> + <div class="callout" data-equalizer-watch> + <img src= "assets/img/generic/square-1.jpg"> + </div> + </div> + <div class="medium-4 columns"> + <div class="callout" data-equalizer-watch> + <p>Pellentesque habitant morbi tristique senectus et netus et, ante.</p> + </div> + </div> + <div class="medium-4 columns"> + <div class="callout" data-equalizer-watch> + <img src= "assets/img/generic/rectangle-1.jpg"> + </div> + </div> +</div> +``` + +--- + +## Flex Grid + +```html +<div class="row"> + <div class="small-6 columns">6 columns</div> + <div class="small-6 columns">6 columns</div> +</div> +<div class="row"> + <div class="medium-6 large-4 columns">12/6/4 columns</div> + <div class="medium-6 large-8 columns">12/6/8 columns</div> +</div> +``` + +<div class="row display"> + <div class="small-6 columns">6 columns</div> + <div class="small-6 columns">6 columns</div> +</div> +<div class="row display"> + <div class="medium-6 large-4 columns">12/6/4 columns</div> + <div class="medium-6 large-8 columns">12/6/8 columns</div> +</div> + +--- + +## Flex Video + +```html_example +<div class="flex-video"> + <iframe width="420" height="315" src="https://www.youtube.com/embed/V9gkYw35Vws" frameborder="0" allowfullscreen></iframe> +</div> +``` + +--- + +## Float Classes + +```html_example +<div class="callout clearfix"> + <a class="button float-left">Left</a> + <a class="button float-right">Right</a> +</div> +``` + +--- + +## Forms + +```html_example +<form> + <label>Input Label + <input type="text" placeholder=".small-12.columns" aria-describedby="exampleHelpText"> + </label> + <p class="help-text" id="exampleHelpText">Here's how you use this input field!</p> + <label> + How many puppies? + <input type="number" value="100"> + </label> + <label> + What books did you read over summer break? + <textarea placeholder="None"></textarea> + </label> + <label>Select Menu + <select> + <option value="husker">Husker</option> + <option value="starbuck">Starbuck</option> + <option value="hotdog">Hot Dog</option> + <option value="apollo">Apollo</option> + </select> + </label> + <div class="row"> + <fieldset class="large-6 columns"> + <legend>Choose Your Favorite</legend> + <input type="radio" name="pokemon" value="Red" id="pokemonRed" required><label for="pokemonRed">Red</label> + <input type="radio" name="pokemon" value="Blue" id="pokemonBlue"><label for="pokemonBlue">Blue</label> + <input type="radio" name="pokemon" value="Yellow" id="pokemonYellow"><label for="pokemonYellow">Yellow</label> + </fieldset> + <fieldset class="large-6 columns"> + <legend>Check these out</legend> + <input id="checkbox1" type="checkbox"><label for="checkbox1">Checkbox 1</label> + <input id="checkbox2" type="checkbox"><label for="checkbox2">Checkbox 2</label> + <input id="checkbox3" type="checkbox"><label for="checkbox3">Checkbox 3</label> + </fieldset> + </div> + <div class="row"> + <div class="small-3 columns"> + <label for="middle-label" class="text-right middle">Label</label> + </div> + <div class="small-9 columns"> + <input type="text" id="middle-label" placeholder="Right- and middle-aligned text input"> + </div> + </div> + <div class="input-group"> + <span class="input-group-label">$</span> + <input class="input-group-field" type="url"> + <a class="input-group-button button">Submit</a> + </div> +</form> +``` + +--- + +## Grid + +```html +<div class="row"> + <div class="small-2 medium-3 large-4 columns">2/3/4 columns</div> + <div class="small-4 medium-3 large-4 columns">4/3/4 columns</div> + <div class="small-6 large-4 columns">6/6/4 columns</div> +</div> +<div class="row"> + <div class="large-3 columns">12/12/3 columns</div> + <div class="large-6 columns">12/12/6 columns</div> + <div class="large-3 columns">12/12/3 columns</div> +</div> +<div class="row"> + <div class="small-6 large-2 columns">6/6/2 columns</div> + <div class="small-6 large-8 columns">6/6/8 columns</div> + <div class="small-12 large-2 columns">12/12/2 columns</div> +</div> +<div class="row"> + <div class="small-3 columns">3 columns</div> + <div class="small-9 columns">9 columns</div> +</div> +<div class="row"> + <div class="medium-8 large-4 columns">12/8/4 columns</div> + <div class="medium-4 large-8 columns">12/4/8 columns</div> +</div> +``` + +<div class="row display"> + <div class="small-2 medium-3 large-4 columns">2/3/4 columns</div> + <div class="small-4 medium-3 large-4 columns">4/3/4 columns</div> + <div class="small-6 large-4 columns">6/6/4 columns</div> +</div> +<div class="row display"> + <div class="large-3 columns">12/12/3 columns</div> + <div class="large-6 columns">12/12/6 columns</div> + <div class="large-3 columns">12/12/3 columns</div> +</div> +<div class="row display"> + <div class="small-6 large-2 columns">6/6/2 columns</div> + <div class="small-6 large-8 columns">6/6/8 columns</div> + <div class="small-12 large-2 columns">12/12/2 columns</div> +</div> +<div class="row display"> + <div class="small-3 columns">3 columns</div> + <div class="small-9 columns">9 columns</div> +</div> +<div class="row display"> + <div class="medium-8 large-4 columns">12/8/4 columns</div> + <div class="medium-4 large-8 columns">12/4/8 columns</div> +</div> + +--- + +## Interchange + +```html_example +<img data-interchange="[assets/img/interchange/small.jpg, small], [assets/img/interchange/medium.jpg, medium], [assets/img/interchange/large.jpg, large]"> +``` + +--- + +## Label + +```html_example +<span class="secondary label">Secondary Label</span> +<span class="success label">Success Label</span> +<span class="alert label">Alert Label</span> +<span class="warning label">Warning Label</span> +``` + +--- + +## Magellan + +```html +<ul class="horizontal menu" data-magellan> + <li><a href="#first">First Arrival</a></li> + <li><a href="#second">Second Arrival</a></li> + <li><a href="#third">Third Arrival</a></li> +</ul> +<div class="sections"> + <section id="first" data-magellan-target="first"> + <h4>First section</h4> + <p>Duis scelerisque ligula ut metus rhoncus scelerisque. Integer ut egestas metus. Nulla facilisi. Aenean luctus magna lobortis ligula rhoncus, sit amet lacinia lorem sagittis. Sed ultrices at metus id aliquet. Vestibulum in condimentum quam, id ornare erat. Vivamus nec justo quis ex fringilla condimentum ac non quam.</p> + </section> + <section id="second" data-magellan-target="second"> + <h4>Second section</h4> + <p>Sed vulputate, felis interdum molestie viverra, neque urna placerat dui, ac efficitur est magna eu tellus. Nunc sodales consequat eros at bibendum. Vestibulum hendrerit gravida elit non eleifend. Nunc at vehicula ipsum. Vestibulum eu suscipit felis. Proin ipsum felis, consequat congue quam ac, efficitur tincidunt ex. Morbi accumsan sem iaculis nunc malesuada tincidunt.</p> + </section> + <section id="third" data-magellan-target="third"> + <h4>Second section</h4> + <p>Aliquam orci orci, maximus a pulvinar id, tincidunt a neque. Suspendisse eros diam, finibus et faucibus ac, suscipit feugiat orci. Morbi scelerisque sem id blandit malesuada. Donec suscipit tincidunt dolor in blandit. Nam rhoncus risus vitae lacinia dictum. Cras lobortis, nulla non faucibus mattis, tellus nibh condimentum eros, posuere volutpat arcu risus vel ante. In ut ullamcorper eros, et vestibulum risus. Fusce auctor risus vitae diam viverra tincidunt.</p> + </section> +</div> +``` + +<ul class="horizontal menu" data-magellan> + <li><a href="#first">First Arrival</a></li> + <li><a href="#second">Second Arrival</a></li> + <li><a href="#third">Third Arrival</a></li> +</ul> + +--- + +## Media Object + +```html_example +<div class="media-object"> + <div class="media-object-section"> + <img src= "http://placeimg.com/200/200/people"> + </div> + <div class="media-object-section"> + <h4>Dreams feel real while we're in them.</h4> + <p>I'm going to improvise. Listen, there's something you should know about me... about inception. An idea is like a virus, resilient, highly contagious. The smallest seed of an idea can grow. It can grow to define or destroy you.</p> + </div> +</div> +``` + +--- + +## Menu + +```html_example +<ul class="menu"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + <li><a href="#">Four</a></li> +</ul> + +<ul class="menu icon-top"> + <li><a href="#"><i class="fi-list"></i> <span>One</span></a></li> + <li><a href="#"><i class="fi-list"></i> <span>Two</span></a></li> + <li><a href="#"><i class="fi-list"></i> <span>Three</span></a></li> + <li><a href="#"><i class="fi-list"></i> <span>Four</span></a></li> +</ul> +``` + +--- + +## Off-canvas + +``` +<body> + <div class="off-canvas-wrapper"> + <div class="off-canvas-wrapper-inner" data-off-canvas-wrapper> + <div class="off-canvas position-left" id="offCanvasLeft" data-off-canvas> + <!-- left off-canvas markup --> + </div> + <div class="off-canvas position-right" id="offCanvasRight" data-off-canvas data-position="right"> + <!-- right off-canvas markup --> + </div> + <div class="off-canvas-content" data-off-canvas-content> + <!-- page content --> + </div> + </div> + </div> +</body> +``` + +```html_example +<button type="button" class="button" data-toggle="offCanvasLeft">Open Menu</button> +``` + +--- + +## Orbit + +```html_example +<div class="orbit" role="region" aria-label="Favorite Space Pictures" data-orbit> + <ul class="orbit-container"> + <button class="orbit-previous" aria-label="previous"><span class="show-for-sr">Previous Slide</span>◀</button> + <button class="orbit-next" aria-label="next"><span class="show-for-sr">Next Slide</span>▶</button> + <li class="is-active orbit-slide"> + <div> + <h3 class="text-center">You can also throw some text in here!</h3> + <p class="text-center">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde harum rem, beatae ipsa consectetur quisquam. Rerum ratione, delectus atque tempore sed, suscipit ullam, beatae distinctio cupiditate ipsam eligendi tempora expedita.</p> + <h3 class="text-center">This Orbit slide has chill</h3> + </div> + </li> + <li class="orbit-slide"> + <div> + <h3 class="text-center">You can also throw some text in here!</h3> + <p class="text-center">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde harum rem, beatae ipsa consectetur quisquam. Rerum ratione, delectus atque tempore sed, suscipit ullam, beatae distinctio cupiditate ipsam eligendi tempora expedita.</p> + <h3 class="text-center">This Orbit slide has chill</h3> + </div> + </li> + <li class="orbit-slide"> + <div> + <h3 class="text-center">You can also throw some text in here!</h3> + <p class="text-center">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde harum rem, beatae ipsa consectetur quisquam. Rerum ratione, delectus atque tempore sed, suscipit ullam, beatae distinctio cupiditate ipsam eligendi tempora expedita.</p> + <h3 class="text-center">This Orbit slide has chill</h3> + </div> + </li> + <li class="orbit-slide"> + <div> + <h3 class="text-center">You can also throw some text in here!</h3> + <p class="text-center">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde harum rem, beatae ipsa consectetur quisquam. Rerum ratione, delectus atque tempore sed, suscipit ullam, beatae distinctio cupiditate ipsam eligendi tempora expedita.</p> + <h3 class="text-center">This Orbit slide has chill</h3> + </div> + </li> + </ul> + <nav class="orbit-bullets"> + <button class="is-active" data-slide="0"><span class="show-for-sr">First slide details.</span><span class="show-for-sr">Current Slide</span></button> + <button data-slide="1"><span class="show-for-sr">Second slide details.</span></button> + <button data-slide="2"><span class="show-for-sr">Third slide details.</span></button> + <button data-slide="3"><span class="show-for-sr">Fourth slide details.</span></button> + </nav> +</div> +``` + +--- + +## Pagination + +```html_example +<ul class="pagination" role="navigation" aria-label="Pagination"> + <li class="disabled">Previous <span class="show-for-sr">page</span></li> + <li class="current"><span class="show-for-sr">You're on page</span> 1</li> + <li><a href="#" aria-label="Page 2">2</a></li> + <li><a href="#" aria-label="Page 3">3</a></li> + <li><a href="#" aria-label="Page 4">4</a></li> + <li class="ellipsis" aria-hidden="true"></li> + <li><a href="#" aria-label="Page 12">12</a></li> + <li><a href="#" aria-label="Page 13">13</a></li> + <li><a href="#" aria-label="Next page">Next <span class="show-for-sr">page</span></a></li> +</ul> +``` + +--- + +## Progress Bar + +```html_example +<div class="success progress" role="progressbar" tabindex="0" aria-valuenow="25" aria-valuemin="0" aria-valuetext="25 percent" aria-valuemax="100"> + <div class="progress-meter" style="width: 25%"> + <p class="progress-meter-text">25%</p> + </div> +</div> + +<div class="warning progress"> + <div class="progress-meter" style="width: 50%"> + <p class="progress-meter-text">50%</p> + </div> +</div> + +<div class="alert progress"> + <div class="progress-meter" style="width: 75%"> + <p class="progress-meter-text">75%</p> + </div> +</div> +``` + +--- + +## Responsive Menu + +```html_example +<ul class="vertical medium-horizontal menu"> + <li><a href="#">Item 1</a></li> + <li><a href="#">Item 2</a></li> + <li><a href="#">Item 3</a></li> +</ul> +``` + +--- + +## Responsive Toggle + +```html_example +<div class="title-bar" data-responsive-toggle="example-menu" data-hide-for="medium"> + <button class="menu-icon" type="button" data-toggle></button> + <div class="title-bar-title">Menu</div> +</div> + +<div class="top-bar" id="example-menu"> + <div class="top-bar-left"> + <ul class="dropdown menu" data-dropdown-menu> + <li class="menu-text">Site Title</li> + <li class="has-submenu"> + <a href="#">One</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </div> + <div class="top-bar-right"> + <ul class="menu"> + <li><input type="search" placeholder="Search"></li> + <li><button type="button" class="button">Search</button></li> + </ul> + </div> +</div> +``` + +--- + +## Reveal + +```html_example +<p><a data-open="exampleModal1">Click me for a modal</a></p> + +<div class="reveal" id="exampleModal1" data-reveal> + <h1>Awesome. I Have It.</h1> + <p class="lead">Your couch. It is mine.</p> + <p>I'm a cool paragraph that lives inside of an even cooler modal. Wins!</p> + <button class="close-button" data-close aria-label="Close reveal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> +``` + +--- + +## Slider + +```html_example +<div class="slider" data-slider data-initial-start='50' data-end='200'> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span> + <span class="slider-fill" data-slider-fill></span> + <input type="hidden"> +</div> + +<div class="slider vertical" data-slider data-initial-start='25' data-end='200' data-vertical="true"> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span> + <span class="slider-fill" data-slider-fill></span> + <input type="hidden"> +</div> + +<div class="slider" data-slider data-initial-start='25' data-initial-end='75'> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span> + <span class="slider-fill" data-slider-fill></span> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span> + <input type="hidden"> + <input type="hidden"> +</div> +``` + +--- + +## Sticky + +```html_example +<div class="row"> + <div class="columns small-12"> + <div class="columns small-6" id="example1" data-something> + <p id="doodle"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + <p> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + <p> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + <p> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + </div> + <div class="columns small-6 right" data-sticky-container> + <div class="sticky" data-sticky data-anchor="example1"> + <img class="thumbnail" src="assets/img/generic/rectangle-3.jpg"> + </div> + </div> + </div> +</div> +``` + +--- + +## Switch + +```html_example +<div class="switch tiny"> + <input class="switch-input" id="tinySwitch" type="checkbox" name="exampleSwitch"> + <label class="switch-paddle" for="tinySwitch"> + <span class="show-for-sr">Tiny Sandwiches Enabled</span> + </label> +</div> + +<div class="switch small"> + <input class="switch-input" id="smallSwitch" type="checkbox" name="exampleSwitch"> + <label class="switch-paddle" for="smallSwitch"> + <span class="show-for-sr">Small Portions Only</span> + </label> +</div> + +<div class="switch large"> + <input class="switch-input" id="largeSwitch" type="checkbox" name="exampleSwitch"> + <label class="switch-paddle" for="largeSwitch"> + <span class="show-for-sr">Show Large Elephants</span> + </label> +</div> +``` + +--- + +## Table + +```html_example +<table> + <thead> + <tr> + <th width="200">Table Header</th> + <th>Table Header</th> + <th width="150">Table Header</th> + <th width="150">Table Header</th> + </tr> + </thead> + <tbody> + <tr> + <td>Content Goes Here</td> + <td>This is longer content Donec id elit non mi porta gravida at eget metus.</td> + <td>Content Goes Here</td> + <td>Content Goes Here</td> + </tr> + <tr> + <td>Content Goes Here</td> + <td>This is longer Content Goes Here Donec id elit non mi porta gravida at eget metus.</td> + <td>Content Goes Here</td> + <td>Content Goes Here</td> + </tr> + <tr> + <td>Content Goes Here</td> + <td>This is longer Content Goes Here Donec id elit non mi porta gravida at eget metus.</td> + <td>Content Goes Here</td> + <td>Content Goes Here</td> + </tr> + </tbody> +</table> +``` + +--- + +## Tabs + +```html_example +<ul class="tabs" data-tabs id="example-tabs"> + <li class="tabs-title is-active"><a href="#panel1" aria-selected="true">Tab 1</a></li> + <li class="tabs-title"><a href="#panel2">Tab 2</a></li> + <li class="tabs-title"><a href="#panel3">Tab 3</a></li> + <li class="tabs-title"><a href="#panel4">Tab 4</a></li> + <li class="tabs-title"><a href="#panel5">Tab 5</a></li> + <li class="tabs-title"><a href="#panel6">Tab 6</a></li> +</ul> + +<div class="tabs-content" data-tabs-content="example-tabs"> + <div class="tabs-panel is-active" id="panel1"> + <p>one</p> + <p>Check me out! I'm a super cool Tab panel with text content!</p> + </div> + <div class="tabs-panel" id="panel2"> + <p>two</p> + <img class="thumbnail" src="assets/img/generic/rectangle-7.jpg"> + </div> + <div class="tabs-panel" id="panel3"> + <p>three</p> + <p>Check me out! I'm a super cool Tab panel with text content!</p> + </div> + <div class="tabs-panel" id="panel4"> + <p>four</p> + <img class="thumbnail" src="assets/img/generic/rectangle-2.jpg"> + </div> + <div class="tabs-panel" id="panel5"> + <p>five</p> + <p>Check me out! I'm a super cool Tab panel with text content!</p> + </div> + <div class="tabs-panel" id="panel6"> + <p>six</p> + <img class="thumbnail" src="assets/img/generic/rectangle-8.jpg"> + </div> +</div> +``` + +--- + +## Thumbnail + +```html_example +<div class="row"> + <div class="small-4 columns"> + <img class="thumbnail" src="assets/img/thumbnail/01.jpg" alt="Photo of Uranus."> + </div> + <div class="small-4 columns"> + <img class="thumbnail" src="assets/img/thumbnail/02.jpg" alt="Photo of Neptune."> + </div> + <div class="small-4 columns"> + <img class="thumbnail" src="assets/img/thumbnail/03.jpg" alt="Photo of Pluto."> + </div> +</div> +``` + +--- + +## Title Bar + +```html_example +<div class="title-bar"> + <div class="title-bar-left"> + <button class="menu-icon" type="button"></button> + <span class="title-bar-title">Foundation</span> + </div> + <div class="title-bar-right"> + <button class="menu-icon" type="button"></button> + </div> +</div> +``` + +--- + +## Toggler + +```html_example +<p><a data-toggle="menuBar">Expand!</a></p> + +<ul class="menu" id="menuBar" data-toggler=".expanded"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + <li><a href="#">Four</a></li> +</ul> +``` + +--- + +## Tooltip + +```html_example +<p>The <span data-tooltip aria-haspopup="true" class="has-tip" data-disable-hover='false' tabindex=1 title="Fancy word for a beetle.">scarabaeus</span> hung quite clear of any branches, and, if allowed to fall, would have fallen at our feet. Legrand immediately took the scythe, and cleared with it a circular space, three or four yards in diameter, just beneath the insect, and, having accomplished this, ordered Jupiter to let go the string and come down from the tree.</p> +``` + +--- + +## Top Bar + +```html_example +<div class="top-bar"> + <div class="top-bar-left"> + <ul class="dropdown menu" data-dropdown-menu> + <li class="menu-text">Site Title</li> + <li class="has-submenu"> + <a href="#">One</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </div> + <div class="top-bar-right"> + <ul class="menu"> + <li><input type="search" placeholder="Search"></li> + <li><button type="button" class="button">Search</button></li> + </ul> + </div> +</div> +``` + +--- + +## Visibility Classes + +```html_example +<p>You are on a small screen or larger.</p> +<p class="show-for-medium">You are on a medium screen or larger.</p> +<p class="show-for-large">You are on a large screen or larger.</p> +<p class="show-for-small-only">You are <em>definitely</em> on a small screen.</p> +<p class="show-for-medium-only">You are <em>definitely</em> on a medium screen.</p> +<p class="show-for-large-only">You are <em>definitely</em> on a large screen.</p> + +<p class="hide-for-medium">You are <em>not</em> on a medium screen or larger.</p> +<p class="hide-for-large">You are <em>not</em> on a large screen or larger.</p> +<p class="hide-for-small-only">You are <em>definitely not</em> on a small screen.</p> +<p class="hide-for-medium-only">You are <em>definitely not</em> on a medium screen.</p> +<p class="hide-for-large-only">You are <em>definitely not</em> on a large screen.</p> +<p class="hide">Can't touch this.</p> + +<p class="invisible">Can sort of touch this.</p> + +<p class="show-for-landscape">You are in landscape orientation.</p> +<p class="show-for-portrait">You are in portrait orientation.</p> + +<p class="show-for-sr">This text can only be read by a screen reader.</p> +<p>There's a line of text above this one, you just can't see it.</p> + +<p aria-hidden="true">This text can be seen, but won't be read by a screen reader.</p> + +<p><a class="show-on-focus" href="#mainContent">Skip to Content</a></p> +<header id="header" role="banner"> +</header> +<main id="mainContent" role="main" tabindex="0"> +</main> +``` diff --git a/libraries/foundation-6/docs/pages/label.md b/libraries/foundation-6/docs/pages/label.md new file mode 100755 index 00000000..b2feec5e --- /dev/null +++ b/libraries/foundation-6/docs/pages/label.md @@ -0,0 +1,55 @@ +--- +title: Label +description: Labels are useful inline styles that can be dropped into body copy to call out certain sections or to attach metadata. For example, you can attach a label that notes when something was updated. +sass: scss/components/_label.scss +--- + +## Basics + +Add the `.label` class to an element to create a label. In the below example, we're using `<span>`, but any tag will work fine. + +```html_example +<span class="label">Default Label</span> +``` + +<br> + +A label will typically be describing another element on the page. To bind the two elements together, give the label a unique ID, and reference that ID in an `aria-describedby` attribute on the main element. + +```html +<p aria-describedby="emailLabel">Re: re: re: you won't believe what's in this email!</p> +<span class="label" id="emailLabel">High Priority<span> +``` + +If an element is described by multiple labels, place multiple IDs inside of `aria-describedby`. + +```html +<p aria-describedby="emailLabel1 emailLabel2">Re: re: re: you won't believe what's in this email!</p> +<span class="label" id="emailLabel">High Priority<span> +<span class="label" id="emailLabe2">Unread<span> +``` + +--- + +## Coloring + +Labels can be colored with the same classes used for buttons and other components. + +```html_example +<span class="secondary label">Secondary Label</span> +<span class="success label">Success Label</span> +<span class="alert label">Alert Label</span> +<span class="warning label">Warning Label</span> +``` + +--- + +### With Icons + +An icon can be dropped into a label just fine. We're using the [Foundation icon font](http://zurb.com/playground/foundation-icon-fonts-3) here, but any icon fonts or image-based icons will work fine. + +```html_example +<span class="alert label"><i class="fi-x-circle"></i> Alert Label</span> +<span class="warning label"><i class="fi-x"></i> Warning Label</span> +<span class="info label"><i class="fi-widget"></i> Info Label</span> +``` diff --git a/libraries/foundation-6/docs/pages/magellan.md b/libraries/foundation-6/docs/pages/magellan.md new file mode 100755 index 00000000..5262922c --- /dev/null +++ b/libraries/foundation-6/docs/pages/magellan.md @@ -0,0 +1,74 @@ +--- +title: Magellan +description: Magellan allows you to create navigation that tracks the active section of a page your user is in. Pair it with our Sticky plugin to create a fixed navigation element. +js: js/foundation.magellan.js +tags: + - navigation +--- + +<div data-sticky-container> + <div class="sticky" id="sticky-magellan" style="width:100%;" data-sticky data-margin-top="0" data-margin-bottom="0" data-top-anchor="setup" data-btm-anchor="destroy:bottom"> + <nav data-magellan class="sticky-mag" data-bar-offset="25"> + <ul class="horizontal menu expanded"> + <li><a href="#setup">Setup</a></li> + <li><a href="#sticky-navigation">Sticky Navigation</a></li> + <li><a href="#javascript-reference">JavaScript Reference</a></li> + </ul> + </nav> + </div> +</div> + +<br> + +## Setup + +You can use Magellan with any navigation element, like our [Menu](menu.html) or your own custom component. Just add the attribute `data-magellan` to the container, and links to specific sections of your page. Each section needs a unique ID. + +```html +<ul class="horizontal menu" data-magellan> + <li><a href="#first">First Arrival</a></li> + <li><a href="#second">Second Arrival</a></li> + <li><a href="#third">Third Arrival</a></li> +</ul> +<div class="sections"> + <section id="first" data-magellan-target="first">First Section</section> + <section id="second" data-magellan-target="second">Second Section</section> + <section id="third" data-magellan-target="third">Third Section</section> +</div> +``` + +--- + +## Sticky Navigation + +You can use Magellan with our Sticky plugin to create a persistent navigation header or sidebar. + +This first example is a simplified version of the table of contents on the right side of this page: + +```html +<div class="large-3 columns" data-sticky-container> + <nav class="columns sticky" data-sticky data-anchor="exampleId" data-sticky-on="large"> + <ul class="vertical menu" data-magellan> + <li><a href="#first">First Arrival</a></li> + <li><a href="#second">Second Arrival</a></li> + <li><a href="#third">Third Arrival</a></li> + </ul> + </nav> +</div> +``` + +This example is the menu bar floating at the top of the page. + +```html +<div data-sticky-container> + <div class="sticky" id="example" data-sticky data-margin-top="0" style="width:100%;" data-margin-bottom="0" data-top-anchor="topAnchorExample" data-btm-anchor="bottomOfContentId:bottom"> + <nav data-magellan> + <ul class="horizontal menu expanded"> + <li><a href="#first">First Arrival</a></li> + <li><a href="#second">Second Arrival</a></li> + <li><a href="#third">Third Arrival</a></li> + </ul> + </nav> + </div> +</div> +``` diff --git a/libraries/foundation-6/docs/pages/media-object.md b/libraries/foundation-6/docs/pages/media-object.md new file mode 100755 index 00000000..1bcfa75b --- /dev/null +++ b/libraries/foundation-6/docs/pages/media-object.md @@ -0,0 +1,143 @@ +--- +title: Media Object +description: Media objects are super useful components for displaying an item, usually an image, alongside some content, usually text. You could put lists, grids, or even other media objects inside. +sass: scss/components/_media-object.scss +flex: true +--- + +## Basics + +A media object is a container with the class `.media-object`, and two or three sections with the class `.media-object-section`. + +```html_example +<div class="media-object"> + <div class="media-object-section"> + <div class="thumbnail"> + <img src= "assets/img/media-object/avatar-1.jpg"> + </div> + </div> + <div class="media-object-section"> + <h4>Dreams feel real while we're in them.</h4> + <p>I'm going to improvise. Listen, there's something you should know about me... about inception. An idea is like a virus, resilient, highly contagious. The smallest seed of an idea can grow. It can grow to define or destroy you.</p> + </div> +</div> +``` + +<div class="primary callout"> + <p>In flexbox mode, the class `.main-section` must be added to your center section in order to properly size it.</p> +</div> + +```html +<div class="media-object"> + <div class="media-object-section"> + <div class="thumbnail"> + <img src= "assets/img/media-object/avatar-1.jpg"> + </div> + </div> + <div class="media-object-section main-section"> + <h4>Dreams feel real while we're in them.</h4> + <p>I'm going to improvise. Listen, there's something you should know about me... about inception. An idea is like a virus, resilient, highly contagious. The smallest seed of an idea can grow. It can grow to define or destroy you.</p> + </div> +</div> +``` + +--- + +## Section Alignment + +Each section aligns to the top by default, but individual sections can also be middle- or bottom-aligned with the `.middle` and `.bottom` classes. + +```html_example +<div class="media-object"> + <div class="media-object-section middle"> + <div class="thumbnail"> + <img src= "assets/img/media-object/avatar-2.jpg"> + </div> + </div> + <div class="media-object-section"> + <h4>Why is it so important to dream?</h4> + <p>So, once we've made the plant, how do we go out? Hope you have something more elegant in mind than shooting me in the head? A kick. What's a kick? This, Ariadne, would be a kick.</p> + <p>What is the most resilient parasite? Bacteria? A virus? An intestinal worm? An idea. Resilient... highly contagious. Once an idea has taken hold of the brain it's almost impossible to eradicate. An idea that is fully formed - fully understood - that sticks; right in there somewhere.</p> + </div> + <div class="media-object-section bottom"> + <div class="thumbnail"> + <img src= "assets/img/media-object/avatar-3.jpg"> + </div> + </div> +</div> +``` + +In flexbox mode, you can use the <a href="flex-classes.html">flexbox helper classes</a> instead to get the same result. The `.align-*` classes can be used on the container to align every child section at once, or individual child sections can be aligned with `.align-self-*` classes. + +```html +<div class="media-object"> + <div class="media-object-section align-self-center"> + <div class="thumbnail"> + <img src= "assets/img/media-object/avatar-2.jpg"> + </div> + </div> + <div class="media-object-section main-section"> + <h4>Why is it so important to dream?</h4> + <p>So, once we've made the plant, how do we go out? Hope you have something more elegant in mind than shooting me in the head? A kick. What's a kick? This, Ariadne, would be a kick.</p> + <p>What is the most resilient parasite? Bacteria? A virus? An intestinal worm? An idea. Resilient... highly contagious. Once an idea has taken hold of the brain it's almost impossible to eradicate. An idea that is fully formed - fully understood - that sticks; right in there somewhere.</p> + </div> + <div class="media-object-section align-self-bottom"> + <div class="thumbnail"> + <img src= "assets/img/media-object/avatar-3.jpg"> + </div> + </div> +</div> +``` + +--- + +### Stack on Small + +By adding the `.stack-for-small` class, you can make your media object responsive. Images will get a width of 100%, but this can be changed. + +```html_example +<div class="media-object stack-for-small"> + <div class="media-object-section"> + <div class="thumbnail"> + <img src= "assets/img/generic/rectangle-1.jpg"> + </div> + </div> + <div class="media-object-section"> + <h4>I Can Stack.</h4> + <p>Shrink the browser width to see me stack. I do tricks for dog treats, but I'm not a dog.</p> + </div> +</div> +``` + +--- + +### Nesting Media Objects + +By nesting a media object into the media-object-section section, you can easily indent it. This is great for comment strings. + +```html_example +<div class="media-object"> + <div class="media-object-section"> + <div class="thumbnail"> + <img src= "assets/img/media-object/avatar-1.jpg"> + </div> + </div> + <div class="media-object-section"> + <h4>I'm First!</h4> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Porro at, tenetur cum beatae excepturi id ipsa? Esse dolor laboriosam itaque ea nesciunt, earum, ipsum commodi beatae velit id enim repellat.</p> + <!-- Nested media object starts here --> + <div class="media-object"> + <div class="media-object-section"> + <div class="thumbnail"> + <img src= "assets/img/media-object/avatar-2.jpg"> + </div> + </div> + <div class="media-object-section"> + <h4>I'm Second!</h4> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptas magni, quam mollitia voluptatum in, animi suscipit tempora ea consequuntur non nulla vitae doloremque. Eius rerum, cum earum quae eveniet odio.</p> + </div> + </div> + <!-- And ends here --> + </div> +</div> +``` diff --git a/libraries/foundation-6/docs/pages/media-queries.md b/libraries/foundation-6/docs/pages/media-queries.md new file mode 100755 index 00000000..959bfe82 --- /dev/null +++ b/libraries/foundation-6/docs/pages/media-queries.md @@ -0,0 +1,215 @@ +--- +title: Media Queries +description: CSS media queries allow us to adjust the display and orientation of content at different screen sizes. +sass: scss/util/_breakpoint.scss +js: js/foundation.util.mediaQuery.js +tags: + - breakpoints +--- + +## Default Media Queries + +Foundation for Sites has three core breakpoints: + +- **Small:** any screen. +- **Medium:** any screen 640 pixels or wider. +- **Large:** any screen 1024 pixels or wider. + +Many components can be modified at different screen sizes using special *breakpoint classes*. The grid is the most obvious example. In the code below, the left-hand column is six columns wide on small screens, hence `.small-6`. On medium-sized screens, the class `.medium-4` overrides the small style, changing the column to be four wide. + +```html +<div class="row"> + <div class="small-6 medium-4 columns"></div> + <div class="small-6 medium-8 columns"></div> +</div> +``` + +If you're using the CSS version of Foundation, use these media queries to imitate the three core breakpoints: + +```css +/* Small only */ +@media screen and (max-width: 39.9375em) {} + +/* Medium and up */ +@media screen and (min-width: 40em) {} + +/* Medium only */ +@media screen and (min-width: 40em) and (max-width: 63.9375em) {} + +/* Large and up */ +@media screen and (min-width: 64em) {} + +/* Large only */ +@media screen and (min-width: 64em) and (max-width: 74.9375em) {} +``` + +--- + +## Upgrading from Foundation 5 + +In Foundation 5, breakpoints were accessed using a series of Sass variables named `$small-up`, `$small-only`, `$medium-only`, and so on. In Foundation 6, this method of writing media queries has been replaced with a dedicated [breakpoint mixin](#the-breakpoint-mixin), described below. **The legacy variables will be removed in Foundation 6.3.** + +To upgrade your existing media queries, replace rulesets like this: + +```scss +@media #{$medium-only} { +} +``` + +With this: + +```scss +@include breakpoint(medium only) { +} +``` + +--- + +## Changing the Breakpoints + +If you're using the Sass version of Foundation, the default breakpoints can be changed. The names of the breakpoints, and their widths, are stored in a `$breakpoints` variable in the settings file. + +```scss +$breakpoints: ( + small: 0px, + medium: 640px, + large: 1024px, + xlarge: 1200px, + xxlarge: 1440px, +); +``` + +<div class="primary callout"> + <p>Even though the above values are in pixels, they're converted to ems at the end for use in media queries.</p> +</div> + +Changing the widths of any of the breakpoints is as easy as changing the pixel values in this map. Note that here there are two extra breakpoints: `xlarge` and `xxlarge`. We don't use these for any components, and also don't output any CSS classes that use them by default. + +You can change that by modifying the `$breakpoint-classes` variable in your settings file. This is a list of breakpoint names. Adding or removing names from the list will change the CSS class output. It looks like this by default: + +```scss +$breakpoint-classes: (small medium large); +``` + +For example, to get `.xlarge` classes in your CSS, for use in the grid, Menu, and more, just add it to the end of the list: + +```scss +$breakpoint-classes: (small medium large xlarge); +``` + +--- + +## Sass + +### The Breakpoint Mixin + +Our `breakpoint()` mixin makes it easy to write media queries. You can use the named breakpoints, or a custom pixel, rem, or em value. + +To use the mixin, call it with `@include`, and then include the CSS content you want inside the curly braces. + +```scss +.element { + // Only affects medium screens and larger + @include breakpoint(medium) { + // All CSS in here goes inside the media query + } +} +``` + +The behavior of the media query can be changed by adding the keyword `down` or `only` after the breakpoint value, separated by a space. + +```scss +.element { + // Only affects medium screens and smaller + @include breakpoint(medium down) { } + // Only affects medium screens, not small or large + @include breakpoint(medium only) { } +} +``` + +It's also possible to pass in custom values. You can enter a pixel, rem, or em value—all values are converted to em at the end. + +```scss +.element { + // Converted to 20em + @include breakpoint(320px) { } + // Unitless values are assumed to be pixels + @include breakpoint(320) { } + // Converted to 40em + @include breakpoint(40rem) { } +} +``` + +Lastly, there are three special media queries that are not width-based: `portrait`, `landscape`, and `retina`. Using these keywords with the `breakpoint()` mixin will output a media query for device orientation or pixel density, rather than screen width. + +```scss +.element { + @include breakpoint(landscape) { + // CSS for landscape-oriented devices only + } + @include breakpoint(retina) { + // CSS for high-resolution displays only + } +} +``` + +--- + +### Breakpoint Function + +The functionality of the `breakpoint()` mixin comes from an internal function, also called `breakpoint()`. If you want to write your own media queries, you can use the `breakpoint()` function to access the logic of the mixin directly. + +```scss +@media screen and #{breakpoint(medium)} { + // Medium and up styles +} +``` + +This can be used to combine multiple media queries together. + +```scss +@media screen and #{breakpoint(medium)} and #{breakpoint(xlarge down)} { + // Medium to extra large styles +} +``` + +--- + +## JavaScript + +### Working with Media Queries + +The Foundation JavaScript includes a set of helper functions for working with media queries. They're all on the `Foundation.MediaQuery` object. + +Get the name of the current breakpoint with `MediaQuery.current`. + +```js +Foundation.MediaQuery.current // => 'small', 'medium', etc. +``` + +To see if the screen is currently a certain breakpoint or larger, use `MediaQuery.atLeast`. + +```js +if (Foundation.MediaQuery.atLeast('medium')) { + // True if medium or large + // False if small +} +``` + +To get the media query of a breakpoint, use `MediaQuery.get`. + +```js +Foundation.MediaQuery.get('medium') // => only screen and (min-width: 640px) +``` + +--- + +### Watching for Breakpoint Changes + +The media query helper broadcasts an event on the window every time the breakpoint changes. We use this internally with plugins like Interchange to detect a shift in breakpoint. You can also subscribe to the event yourself. + +```js +$(window).on('changed.zf.mediaquery', function(event, newSize, oldSize) { + // newSize is the name of the now-current breakpoint, oldSize is the previous breakpoint +}); +``` diff --git a/libraries/foundation-6/docs/pages/menu.md b/libraries/foundation-6/docs/pages/menu.md new file mode 100755 index 00000000..e077a5f6 --- /dev/null +++ b/libraries/foundation-6/docs/pages/menu.md @@ -0,0 +1,206 @@ +--- +title: Menu +description: Our flexible menu component makes it easy to build many common navigation patterns, all with the same markup. +sass: scss/components/_menu.scss +tags: + - navigation + - side nav + - sub nav + - icon bar + - top bar +flex: true +--- + +The menu is a flexible, all-purpose component for navigation. It replaces Foundation 5's inline list, side nav, sub nav, and icon bar, unifying them into one component. + +--- + +## Basic Menu + +All versions of the menu are a `<ul>` filled with `<li>` elements containing links. By default, a Menu is horizontally oriented. + +```html_example +<ul class="menu"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + <li><a href="#">Four</a></li> +</ul> +``` + +--- + +## Item Alignment + +By default, each item in the menu aligns to the left. They can also be aligned to the right with the `.align-right` class. + +<div class="warning callout"> + <p>In a <a href="rtl.html">right-to-left</a> environment, items align to the right by default, and the class <code>.align-left</code> can be used to reverse direction.</p> +</div> + +```html_example +<ul class="menu align-right"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + <li><a href="#">Four</a></li> +</ul> +``` + +<br> + +To align items in the middle, add a wrapping element with the class `.menu-centered`. + +<div class="primary callout"> + <p>If you're using <a href="flexbox.html">Flexbox mode</a>, you don't need the wrapper class. Instead, you can just add the class <code>.align-center</code> to the menu.</p> +</div> + +```html_example +<div class="menu-centered"> + <ul class="menu"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + <li><a href="#">Four</a></li> + </ul> +</div> +``` + +<br> + +Items can also be set to expand out and take up an even amount of space, with the `.expanded` class. Thanks to the magic of CSS, the items will automatically size themselves equally depending on how many are inside the menu. + +```html_example +<ul class="menu expanded"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> +</ul> +``` + +<ul class="menu expanded"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> +</ul> + +<ul class="menu expanded"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + <li><a href="#">Four</a></li> +</ul> + +--- + +## Vertical Menu + +Add the `.vertical` class to a Menu to switch its orientation. + +```html_example +<ul class="menu vertical"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + <li><a href="#">Four</a></li> +</ul> +``` + +--- + +## Simple Style + +Add the `.simple` class to a Menu to remove the padding and color change. This style imitates the inline list from Foundation 5. + +```html_example +<ul class="menu simple"> + <li>One</li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + <li><a href="#">Four</a></li> +</ul> +``` + +--- + +## Nested Style + +Add a new menu inside the `<li>` of a Menu and add the class `.nested` to create a nested menu. The nested Menu has extra padding on the inside. + +```html_example +<ul class="vertical menu"> + <li> + <a href="#">One</a> + <ul class="nested vertical menu"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + <li><a href="#">Four</a></li> + </ul> + </li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + <li><a href="#">Four</a></li> +</ul> +``` + +--- + +## Active State + +Add the class `.active` to any `<li>` to create an active state. You could apply this server-side to mark the active page, or dynamically with JavaScript. + +```html_example +<ul class="menu"> + <li class="active"><a>Home</a></li> + <li><a>About</a></li> + <li><a>Nachos</a></li> +</ul> +``` + +--- + +## Text + +Because the padding of the menu item is applied to the `<a>`, if you try to add an item that's text only, it will be misaligned. To get around this, add the class `.menu-text` to any `<li>` that doesn't have a link inside of it. + +```html_example +<ul class="menu"> + <li class="menu-text">Site Title</li> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> +</ul> +``` + +--- + +## Icons + +Menu items can have icons. Wrap the text of the item in a `<span>`, and then add an `<img>` element before the `<span>`. If you're using the Foundation icon font, the `<img>` will be an `<i>` instead. + +```html_example +<ul class="menu"> + <li><a href="#"><i class="fi-list"></i> <span>One</span></a></li> + <li><a href="#"><i class="fi-list"></i> <span>Two</span></a></li> + <li><a href="#"><i class="fi-list"></i> <span>Three</span></a></li> + <li><a href="#"><i class="fi-list"></i> <span>Four</span></a></li> +</ul> +``` + +--- + +Add the class `.icon-top` to the Menu to orient icons above the text. + +```html_example +<ul class="menu icon-top"> + <li><a href="#"><i class="fi-list"></i> <span>One</span></a></li> + <li><a href="#"><i class="fi-list"></i> <span>Two</span></a></li> + <li><a href="#"><i class="fi-list"></i> <span>Three</span></a></li> + <li><a href="#"><i class="fi-list"></i> <span>Four</span></a></li> +</ul> +``` +--- + +## Sticky Navigation + +See the documentation for the [Sticky](sticky.html#sticky-navigation) plugin to see how to easily make a sticky nav bar. diff --git a/libraries/foundation-6/docs/pages/motion-ui.md b/libraries/foundation-6/docs/pages/motion-ui.md new file mode 100755 index 00000000..7380bf59 --- /dev/null +++ b/libraries/foundation-6/docs/pages/motion-ui.md @@ -0,0 +1,187 @@ +--- +title: Motion UI +description: A Sass library for creating flexible UI transitions and animations. +library: + github: https://github.com/zurb/motion-ui + docs: https://github.com/zurb/motion-ui/tree/master/docs +--- + +Motion UI is a standalone library that powers the transition effects used in a number of Foundation components, including [Toggler](toggler.html), [Reveal](reveal.html), and [Orbit](orbit.html). The transitions are powered by special transition classes that the Motion UI Sass creates. For example, here are two instances of Toggler—one using fade classes (`.fade-in` and `.fade-out`), and one using slide classes (`.slide-in-down` and `.slide-out-up`). + +```html +<div data-toggler data-animate="fade-in fade-out" class="callout secondary"> + <p>This panel fades.</p> +</div> + +<div data-toggler data-animate="slide-in-down slide-out-up" class="callout secondary"> + <p>This panel slides.</p> +</div> +``` + +<button type="button" class="button" data-toggle="motion-example-1">Fade</button><button type="button" class="button" data-toggle="motion-example-2">Slide</button> +<div class="row"> + <div class="small-6 columns"> + <div data-toggler data-animate="fade-in fade-out" class="callout secondary ease" id="motion-example-1"> + <p>This panel <strong>fades</strong>.</p> + </div> + </div> + <div class="small-6 columns"> + <div data-toggler data-animate="slide-in-down slide-out-up" class="callout secondary ease" id="motion-example-2"> + <p>This panel <strong>slides</strong>.</p> + </div> + </div> +</div> + +--- + +## Installing + +**Motion UI is already included in both [starter projects](starter-projects.html).** If you want to add it to an existing project, follow these steps. + +First, install the library with npm or Bower. + +```bash +npm install motion-ui --save-dev + bower install motion-ui --save-dev +``` + +Next, add the path `[modules_folder]/motion-ui/src` to your Sass compiler's import path list. Here's what you would add in Compass, via `config.rb`: + +```ruby +add_import_path 'node_modules/motion-ui/src' +``` + +Here's how it works using gulp-sass: + +```js +gulp.src('./src/scss/app.scss') + .pipe(sass({ + includePaths: ['node_modules/motion-ui/src'] + })); +``` + +Finally, import the library into your Sass file. + +```scss +@import 'motion-ui' +``` + +Or, another way to start using Motion UI is through a CDN. + +```html +<!-- Insert this within your head tag and after foundation.css --> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/motion-ui/1.1.1/motion-ui.min.css" /> + +``` + +--- + +## Built-in Transitions + +Motion UI includes more than two dozen built-in transition classes. They can be enabled by adding this line to your Sass file, after you've imported the library: + +```scss +@include motion-ui-transitions; +``` + +<div> + <select name="docs-transitions" class="docs-transitions"> + <optgroup label="Slide"> + <option value="slide-in-down">slide-in-down</option> + <option value="slide-in-left">slide-in-left</option> + <option value="slide-in-up">slide-in-up</option> + <option value="slide-in-right">slide-in-right</option> + <option value="slide-out-down">slide-out-down</option> + <option value="slide-out-left">slide-out-left</option> + <option value="slide-out-up">slide-out-up</option> + <option value="slide-out-right">slide-out-right</option> + </optgroup> + <optgroup label="Fade"> + <option value="fade-in">fade-in</option> + <option value="fade-out">fade-out</option> + </optgroup> + <optgroup label="Hinge"> + <option value="hinge-in-from-top">hinge-in-from-top</option> + <option value="hinge-in-from-right">hinge-in-from-right</option> + <option value="hinge-in-from-bottom">hinge-in-from-bottom</option> + <option value="hinge-in-from-left">hinge-in-from-left</option> + <option value="hinge-in-from-middle-x">hinge-in-from-middle-x</option> + <option value="hinge-in-from-middle-y">hinge-in-from-middle-y</option> + <option value="hinge-out-from-top">hinge-out-from-top</option> + <option value="hinge-out-from-right">hinge-out-from-right</option> + <option value="hinge-out-from-bottom">hinge-out-from-bottom</option> + <option value="hinge-out-from-left">hinge-out-from-left</option> + <option value="hinge-out-from-middle-x">hinge-out-from-middle-x</option> + <option value="hinge-out-from-middle-y">hinge-out-from-middle-y</option> + </optgroup> + <optgroup label="Scale"> + <option value="scale-in-up">scale-in-up</option> + <option value="scale-in-down">scale-in-down</option> + <option value="scale-out-up">scale-out-up</option> + <option value="scale-out-down">scale-out-down</option> + </optgroup> + <optgroup label="Spin"> + <option value="spin-in">spin-in</option> + <option value="spin-out">spin-out</option> + <option value="spin-in-ccw">spin-in-ccw</option> + <option value="spin-out-ccw">spin-out-ccw</option> + </optgroup> + </select> + <img src="assets/img/generic/voyager.jpg" class="docs-transition-demo"> +</div> + +--- + +## Custom Transitions + +Custom transition classes can be made using Motion UI's mixin library. Here's an example of a custom hinge. **Refer to [Motion UI's transition documentation](https://github.com/zurb/motion-ui/blob/master/docs/transitions.md) to learn more.** + +```scss +@include mui-hinge( + $state: in, + $from: top, + $turn-origin: from-back, + $duration: 0.5s, + $timing: easeInOut +); +``` + +--- + +## Animation + +You can use the same five transition effects to create CSS animations as well. The library also allows you to create series effects, with animations on multiple elements happening in a queue. **Refer to [Motion UI's animation documentation](https://github.com/zurb/motion-ui/blob/master/docs/animations.md) to learn more.** + +<button type="button" class="button" data-docs-example-series>Play Animation</button> +<div class="row" id="series-example"> + <div class="small-4 columns"> + <img class="thumbnail" src= "assets/img/generic/square-1.jpg" id="series-example-1"> + </div> + <div class="small-4 columns"> + <img class="thumbnail" src= "assets/img/generic/square-2.jpg" id="series-example-2"> + </div> + <div class="small-4 columns"> + <img class="thumbnail" src= "assets/img/generic/square-3.jpg" id="series-example-3"> + </div> +</div> + +--- + +## JavaScript Reference + +Motion UI includes a tiny JavaScript utility that will work anywhere as long as jQuery is loaded. However, Foundation 6 includes a customized version of this code that is included in `js/foundation.util.motion.js`. If you are using the Foundation version of this utility, and you wish to animate your own elements, trigger it this way: + +```js +var elem = $('#elem-to-animate'); + +Foundation.Motion.animateIn(elem, animationClass [, callback]); +Foundation.Motion.animateOut(elem, animationClass [, callback]); +``` + +The callback is optional in this case, and will fire when the animation is complete. +<div class="callout primary"> + <p>Please note that the duration/animation speed for Motion UI animations are controlled via Sass mixin variables. The JavaScript handles the addition and removal of classes and event listener/callback firing only. + <br> + If you are individually including your `<script>` tags, make sure you are including the `js/foundation.util.motion.js` path. + </p> +</div> diff --git a/libraries/foundation-6/docs/pages/navigation.md b/libraries/foundation-6/docs/pages/navigation.md new file mode 100755 index 00000000..1860b738 --- /dev/null +++ b/libraries/foundation-6/docs/pages/navigation.md @@ -0,0 +1,280 @@ +--- +title: Navigation +description: Foundation is bundled with many simple navigation patterns, which can be combined to form more complex, robust responsive navigation solutions. +--- + +## Basics: Menu + +The Menu is an all-purpose navigation component. It can be aligned horizontally or vertically, can be nested, and supports icons. [Learn more about the Menu.](menu.html) + +All menus use the `ul > li > a` pattern. The markup is a little strict, but this makes it easy to attach a navigation plugin to any menu, as you'll see below. + +Here's a basic Menu. + +```html_example +<ul class="menu"> + <li><a href="#">Item One</a></li> + <li><a href="#">Item Two</a></li> + <li><a href="#">Item Three</a></li> +</ul> +``` + +--- + +To nest menus, add a new `<ul>` inside of an `<li>`, *after* the `<a>` inside. + +```html +<ul class="menu"> + <li> + <a href="#">Item One</a> + <ul class="menu"> + <li><a href="#">Item One-one</a></li> + </ul> + </li> + <li><a href="#">Item Two</a></li> + <li><a href="#">Item Three</a></li> +</ul> +``` + +--- + +## Top Bar + +Top bar is a simple wrapper around these menu patterns. It supports a left-hand and right-hand section, which collapse on top of each other on small screens. [Learn more about the top bar.](top-bar.html) + +<div class="top-bar"> + <div class="top-bar-left"> + <ul class="dropdown menu" data-dropdown-menu> + <li class="menu-text">Site Title</li> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </div> + <div class="top-bar-right"> + <ul class="menu"> + <li><input type="search" placeholder="Search"></li> + <li><button type="button" class="button">Search</button></li> + </ul> + </div> +</div> + +--- + +## Menu Plugins + +The basic Menu can be enhanced with one of three **Menu plugins**. All three use the exact same markup to create a different style of multi-tier navigation. + +### Dropdown Menu + +The dropdown menu plugin (`data-dropdown-menu`) converts a nested menu into a series of dropdown menus. The nested menus can be opened through hover, click, or keyboard. [Learn more about the dropdown menu.](dropdown-menu.html) + +<ul class="dropdown menu" data-dropdown-menu> + <li class="has-submenu"> + <a>Item 1</a> + <ul class="submenu menu" data-submenu> + <li><a href="#">Item 1A Loooong</a></li> + <li class="has-submenu"> + <a href="#"> Item 1 sub</a> + <ul class="submenu menu" data-submenu> + <li><a href="#">Item 1 subA</a></li> + <li><a href="#">Item 1 subB</a></li> + <li class="has-submenu"> + <a href="#"> Item 1 sub</a> + <ul class="submenu menu" data-submenu> + <li><a href="#">Item 1 subA</a></li> + <li><a href="#">Item 1 subB</a></li> + </ul> + </li> + <li class="has-submenu"> + <a href="#">Item 1 sub</a> + <ul class="submenu menu" data-submenu> + <li><a href="#">Item 1 subA</a></li> + <li><a href="#">Item 1 subB</a></li> + </ul> + </li> + + </ul> + </li> + <li><a href="#">Item 1B</a></li> + </ul> + </li> + <li class="has-submenu"> + <a href="#">Item 2</a> + <ul class="submenu menu" data-submenu> + <li><a href="#">Item 2A</a></li> + <li><a href="#">Item 2B</a></li> + </ul> + </li> + <li class="has-submenu"> + <a href="#">Item 3</a> + <ul class="submenu menu" data-submenu> + <li><a href="#">Item 3A</a></li> + <li><a href="#">Item 3B</a></li> + </ul> + </li> + <li><a href="#">Item 4</a></li> +</ul> + +--- + +### Drilldown Menu + +The drilldown menu plugin (`data-drilldown`) converts a nested menu into a series of sliding menus. Clicking an item slides the next level menu into view. [Learn more about the drilldown menu.](drilldown-menu.html) + +<ul class="vertical menu" data-drilldown style="width: 300px;" id="m1"> + <li class="has-submenu"> + <a href="#">Item 1</a> + <ul class="vertical menu" data-submenu id="m2"> + <li class="has-submenu"> + <a href="#">Item 1A</a> + <ul class="vertical menu" data-submenu id="m3"> + <li><a href="#">Item 1Aa</a></li> + <li><a href="#">Item 1Ba</a></li> + <li><a href="#">Item 1Ca</a></li> + <li><a href="#">Item 1Da</a></li> + <li><a href="#">Item 1Ea</a></li> + </ul> + </li> + <li><a href="#">Item 1B</a></li> + <li><a href="#">Item 1C</a></li> + <li><a href="#">Item 1D</a></li> + <li><a href="#">Item 1E</a></li> + </ul> + </li> + <li class="has-submenu"> + <a href="#">Item 2</a> + <ul class="vertical menu" data-submenu> + <li><a href="#">Item 2A</a></li> + <li><a href="#">Item 2B</a></li> + <li><a href="#">Item 2C</a></li> + <li><a href="#">Item 2D</a></li> + <li><a href="#">Item 2E</a></li> + </ul> + </li> + <li class="has-submenu"> + <a href="#">Item 3</a> + <ul class="vertical menu" data-submenu> + <li><a href="#">Item 3A</a></li> + <li><a href="#">Item 3B</a></li> + <li><a href="#">Item 3C</a></li> + <li><a href="#">Item 3D</a></li> + <li><a href="#">Item 3E</a></li> + </ul> + </li> + <li><a href="#"> Item 4</a></li> +</ul> + +--- + +### Accordion Menu + +The accordion menu plugin (`data-accordion-menu`) converts a nested menu into a series of collapsed accordions. Clicking an item slides down the nested menu. [Learn more about the accordion menu.](accordion-menu.html) + +<div class="vertical menu" data-accordion-menu> + <li class="has-submenu"> + <a href="#">Item 1</a> + <ul class="menu vertical nested is-active" data-submenu> + <li class="has-submenu"> + <a href="#">Item 1A</a> + <ul class="menu vertical nested" data-submenu> + <li><a href="#">Item 1Ai</a></li> + <li><a href="#">Item 1Aii</a></li> + <li><a href="#">Item 1Aiii</a></li> + </ul> + </li> + <li><a href="#">Item 1B</a></li> + <li><a href="#">Item 1C</a></li> + </ul> + </li> + <li class="has-submenu"> + <a href="#">Item 2</a> + <ul class="menu vertical nested" data-submenu> + <li><a href="#">Item 2A</a></li> + <li><a href="#">Item 2B</a></li> + </ul> + </li> + <li><a href="#">Item 3</a></li> +</div> + +--- + +## Responsive Navigation + +Each of the above three patterns has a use in a specific context. But some patterns only work at certain screen sizes. For example, dropdown menus don't work as well on smaller screens, but the same navigation items might work better as a drilldown or an accordion menu at that screen size. + +Our responsive menu plugin (`data-responsive-menu`) allows you to take a Menu, and assign different navigation patterns to it at different screen sizes. In the below example, a drilldown menu changes to a dropdown menu at larger screen sizes. [Learn more about the responsive Menu plugin.](responsive-navigation.html#responsive-menu) + +<ul class="vertical menu" data-responsive-menu="drilldown medium-dropdown" style="width: 300px;"> + <li class="has-submenu"> + <a href="#">Item 1</a> + <ul class="vertical submenu menu" data-submenu id="m2"> + <li class="has-submenu"> + <a href="#">Item 1A</a> + <ul class="vertical submenu menu" data-submenu id="m3"> + <li><a href="#">Item 1A</a></li> + <li><a href="#">Item 1B</a></li> + <li><a href="#">Item 1C</a></li> + <li><a href="#">Item 1D</a></li> + <li><a href="#">Item 1E</a></li> + </ul> + </li> + <li><a href="#">Item 1B</a></li> + </ul> + </li> + <li class="has-submenu"> + <a href="#">Item 2</a> + <ul class="vertical submenu menu" data-submenu> + <li><a href="#">Item 2A</a></li> + <li><a href="#">Item 2B</a></li> + </ul> + </li> + <li class="has-submenu"> + <a href="#">Item 3</a> + <ul class="vertical submenu menu" data-submenu> + <li><a href="#">Item 3A</a></li> + <li><a href="#">Item 3B</a></li> + </ul> + </li> +</ul> + +--- + +In other situations, you may wish to always display a menu on a larger screen, but hide that same menu behind a click toggle on smaller screens. You can do this with the responsive toggle plugin (`data-responsive-toggle`). This plugin works with any container, not just a menu. [Learn more about the responsive toggle plugin.](responsive-navigation.html#responsive-toggle) + +To see the below example in action, scale your browser down. The top bar will be replaced by a smaller title bar. Clicking the icon inside the title bar reveals the top bar. + +<div class="title-bar" data-responsive-toggle="example-menu" data-hide-for="medium"> + <button class="menu-icon" type="button" data-toggle></button> + <div class="title-bar-title">Menu</div> +</div> + +<div class="top-bar" id="example-menu"> + <div class="top-bar-left"> + <ul class="dropdown menu" data-dropdown-menu> + <li class="menu-text">Site Title</li> + <li class="has-submenu"> + <a href="#">One</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </div> + <div class="top-bar-right"> + <ul class="menu"> + <li><input type="search" placeholder="Search"></li> + <li><button type="button" class="button">Search</button></li> + </ul> + </div> +</div> + +--- + +## Sticky Navigation + +See the documentation for the [Sticky](sticky.html#sticky-navigation) plugin to see how to easily make a sticky nav bar. diff --git a/libraries/foundation-6/docs/pages/off-canvas.md b/libraries/foundation-6/docs/pages/off-canvas.md new file mode 100755 index 00000000..f15dab35 --- /dev/null +++ b/libraries/foundation-6/docs/pages/off-canvas.md @@ -0,0 +1,155 @@ +--- +title: Off-canvas +description: Off-canvas menus are positioned outside of the viewport and slide in when activated. Setting up an off-canvas layout in Foundation is super easy. +sass: + - scss/components/_off-canvas.scss + - scss/components/_title-bar.scss +js: js/foundation.offcanvas.js +tags: + - navigation +flex: true +--- + +<button class="button" type="button" data-toggle="offCanvasLeft">Toggle Off-canvas</button> + +## Setup + +To start, create two wrappers to house the page. These are necessary to prevent the off-canvas menus from being visible when they're not open. They also smooth out cross-browser bugs. +- The outer wrapper has the class `.off-canvas-wrapper`. +- The inner wrapper has the class `.off-canvas-wrapper-inner` and the attribute `data-off-canvas-wrapper`. + +```html +<body> + <div class="off-canvas-wrapper"> + <div class="off-canvas-wrapper-inner" data-off-canvas-wrapper></div> + </div> +</body> +``` + +Inside these wrapper, create an off-canvas menu with the class `.off-canvas` and the attribute `data-off-canvas`. The menu also needs a positioning class, which can be `.position-left` or `.position-right`. Lastly, make sure the off-canvas has a unique ID so it can be targeted. + +Along with the menu, the main content of your page will be housed in its own container with the class `.off-canvas-content` and attribute `data-off-canvas-content`. + +```html +<body> + <div class="off-canvas-wrapper"> + <div class="off-canvas-wrapper-inner" data-off-canvas-wrapper> + <div class="off-canvas position-left" id="offCanvas" data-off-canvas></div> + <div class="off-canvas-content" data-off-canvas-content></div> + </div> + </div> +</body> +``` + +Here's a complete example that can be pasted into the `<body>` tag of your page. It includes a close button and basic menu styles. + +```html +<body> + <div class="off-canvas-wrapper"> + <div class="off-canvas-wrapper-inner" data-off-canvas-wrapper> + <div class="off-canvas position-left" id="offCanvas" data-off-canvas> + + <!-- Close button --> + <button class="close-button" aria-label="Close menu" type="button" data-close> + <span aria-hidden="true">×</span> + </button> + + <!-- Menu --> + <ul class="vertical menu"> + <li><a href="#">Foundation</a></li> + <li><a href="#">Dot</a></li> + <li><a href="#">ZURB</a></li> + <li><a href="#">Com</a></li> + <li><a href="#">Slash</a></li> + <li><a href="#">Sites</a></li> + </ul> + + </div> + + <div class="off-canvas-content" data-off-canvas-content> + <!-- Page content --> + </div> + </div> + </div> +</body> +``` + +### Click Triggers + +To create a click trigger that opens the menu, add the attribute `data-open` or `data-toggle` to any element. That element will then open or toggle the menu when clicked on. The value of the data attribute should be the ID of the off-canvas. + +```html +<button type="button" class="button" data-toggle="offCanvas">Open Menu</button> +``` + +--- + +## Multiple Menus + +A design can have two menus: one on the left, and one on the right. Be sure that both menus come *before* the `.off-canvas-content` wrapper—this is required for the CSS to apply correctly. + +<div class="primary callout"> + <p>When using Foundation in <a href="rtl.html">right-to-left</a> mode, "right" still means right, and "left" still means left.</p> +</div> + +```html +<body> + <div class="off-canvas-wrapper"> + <div class="off-canvas-wrapper-inner" data-off-canvas-wrapper> + <div class="off-canvas position-left" id="offCanvasLeft" data-off-canvas></div> + <div class="off-canvas position-right" id="offCanvasRight" data-off-canvas data-position="right"></div> + <div class="off-canvas-content" data-off-canvas-content></div> + </div> + </div> +</body> +``` + +<button class="button" type="button" data-toggle="offCanvasLeft">Open Left Menu</button> +<button class="button" type="button" data-toggle="offCanvasRight">Open Right Menu</button> + +--- + +## Title Bar + +If you need a simple title bar to toggle the off-canvas, `.title-bar` is here to help. It supports left- and right-aligned sections. + +```html_example +<div class="title-bar"> + <div class="title-bar-left"> + <button class="menu-icon" type="button" data-open="offCanvasLeft"></button> + <span class="title-bar-title">Foundation</span> + </div> + <div class="title-bar-right"> + <button class="menu-icon" type="button" data-open="offCanvasRight"></button> + </div> +</div> +``` +<br> + +#### Responsive Off-Canvas (Putting it all together) + +For an example of off-canvas on small screens and Top Bar Menu with Dropdowns, check out this Building Block: http://zurb.com/building-blocks/top-bar-with-off-canvas + +--- + +## Reveal on Larger Screens + +The left- and right-hand off-canvas panes can be set to be persistent on larger screens. Add the class `.reveal-for-medium` or `.reveal-for-large` to the off-canvas menu. + +The main content area (`.off-canvas-content`) will be padded to the left or right equal to the width of the container. + +<div class="callout"> + <p>The menu will be fixed-position by default, meaning it follows you as you scroll up and down. The menu also gets its own scroll bar if it's taller than the window. To disable these features, set the <code>$offcanvas-fixed-reveal</code> variable to <code>false</code>.</p> +</div> + +<div class="warning callout"> + <p>The slide in/out of the plugin still works when these classes are active. If you use this feature on a larger screen, be sure to hide any click triggers on those larger breakpoints as well. Foundation's <a href="visibility.html">visibility classes</a> can help you with that.</p> +</div> + +```html +<div class="off-canvas position-left reveal-for-large" data-off-canvas> + <!-- ... --> +</div> +``` + +<button type="button" class="button" data-docs-example-ofc>Toggle Reveal Class</button> diff --git a/libraries/foundation-6/docs/pages/orbit.md b/libraries/foundation-6/docs/pages/orbit.md new file mode 100755 index 00000000..0ccce4b2 --- /dev/null +++ b/libraries/foundation-6/docs/pages/orbit.md @@ -0,0 +1,246 @@ +--- +title: Orbit +description: An image and content carousel with animation support and many customizable options. +sass: scss/components/_orbit.scss +js: js/foundation.orbit.js +mui: true +tags: + - slider + - carousel +--- + +## Basics + +Orbit doesn't automatically generate any HTML for you, giving you the flexibility to move around the various pieces of the plugin. Here's a complete example—we'll break down the individual pieces farther down. + +```html_example +<div class="orbit" role="region" aria-label="Favorite Space Pictures" data-orbit> + <ul class="orbit-container"> + <button class="orbit-previous"><span class="show-for-sr">Previous Slide</span>◀︎</button> + <button class="orbit-next"><span class="show-for-sr">Next Slide</span>▶︎</button> + <li class="is-active orbit-slide"> + <img class="orbit-image" src="assets/img/orbit/01.jpg" alt="Space"> + <figcaption class="orbit-caption">Space, the final frontier.</figcaption> + </li> + <li class="orbit-slide"> + <img class="orbit-image" src="assets/img/orbit/02.jpg" alt="Space"> + <figcaption class="orbit-caption">Lets Rocket!</figcaption> + </li> + <li class="orbit-slide"> + <img class="orbit-image" src="assets/img/orbit/03.jpg" alt="Space"> + <figcaption class="orbit-caption">Encapsulating</figcaption> + </li> + <li class="orbit-slide"> + <img class="orbit-image" src="assets/img/orbit/04.jpg" alt="Space"> + <figcaption class="orbit-caption">Outta This World</figcaption> + </li> + </ul> + <nav class="orbit-bullets"> + <button class="is-active" data-slide="0"><span class="show-for-sr">First slide details.</span><span class="show-for-sr">Current Slide</span></button> + <button data-slide="1"><span class="show-for-sr">Second slide details.</span></button> + <button data-slide="2"><span class="show-for-sr">Third slide details.</span></button> + <button data-slide="3"><span class="show-for-sr">Fourth slide details.</span></button> + </nav> +</div> +``` + +--- + +### Wrapper + +The wrapper houses the entire carousel. We use the `aria-label` attribute to label what the carousel is, for assistive technology. + +```html +<div class="orbit" role="region" aria-label="Favorite Space Pictures" data-orbit> +</div> +``` + +### Slide Container + +The slide container houses each individual slide. In our above markup example, we also placed the buttons in here, so we can anchor them to the center edge of the slide container. However, they can be moved anywhere within the `data-orbit` wrapper. + +Each slide is an `<li>` with the class `.orbit-slide`. The first slide is marked with the `.is-active` class to indicate it's the default. You can place any HTML you want inside of the slide, but we have some premade styles for image-based slides with a caption. + +```html +<ul class="orbit-container"> + <li class="orbit-slide is-active"> + <img class="orbit-image" src="assets/img/orbit/01.jpg" alt="Space"> + <figcaption class="orbit-caption">Space, the final frontier.</figcaption> + </li> + <!-- More slides... --> +</ul> +``` + +### Next/Previous Arrows + +Orbit controls use the class `.orbit-previous` and `.orbit-next`. The below example has an important accessibility hook: since we're using ASCII arrows for the carousel controls, we add screen reader-only text (wrapped in the class `.show-for-sr`) that explain what the controls do. + +```html +<button class="orbit-previous"><span class="show-for-sr">Previous Slide</span> ◀︎</button> +<button class="orbit-next"><span class="show-for-sr">Next Slide</span> ▶︎</button> +``` + +### Bullets + +The bullets serve two purposes: they mark the current slide, and can be clicked on to navigate to another slide. Like with the controls, the bullets also have screen reader-friendly labels. + +```html +<nav class="orbit-bullets"> + <button class="is-active" data-slide="0"><span class="show-for-sr">First slide details.</span><span class="show-for-sr">Current Slide</span></button> + <button data-slide="1"><span class="show-for-sr">Second slide details.</span></button> + <button data-slide="2"><span class="show-for-sr">Third slide details.</span></button> + <button data-slide="3"><span class="show-for-sr">Fourth slide details.</span></button> +</nav> +``` + +<!-- <div class="callout"><p> + The new Orbit slider was designed to be a tool for rapid prototyping. While you are welcome to use it in production, if you want something more robust, we welcome you to try [Owl Carousel](http://owlgraphic.com/owlcarousel/). +</p> +<div class="callout alert"> + <p> + If animations are desired with the Orbit slider, such as the example below, [Motion-UI](https://github.com/zurb/motion-ui) is required. If you want a simple slide replacement, set the option `useMUI` to false for animation free slides. + </p> +</div> +</div> --> + +--- + +## Slide Contents + +A carousel slide can contain images or HTML—you can even mix between slides in one carousel! + +```html +<li class="orbit-slide"> + <div> + <h3 class="text-center">2: You can also throw some text in here!</h3> + <p class="text-center">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde harum rem, beatae ipsa consectetur quisquam. Rerum ratione, delectus atque tempore sed, suscipit ullam, beatae distinctio cupiditate ipsam eligendi tempora expedita.</p> + <h3 class="text-center">This Orbit slider does not use animations.</h3> + </div> +</li> +``` + +<div class="orbit" role="region" aria-label="Favorite Text Ever" data-orbit> + <ul class="orbit-container"> + <button class="orbit-previous" aria-label="previous"><span class="show-for-sr">Previous Slide</span>◀</button> + <button class="orbit-next" aria-label="next"><span class="show-for-sr">Next Slide</span>▶</button> + <li class="is-active orbit-slide"> + <div class="docs-example-orbit-slide"> + <p><strong>This is dodgerblue.</strong> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + </div> + </li> + <li class="orbit-slide"> + <div class="docs-example-orbit-slide"> + <p><strong>This is rebeccapurple.</strong> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + </div> + </li> + <li class="orbit-slide"> + <div class="docs-example-orbit-slide"> + <p><strong>This is darkgoldenrod.</strong> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + </div> + </li> + <li class="orbit-slide"> + <div class="docs-example-orbit-slide"> + <p><strong>This is lightseagreen.</strong> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + </div> + </li> + </ul> + <nav class="orbit-bullets"> + <button class="is-active" data-slide="0"><span class="show-for-sr">First slide details.</span><span class="show-for-sr">Current Slide</span></button> + <button data-slide="1"><span class="show-for-sr">Second slide details.</span></button> + <button data-slide="2"><span class="show-for-sr">Third slide details.</span></button> + <button data-slide="3"><span class="show-for-sr">Fourth slide details.</span></button> + </nav> +</div> + +--- + +## Using Animation + +Orbit uses [Motion UI](motion-ui.html) CSS classes to animate slides around. + +<div class="callout warning"> + <p>Without the inclusion of the `motion-ui` [Motion UI](motion-ui.html) CSS file in your template, Orbit slider fails to work properly. </p> +</div> + +There are four plugin options you can set to change the default effects: + +- `data-anim-in-from-left`: transition to play when a slide comes *in from the left*. +- `data-anim-in-from-right`: transition to play when a slide comes *in from the right*. +- `data-anim-out-from-left`: transition to play when a slide comes *out from the left*. +- `data-anim-out-from-right`: transition to play when a slide comes *out from the right*. + +Since those option names are pretty *long*, you can also set them all in one HTML attribute, using `data-options`: + +```html +<div class="orbit" role="region" aria-label="Favorite Space Pictures" data-orbit data-options="animInFromLeft:fade-in; animInFromRight:fade-in; animOutToLeft:fade-out; animOutToRight:fade-out;"> +</div> +``` + +<div class="orbit" role="region" aria-label="Favorite Space Pictures" data-orbit data-options="animInFromLeft:fade-in; animInFromRight:fade-in; animOutToLeft:fade-out; animOutToRight:fade-out;"> + <ul class="orbit-container"> + <button class="orbit-previous" aria-label="previous"><span class="show-for-sr">Previous Slide</span>◀</button> + <button class="orbit-next" aria-label="next"><span class="show-for-sr">Next Slide</span>▶</button> + <li class="is-active orbit-slide"> + <img class="orbit-image" src="assets/img/orbit/01.jpg" alt="Space"> + <figcaption class="orbit-caption">Space, the final frontier.</figcaption> + </li> + <li class="orbit-slide"> + <img class="orbit-image" src="assets/img/orbit/02.jpg" alt="Space"> + <figcaption class="orbit-caption">Lets Rocket!</figcaption> + </li> + <li class="orbit-slide"> + <img class="orbit-image" src="assets/img/orbit/03.jpg" alt="Space"> + <figcaption class="orbit-caption">Encapsulating</figcaption> + </li> + <li class="orbit-slide"> + <img class="orbit-image" src="assets/img/orbit/04.jpg" alt="Space"> + <figcaption class="orbit-caption">Outta This World</figcaption> + </li> + </ul> + <nav class="orbit-bullets"> + <button class="is-active" data-slide="0"><span class="show-for-sr">First slide details.</span><span class="show-for-sr">Current Slide</span></button> + <button data-slide="1"><span class="show-for-sr">Second slide details.</span></button> + <button data-slide="2"><span class="show-for-sr">Third slide details.</span></button> + <button data-slide="3"><span class="show-for-sr">Fourth slide details.</span></button> + </nav> +</div> + +--- + +### Disabling Animation + +To disable Motion UI, set the plugin option `useMUI` to `false`. Written as an HTML attribute, that's `data-use-m-u-i="false"`. + +```html +<div class="orbit" role="region" aria-label="Favorite Space Pictures" data-orbit data-use-m-u-i="false"> +</div> +``` + +<div class="orbit" role="region" aria-label="Favorite Space Pictures" data-orbit data-use-m-u-i="false"> + <ul class="orbit-container"> + <button class="orbit-previous" aria-label="previous"><span class="show-for-sr">Previous Slide</span>◀</button> + <button class="orbit-next" aria-label="next"><span class="show-for-sr">Next Slide</span>▶</button> + <li class="is-active orbit-slide"> + <img class="orbit-image" src="assets/img/orbit/01.jpg" alt="Space"> + <figcaption class="orbit-caption">Space, the final frontier.</figcaption> + </li> + <li class="orbit-slide"> + <img class="orbit-image" src="assets/img/orbit/02.jpg" alt="Space"> + <figcaption class="orbit-caption">Lets Rocket!</figcaption> + </li> + <li class="orbit-slide"> + <img class="orbit-image" src="assets/img/orbit/03.jpg" alt="Space"> + <figcaption class="orbit-caption">Encapsulating</figcaption> + </li> + <li class="orbit-slide"> + <img class="orbit-image" src="assets/img/orbit/04.jpg" alt="Space"> + <figcaption class="orbit-caption">Outta This World</figcaption> + </li> + </ul> + <nav class="orbit-bullets"> + <button class="is-active" data-slide="0"><span class="show-for-sr">First slide details.</span><span class="show-for-sr">Current Slide</span></button> + <button data-slide="1"><span class="show-for-sr">Second slide details.</span></button> + <button data-slide="2"><span class="show-for-sr">Third slide details.</span></button> + <button data-slide="3"><span class="show-for-sr">Fourth slide details.</span></button> + </nav> +</div> diff --git a/libraries/foundation-6/docs/pages/pagination.md b/libraries/foundation-6/docs/pages/pagination.md new file mode 100755 index 00000000..8d7f62e3 --- /dev/null +++ b/libraries/foundation-6/docs/pages/pagination.md @@ -0,0 +1,47 @@ +--- +title: Pagination +description: Pagination is a type of navigation that lets users click through pages of search results, products, or other related items. +sass: scss/components/_pagination.scss +--- + +## Basics + +A pagination list is just a `<ul>` with the class `.pagination`, and a series of `<li>`/`<a>` pairs. Add the class `.current` to an `<li>` to mark the current page, or `.disabled` to add disabled styles to a link. + +Note that the container has the attributes `role="navigation"` and `aria-label="Pagination"`. These explain the purpose of the component to assistive technologies. + +Extra screen reader-only text should also be added to a pagination element. In the below example, users reading the page will just see "Next" and "Previous", but screen readers will read it as "Next page" and "Previous page". Additionally, the text for the current page will read as "You're on page one". + +```html_example +<ul class="pagination" role="navigation" aria-label="Pagination"> + <li class="pagination-previous disabled">Previous <span class="show-for-sr">page</span></li> + <li class="current"><span class="show-for-sr">You're on page</span> 1</li> + <li><a href="#" aria-label="Page 2">2</a></li> + <li><a href="#" aria-label="Page 3">3</a></li> + <li><a href="#" aria-label="Page 4">4</a></li> + <li class="ellipsis" aria-hidden="true"></li> + <li><a href="#" aria-label="Page 12">12</a></li> + <li><a href="#" aria-label="Page 13">13</a></li> + <li class="pagination-next"><a href="#" aria-label="Next page">Next <span class="show-for-sr">page</span></a></li> +</ul> +``` + +--- + +## Centered + +The items in a pagination list are `display: inline-block`, which makes centering them easy. Use our built-in `.text-center` class, or add `text-align: center` in your CSS. + +```html_example +<ul class="pagination text-center" role="navigation" aria-label="Pagination"> + <li class="pagination-previous disabled">Previous</li> + <li class="current"><span class="show-for-sr">You're on page</span> 1</li> + <li><a href="#" aria-label="Page 2">2</a></li> + <li><a href="#" aria-label="Page 3">3</a></li> + <li><a href="#" aria-label="Page 4">4</a></li> + <li class="ellipsis"></li> + <li><a href="#" aria-label="Page 12">12</a></li> + <li><a href="#" aria-label="Page 13">13</a></li> + <li class="pagination-next"><a href="#" aria-label="Next page">Next</a></li> +</ul> +``` diff --git a/libraries/foundation-6/docs/pages/panini.md b/libraries/foundation-6/docs/pages/panini.md new file mode 100755 index 00000000..3b76e22f --- /dev/null +++ b/libraries/foundation-6/docs/pages/panini.md @@ -0,0 +1,251 @@ +--- +title: Panini +description: A flat file compiler that powers our prototyping template. Create pages with consistent layouts and reusable partials with ease. +library: + github: https://github.com/zurb/panini + docs: https://github.com/zurb/panini +--- + +{{{{raw}}}} + +If you've ever created a static site, maybe you had five pages that all shared the same header and footer. You create your first page, and then copy and paste the common elements to the next page. But now if you need to make a change to the header, the change has to be made across multiple files. + +Panini is a flat file compiler that uses the concepts of templates, pages, and partials—powered by the [Handlebars](http://handlebarsjs.com/) templating language—to streamline the process of creating static prototypes. + +Our [prototyping template](starter-projects.html) uses Panini, along with a host of other tools for processing Sass, JavaScript, and images, to make creating static prototypes easy. It's already been configured to utilize all of the features below, but if you want to learn the specifics of how to configure the library, head over to the [Panini GitHub page](https://github.com/zurb/panini). + +--- + +## Basics: Templates & Pages + +A **template** is a common layout that every page in your design shares. It's possible to have multiple templates, but generally you'll only need one, and a page can only use one template. In the prototyping template, the default layout is found under `src/layouts/default.html`. + +Here's what a basic template might look like: + +```handlebars +<html> + <head> + <title>Definitely a Website!</title> + </head> + <body> + <header class="header"><!-- ... --></header> + {{> body}} + <footer class="footer"><!-- ... --></footer> + </body> +</html> +``` + +In the middle of the HTML is a bit of Handlebars code: `{{> body}}`. This is where the pages you write are injected when Panini runs, giving you a series of complete HTML files at the end. + +The **pages** make up the guts of your layouts. These files will just have the middle section of the design, since the layout already covers the top and bottom. The prototyping template includes one blank page to get you started, under `src/pages/index.html`. + +A basic page might look like this: + +```html +<h1>Page Title</h1> +<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Praesentium ducimus eligendi, reiciendis corporis quam facere quaerat qui, aspernatur molestiae velit, vero ea quisquam laborum corrupti repudiandae totam, at aliquam esse.</p> +``` + +Note that there's no `<html>` or `<body>` tags, and no header or footer. This code will be injected into the `{{> body}}` declaration when Panini assembles your pages. + +In the prototyping template, these finished files are compiled into a standalone folder called `dist` (short for "distribution"), which also includes your processed CSS, JavaScript, and images. This folder can easily be uploaded to any web server, or Notable's [Hosted Prototypes](http://zurb.com/notable/features/hosted) service. + +--- + +## Partials + +Partials are a feature of Handlebars which allow you to inject HTML anywhere in a page or layout. They're really useful when you need to repeat certain chunks of code throughout your pages, or to keep individual files from getting too cluttered with HTML. + +Here's an example of a layout file that divides its key sections into partials: + +```handlebars +<html> + <head> + <title>Definitely STILL a Website!</title> + </head> + <body> + {{> header}} + {{> navigation}} + {{> body}} + {{> footer}} + </body> +</html> +``` + +The `{{> }}` syntax tells Handlebars to look for an HTML file with that name, and inject it at that place. In this example, we have files called `header.html`, `navigation.html`, and `footer.html`. In the prototyping template, these files all exist within `src/partials`. + +--- + +## Page Variables + +Pages have a few built-in variables, which can be used within the page template itself, or within a layout or partial being used in tandem with the page. + +### page + +Prints the name of the current page, without its original file extension. In the below example, if the page is `index.html`, `{{page}}` will become `index`. + +```handlebars +<p>You are here: {{page}}</p> +``` + +### root + +Use `{{root}}` before a file path to make sure it works no matter what folder the current page is in. + +For example, a path to an external CSS file will need to be different if the current page is at the root level of your site, or in a sub-folder. + +Here's how you'd use it with a `<link>` tag: + +```handlebars +<link rel="stylesheet" href="{{root}}assets/css/app.css"> +``` + +If the page is `index.html`, the path will look like this: + +```html +<link rel="stylesheet" href="assets/css/app.css"> +``` + +If the page is `folder/page.html`, the path will look like this: + +```html +<link rel="stylesheet" href="../assets/css/app.css"> +``` + +The `../` is added only on pages in a sub-folder, so the CSS can still be properly loaded. + +--- + +## Helpers + +Helpers are special functions that manipulate content on the page. In addition to [Handlebars's built-in helpers](http://handlebarsjs.com/builtin_helpers.html), Panini includes a few custom helpers and you can add your own. + +### ifpage + +Displays the HTML inside the helper only on specific pages. In the below example, the HTML inside the helper will only show up on the `index.html` page. + +```handlebars +{{#ifpage 'index'}} + <p>This is definitely the Index page.</p> +{{/ifpage}} +``` + +You can also check for multiple pages. If *any* name in the list matches the current page, the HTML will appear. + +```handlebars +{{#ifpage 'index' 'about'}} + <p>This is definitely either the Index or About page.</p> +{{/ifpage}} +``` + +### unlesspage + +The opposite of `#ifpage`, `#unlesspage` will only display the HTML inside of it if the current page is *not* in the parameters. + +```handlebars +{{#unlesspage 'index'}} + <p>This is definitely <em>not</em> the Index page.</p> +{{/unlesspage}} +``` + +### repeat + +Repeats the content inside of it `n` number of times. Use this to easily print lots of duplicate HTML in a prototype. + +```handlebars +<ul> + {{#repeat 5}} + <li>Five hundred ninety-nine US dollars</li> + {{/repeat}} +</ul> +``` + +### markdown + +Converts Markdown into HTML. + +```handlebars +{{#markdown}} +# Heading 1 +Lorem ipsum [dolor sit amet](http://html5zombo.com), consectetur adipisicing elit. Nam dolor, perferendis. Mollitia aut dolorum, est amet libero eos ad facere pariatur, ullam dolorem similique fugit, debitis impedit, eligendi officiis dolores. +{{/markdown}} +``` + +### Custom Helpers + +If you don't see the right helper, you can write your own. Add a javascript file to 'src/helpers', add `helpers: 'src/helpers'` to the Panini process in your gulpfile.babel.js, restart npm, then call it in your templates. + +``` +// Example file src/helpers/bold.js +module.exports = function(options) { + // options.fn(this) = Handelbars content between {{#bold}} HERE {{/bold}} + var bolder = '<strong>' + options.fn(this) + '</strong>'; + return bolder; +} +``` + +``` +// Example gulpfile.babel.js +function pages() { + return gulp.src('src/pages/**/*.html') + .pipe(panini({ + root: 'src/pages', + layouts: 'src/layouts', + partials: 'src/partials', + helpers: 'src/helpers' + })) + .pipe(inky()) + .pipe(gulp.dest('dist')); +} +``` + +Then in your projects call your custom `{{#bold}}` helper + +``` +{{#bold}}ideas{{/bold}} +``` + +--- + +## Custom Data + +Custom data can be added to your pages. This data can then be inserted into your HTML through Handlebars. There are two ways to add data to a project. + +To add variables to a specific page only, add it at the top of the page's HTML as a [Front Matter](http://jekyllrb.com/docs/frontmatter/) block. Let's say the below content is inside `src/pages/index.html`. + +```html +--- +title: Page Title +description: Lorem ipsum. +--- + +<!-- The rest of your HTML is down here. --> +``` + +Now, you can insert the values of these variables into the `index.html` page, *or* the `default.html` layout. To insert a variable, wrap the name of the variable in double curly braces, like so: + +```handlebars +<h1>{{ title }}</h1> +``` + +Variables can also be added globally by creating an external JSON or YML file, and adding it to the `src/data` folder in your project. Let's create a file called `breakfast.yml`: + +``` +- eggs +- bacon +- toast +``` + +Panini will load in the contents of this YML file as a variable called `{{ breakfast }}`. Because it's an array, we can loop through it using Handlebars's `{{#each}}` helper: + +```handlebars +<ul class="breakfast-items"> + {{#each breakfast}} + <li>{{ this }}</li> + {{/each}} +</ul> +``` + +This code will print three `<li>`s, one for each item in the file. + +{{{{/raw}}}} diff --git a/libraries/foundation-6/docs/pages/progress-bar.md b/libraries/foundation-6/docs/pages/progress-bar.md new file mode 100755 index 00000000..6dea43ac --- /dev/null +++ b/libraries/foundation-6/docs/pages/progress-bar.md @@ -0,0 +1,115 @@ +--- +title: Progress Bar +description: Show your progress. A simple way to add progress bars to your layouts. You only need two HTML elements to make them and they're easy to customize. +sass: + - scss/components/_progress-bar.scss + - scss/forms/_progress.scss + - scss/forms/_meter.scss +--- + +## Basics + +A progress bar has two elements: the container `.progress`, and the meter `.progress-meter`. The `role` and `aria-` attributes in the code example clarify the status of the bar: + +- `aria-valuemin`: Minimum value. +- `aria-valuemax`: Maximum value. +- `aria-valuenow`: Current value. + +If the value of the progress bar is not numeric, also add the attribute `aria-valuetext`, which should include a human-readable version of the bar's value. + +```html_example +<div class="progress" role="progressbar" tabindex="0" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"> + <div class="progress-meter"></div> +</div> +``` + +Add a `width` CSS property to the inner meter to fill the progress bar. + +```html_example +<div class="progress" role="progressbar" tabindex="0" aria-valuenow="50" aria-valuemin="0" aria-valuetext="50 percent" aria-valuemax="100"> + <div class="progress-meter" style="width: 50%"></div> +</div> +``` + +--- + +## Colors + +A progress bar can be styled with the `.secondary`, `.success`, `.warning`, and `.alert` colors. + +```html_example +<div class="secondary progress" role="progressbar" tabindex="0" aria-valuenow="25" aria-valuemin="0" aria-valuetext="25 percent" aria-valuemax="100"> + <div class="progress-meter" style="width: 25%"></div> +</div> + +<div class="success progress"> + <div class="progress-meter" style="width: 50%"></div> +</div> + +<div class="warning progress"> + <div class="progress-meter" style="width: 50%"></div> +</div> + +<div class="alert progress"> + <div class="progress-meter" style="width: 75%"></div> +</div> +``` + +--- + +## With Text + +You can add text inside the meter of a progress bar. Make sure the text you use in the meter is also used in the `aria-valuetext` attribute. + +```html_example +<div class="progress" role="progressbar" tabindex="0" aria-valuenow="20" aria-valuemin="0" aria-valuetext="25 percent" aria-valuemax="100"> + <span class="progress-meter" style="width: 25%"> + <p class="progress-meter-text">25%</p> + </span> +</div> +``` + +--- + +## Native Progress + +As an alternative to our custom progress bar style, you can also opt to use the native `<progress>` element. It provides a more succinct way to create progress bars, but it's not supported in IE9, and some other older browsers. [View `<progress>` element support.](http://caniuse.com/#feat=progress) + +```html_example +<progress max="100" value="75"></progress> +``` + +If you're using the Sass version of Foundation, add this line to your main Sass file to export the `<progress>` CSS: + +```scss +@import foundation-progress-element; +``` + +The `<progress>` element can be styled with the same coloring classes: `.secondary`, `.success`, `.warning`, and `.alert`. + +```html_example +<progress class="secondary" max="100" value="75"></progress> +<progress class="success" max="100" value="75"></progress> +<progress class="warning" max="100" value="75"></progress> +<progress class="alert" max="100" value="75"></progress> +``` + +--- + +## Native Meter + +For the *extra* adventurous developers out there, we also provide styles for the `<meter>` element. What's the difference? `<progress>` represents a value that changes over time, like storage capacity. `<meter>` represents a value that fluctuates around some optimum value. It also has *no* support in Internet Explorer, Mobile Safari, or Android 2. [View `<meter>` element support.](http://caniuse.com/#search=meter) + +If you're using the Sass version of Foundation, add this line to your main Sass file to export the `<meter>` CSS: + +```scss +@import foundation-meter-element; +``` + +The meter automatically colors itself based on the current values, and the defined low, medium, and high ranges. [Learn more about the mechanics of `<meter>` values.](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms/The_native_form_widgets#Meters_and_progress_bars) + +```html_example +<meter value="30" min="0" low="33" high="66" optimum="100" max="100"></meter> +<meter value="50" min="0" low="33" high="66" optimum="100" max="100"></meter> +<meter value="100" min="0" low="33" high="66" optimum="100" max="100"></meter> +``` diff --git a/libraries/foundation-6/docs/pages/responsive-navigation.md b/libraries/foundation-6/docs/pages/responsive-navigation.md new file mode 100755 index 00000000..404373b6 --- /dev/null +++ b/libraries/foundation-6/docs/pages/responsive-navigation.md @@ -0,0 +1,147 @@ +--- +title: Responsive Navigation +description: Our three Menu patterns form like Voltron into one responsive Menu plugin, which allows you to switch between patterns at different screen sizes. +js: js/foundation.responsiveToggle.js +--- + +## Responsive Menu + +The Menu has some responsive CSS classes built in, which allow you to re-orient a menu on different screen sizes. + +```html_example +<ul class="vertical medium-horizontal menu"> + <li><a href="#">Item 1</a></li> + <li><a href="#">Item 2</a></li> + <li><a href="#">Item 3</a></li> +</ul> +``` + +--- + +The Menu can be augmented with one of three different plugins—dropdown menu, drilldown menu, or accordion menu. However, these patterns tend to work best on specific screen sizes. + +With our responsive Menu plugin, you can apply a default pattern to a Menu, and then change that pattern on other screen sizes. + +For example, a drilldown menu works well on mobile, but on larger screens, you may want to convert that same menu into a dropdown. Here's an example that does just that: + +```html_example +<ul class="vertical menu" data-responsive-menu="drilldown medium-dropdown" style="width: 300px;"> + <li> + <a href="#">Item 1</a> + <ul class="vertical menu"> + <li> + <a href="#">Item 1A</a> + <ul class="vertical menu"> + <li><a href="#">Item 1A</a></li> + <li><a href="#">Item 1B</a></li> + <li><a href="#">Item 1C</a></li> + <li><a href="#">Item 1D</a></li> + <li><a href="#">Item 1E</a></li> + </ul> + </li> + <li><a href="#">Item 1B</a></li> + </ul> + </li> + <li> + <a href="#">Item 2</a> + <ul class="vertical menu"> + <li><a href="#">Item 2A</a></li> + <li><a href="#">Item 2B</a></li> + </ul> + </li> + <li> + <a href="#">Item 3</a> + <ul class="vertical menu"> + <li><a href="#">Item 3A</a></li> + <li><a href="#">Item 3B</a></li> + </ul> + </li> +</ul> +``` + +--- + +## Responsive Toggle + +In Foundation 5, the top bar combined this menu toggling concept into one plugin. We now have a separate, optional component you can use in tandem with the responsive plugin. It's called the title bar, and it allows you to quickly setup a menu toggle on mobile. The title bar hides itself on larger screens. + +To set it up, first give your menu a unique ID. (You don't even need to use Menu! Any element will work.) Next, add a title bar with the class `.title-bar` and the attribute `data-responsive-toggle`. The value of `data-responsive-toggle` should be the ID of the menu you're toggling. + +By default, the title bar will be visible on small screens, and the Menu hides. At the medium breakpoint, the title bar disappears, and the menu is always visible. This breakpoint can be changed with the `data-hide-for` attribute in HTML, or the `hideFor` setting in JavaScript. + +<div class="primary callout show-for-medium"> + <p>Scale your browser down to see the toggle happen.</p> +</div> + +```html_example +<div class="title-bar" data-responsive-toggle="example-menu" data-hide-for="medium"> + <button class="menu-icon" type="button" data-toggle></button> + <div class="title-bar-title">Menu</div> +</div> + +<div class="top-bar" id="example-menu"> + <div class="top-bar-left"> + <ul class="dropdown menu" data-dropdown-menu> + <li class="menu-text">Site Title</li> + <li> + <a href="#">One</a> + <ul class="menu vertical"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </div> + <div class="top-bar-right"> + <ul class="menu"> + <li><input type="search" placeholder="Search"></li> + <li><button type="button" class="button">Search</button></li> + </ul> + </div> +</div> +``` + +--- + +### Preventing FOUC + +Before the JavaScript on your page loads, you'll be able to see both the mobile and desktop element at once for a brief second. This is known as a [flash of unstyled content](https://en.wikipedia.org/wiki/Flash_of_unstyled_content). There's not an easy way for the framework to handle this for you, but you can add some extra CSS to account for it. + +If we reference the above example, `.title-bar` is our mobile element and `.top-bar` is our desktop element. So before the JavaScript loads, we want only the right element for that screen size to be visible. + +```css +.no-js .top-bar { + display: none; +} + +@media screen and (min-width: 40em) { + .no-js .top-bar { + display: block; + } + + .no-js .title-bar { + display: none; + } +} +``` + +If you're using Sass, you can write it like this: + +```scss +.no-js { + @include breakpoint(small only) { + .top-bar { + display: none; + } + } + + @include breakpoint(medium) { + .title-bar { + display: none; + } + } +} +``` diff --git a/libraries/foundation-6/docs/pages/reveal.md b/libraries/foundation-6/docs/pages/reveal.md new file mode 100755 index 00000000..68572f48 --- /dev/null +++ b/libraries/foundation-6/docs/pages/reveal.md @@ -0,0 +1,207 @@ +--- +title: Reveal +description: Modal dialogs, or pop-up windows, are handy for prototyping and production. Foundation includes Reveal, our jQuery modal plugin, to make this easy for you. +sass: scss/components/_reveal.scss +js: js/foundation.reveal.js +mui: true +tags: + - modal +--- + +## Basics + +A modal is just an empty container, so you can put any kind of content inside it, from text to forms to video to an entire grid. + +<div class="callout primary"> + <p>Please note that we removed the option for AJAX loaded modals in Foundation 6. We did make it very easy to implement on your own though, check out a sample in the <span><a href="#advanced-options">Advanced</a></span> section.</p> +</div> + +To create a modal, add the class `.reveal`, the attribute `data-reveal`, and a unique ID to a container. + +```html_example +<div class="reveal" id="exampleModal1" data-reveal> + <h1>Awesome. I Have It.</h1> + <p class="lead">Your couch. It is mine.</p> + <p>I'm a cool paragraph that lives inside of an even cooler modal. Wins!</p> + <button class="close-button" data-close aria-label="Close modal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> +``` + +You'll also need a way to open the modal. Add the attribute `data-open` to any element. The value of `data-open` should be the ID of the modal. + +```html_example +<p><a data-open="exampleModal1">Click me for a modal</a></p> +``` + +You'll also need a way to *close* the modal from inside. By default, modals will close if clicked outside of, or if the <kbd>esc</kbd> key is pressed. However, you'll generally also want to add your own click trigger. Add the attribute `data-close` to any element within the modal to add one. + +You can use our handy [close button](close-button.html) styles to do this: + +```html +<button class="close-button" data-close aria-label="Close modal" type="button"> + <span aria-hidden="true">×</span> +</button> +``` + +--- + +## Sizing + +On small screens, a modal is always 100% of the width of the screen. On medium-sized screens and larger, the width changes to 80%. + +The size of a modal can be changed with these sizing classes, which are added to the modal container: + +- `.tiny`: 30% wide +- `.small`: 50% wide +- `.large`: 90% wide +- `.full`: 100% width *and* height, defaults the `escClose` option to true, as well as creates a close button. + +```html +<div class="tiny reveal" id="exampleModal" data-reveal> + <!-- ... --> +</div> +``` + +<p><a data-toggle="exampleModal5" aria-controls="exampleModal5">Click me for a tiny modal</a></p> + +<div class="tiny reveal" id="exampleModal5" data-reveal> + <p>OH I'M SO TIIINY</p> + <button class="close-button" data-close aria-label="Close reveal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> + +<p><a data-toggle="exampleModal6">Click me for a small modal</a></p> + +<div class="small reveal" id="exampleModal6" data-reveal> + <p>I may be small, but I've got a big heart!</p> + <button class="close-button" data-close aria-label="Close reveal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> + +<p><a data-toggle="exampleModal7">Click me for a large modal</a></p> + +<div class="large reveal" id="exampleModal7" data-reveal> + <p>I'm big, like bear!</p> + <button class="close-button" data-close aria-label="Close reveal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> + +--- + +## Nested Modal + +It's possible for modals to open other modals. Create a second modal with a unique ID, and then add a click trigger with `data-open` inside the first modal. + +```html_example +<p><a data-open="exampleModal2">Click me for a modal</a></p> + +<!-- This is the first modal --> +<div class="reveal" id="exampleModal2" data-reveal> + <h1>Awesome!</h1> + <p class="lead">I have another modal inside of me!</p> + <a class="button" data-open="exampleModal3">Click me for another modal!</a> + <button class="close-button" data-close aria-label="Close reveal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> + +<!-- This is the nested modal --> +<div class="reveal" id="exampleModal3" data-reveal> + <h2>ANOTHER MODAL!!!</h2> + <button class="close-button" data-close aria-label="Close reveal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> +``` + +--- + +## Full-screen + +A full-screen modal is 100% of the width *and* height of the window. Add the `.full` class to make it go. + +```html_example +<p><a data-toggle="exampleModal8">Click me for a full-screen modal</a></p> + +<div class="full reveal" id="exampleModal8" data-reveal> + <p>OH I'M SO FUUUUL</p> + <img src="http://placekitten.com/1920/1280" alt="Intropsective Cage"> + <button class="close-button" data-close aria-label="Close reveal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> +``` + +## Advanced Options + +### No Overlay + +To remove the overlay, add the attribute `data-overlay="false"` to the modal. + +```html_example +<p><a data-toggle="exampleModal9">Click me for an overlay-lacking modal</a></p> + +<div class="reveal" id="exampleModal9" data-reveal data-overlay="false"> + <p>I feel so free!</p> + <button class="close-button" data-close aria-label="Close reveal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> +``` + +--- + +### Animations + +To use animations from the Motion UI library, include the <code>data-animation-in="someAnimationIn"</code> and <code>data-animation-out="someAnimationOut"</code> attributes. + +```html_example +<p><a data-toggle="animatedModal10">Click me for a modal</a></p> + +<div class="reveal" id="animatedModal10" data-reveal data-close-on-click="true" data-animation-in="spin-in" data-animation-out="spin-out"> + <h1>Whoa, I'm dizzy!</h1> + <p class='lead'>There are many options for animating modals, check out the Motion UI library to see them all</p> + <button class="close-button" data-close aria-label="Close reveal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> +``` + +--- + +### AJAX + +To use AJAX to load your modal content, use the code snippet below. + +```js +var $modal = $('#modal'); + +$.ajax('/url') + .done(function(resp){ + $modal.html(resp.html).foundation('open'); +}); +``` + + +--- + +## Accessibility + +Modals by default are accessible through the use of various ARIA attributes. To make a modal even more accessible, designate a label to the modal by adding `aria-labelledby="exampleModalHeader11"` to the container and `id="exampleModalHeader11"` to the elment you want to designate as the label. + +```html_example +<p><a data-open="exampleModal11">Click me for a modal</a></p> + +<div class="reveal" id="exampleModal11" aria-labelledby="exampleModalHeader11" data-reveal> + <h1 id="exampleModalHeader11">Label for the Modal!</h1> + <p class="lead">I am even more accessible than the other modals.</p> + <button class="close-button" data-close aria-label="Close Accessible Modal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> +``` diff --git a/libraries/foundation-6/docs/pages/rtl.md b/libraries/foundation-6/docs/pages/rtl.md new file mode 100755 index 00000000..770e778e --- /dev/null +++ b/libraries/foundation-6/docs/pages/rtl.md @@ -0,0 +1,45 @@ +--- +title: Right-to-Left Support +description: Foundation can easily adapt its components to work with languages that read from right to left. +--- + +## HTML + +You'll need to make a few changes to your markup to get the Javascript components working nice and smooth. In the `<html>` tag, you'll need to add a `dir` attribute with a value of `rtl`. Here's what your `<html>` tag should look like: + +```html +<!-- This example is for a right-to-left Arabic layout --> +<html class="no-js" lang="ar" dir="rtl"> +``` + +### Language Code + +You'll need to change your lang attribute value to match your language. Here's a handy list of common right-to-left languages and their html codes. + +- **Arabic:** `ar` +- **Chinese:** `zh` +- **Farsi:** `fa` +- **Hebrew:** `he`, `iw` +- **Japanese:** `ja` +- **Urdu:** `ur` +- **Yiddish:** `yi`, `ji` + +View of a [full list of language codes](http://www.loc.gov/standards/iso639-2/php/code_list.php) on the website of the Library of Congress. + +--- + +## CSS Download + +If you use a CSS version of Foundation (the ones you can find on the [download page](http://foundation.zurb.com/sites/download)), you'll need to create a custom download that includes RTL CSS instead of LTR. Just select "Right-to-left" under the Text Direction section of the customizer. + +--- + +## Sass Configuration + +If you're using the Sass version of Foundation, open your project's [settings file](sass.html#the-settings-file) (`settings.scss`) and change this variable in the Global section: + +```scss +$global-text-direction: rtl; +``` + +This will convert the framework's components to RTL format. diff --git a/libraries/foundation-6/docs/pages/sass-functions.md b/libraries/foundation-6/docs/pages/sass-functions.md new file mode 100755 index 00000000..e1d8f2de --- /dev/null +++ b/libraries/foundation-6/docs/pages/sass-functions.md @@ -0,0 +1,36 @@ +--- +title: Sass Functions +description: Behind the scenes, Foundation is powered by a set of utility Sass functions that help us work with colors, units, selectors, and more. +sass: + - scss/util/*.scss + - '!scss/util/_breakpoint.scss' + - '!scss/util/_mixins.scss' +--- + +## Importing + +All of Foundation's Sass utilities are in the folder `scss/util`, and broken up into multiple files by category. You can import every utility file at once using this line of code: + +```scss +@import 'util/util'; +``` + +Or, utilities can be imported individually. + +```scss +// Color manipulation +@import 'util/color'; + +// Selector generation +@import 'util/selector'; + +// Unit manipulation and conversion +@import 'util/unit'; + +// Value checking and extraction +@import 'util/value'; +``` + +<div class="callout warning"> + <p>Variables, functions, or mixins prefixed with <code>-zf-</code> are considered part of the internal API, which means they could change, break, or disappear without warning. We recommend sticking to only the public API, which is documented below.</p> +</div> diff --git a/libraries/foundation-6/docs/pages/sass-mixins.md b/libraries/foundation-6/docs/pages/sass-mixins.md new file mode 100755 index 00000000..9f91d6ec --- /dev/null +++ b/libraries/foundation-6/docs/pages/sass-mixins.md @@ -0,0 +1,13 @@ +--- +title: Sass Mixins +descriptions: Mixins allow us to reuse code in various parts of the framework. Foundation includes mixins for clearfixes, visibility, icons, shapes, and more. +sass: scss/util/_mixins.scss +--- + +## Importing + +Foundation's Sass mixins are all kept in one file: `scss/util/_mixins.scss`. To import it in Sass, use this line of code: + +```scss +@import 'util/mixins'; +``` diff --git a/libraries/foundation-6/docs/pages/sass.md b/libraries/foundation-6/docs/pages/sass.md new file mode 100755 index 00000000..11084858 --- /dev/null +++ b/libraries/foundation-6/docs/pages/sass.md @@ -0,0 +1,168 @@ +--- +title: Sass +description: Foundation is written in Sass, which allows us to make the codebase customizable and flexible. +--- + +<div class="primary callout"> + <p>Not familiar with Sass? The [official tutorial](http://sass-lang.com/guide) on sass-lang.com is a great place to start.</p> +</div> + +## Compatibility + +<img src="assets/img/logos/sass-logo.svg" alt="Sass logo" class="float-right" style="width: 150px; height: 150px; margin-left: 1rem;"> + +**Foundation for Sites can be compiled with Ruby Sass and libsass.** We tend to stick to the latest versions of both compilers when possible. Our documentation and starter project are compiled with [node-sass](https://github.com/sass/node-sass), a Node port of libsass. We recommend these versions of either compiler: + +- Ruby Sass **3.4+** +- node-sass **3.4.2+** (libsass **3.3.2**) + +### Autoprefixer Required + +We don't include vendor prefixes in our Sass files—instead, we let [Autoprefixer](https://github.com/postcss/autoprefixer) handle it for us. Our build process uses [gulp-autoprefixer](https://github.com/sindresorhus/gulp-autoprefixer), but there are [other versions](https://github.com/postcss/autoprefixer#usage) that work with Grunt, Rails, Brunch, and more. + +To get the proper browser support, use these Autoprefixer settings: + +```js +autoprefixer({ + browsers: ['last 2 versions', 'ie >= 9', 'and_chr >= 2.3'] +}); +``` + +--- + +## Loading the Framework + +If you're using Yeti Launch or the CLI to create a project, the Sass compilation process is already set up for you. If not, you can compile our Sass files yourself, or drop in a pre-built CSS file. + +To get started, first install the framework files using Bower or npm. + +```bash +npm install foundation-sites --save +bower install foundation-sites --save +``` + +### Compiling Manually + +Next, add the framework files as an import path. How you do this depends on your build process, but the path is the same regardless: `packages_folder/foundation-sites/scss` + +Here's an example using grunt-contrib-sass: + +```js +grunt.initConfig({ + sass: { + dist: { + options: { + loadPath: ['node_modules/foundation-sites/scss'] + } + } + } +}); +``` + +If you're using Compass, open your project's `config.rb` and add the import path there: + +```ruby +add_import_path "node_modules/foundation-sites/scss" +``` + +Finally, add an `@import` statement to the top of your primary Sass file. Refer to [Adjusting CSS Output](#adjusting-css-output) below to learn how to control the CSS output of the framework. + +```scss +@import 'foundation'; +``` + +You're also going to want a settings file for your project, which will allow you to modify the default styles of Foundation. **[Download the latest settings file here](https://raw.githubusercontent.com/zurb/foundation-sites/master/scss/settings/_settings.scss)**, add it to your project as `_settings.scss`, then import it *before* Foundation itself. + +```scss +@import 'settings'; +@import 'foundation'; +``` + +### Using Compiled CSS + +The Foundation for Sites npm and Bower packages include pre-compiled CSS files, in minified (compressed) and unminified flavors. If you're interested in editing the framework CSS directly, use the unminified file. For production, use the minified version. + +```html +<link rel="stylesheet" href="node_modules/foundation-sites/dist/css/foundation-sites.css"> + +<link rel="stylesheet" href="node_modules/foundation-sites/dist/css/foundation-sites.min.css"> +``` + +--- + +## Adjusting CSS Output + +Foundation outputs many classes for its various components. These help developers get up and running quickly. However, when you move to production, you may wish to build your grid semantically, replace our pre-built classes with your own, or remove components entirely. + +Each component has an **export mixin** which prints out the CSS for that component. If you're cool with having everything, you just need one line of code: + +```scss +@include foundation-everything; +``` + +Our [starter projects](starter-projects.html) include the full list of imports, making it easy to comment out the components you don't need. + +```scss +@import 'foundation'; + +@include foundation-global-styles; +@include foundation-grid; +@include foundation-typography; +@include foundation-button; +@include foundation-forms; +// And so on... +``` + +--- + +## The Settings File + +All Foundation projects include a settings file, named `_settings.scss`. If you're using Yeti Launch or the CLI to create a Foundation for Sites project, you can find the settings file under scss/ (basic template) or src/assets/scss/ (ZURB template). If you're installing the framework standalone using Bower or npm, there's a settings file included in those packages, which you can move into your own Sass files to work with. + +Every component includes a set of variables that modify core structural or visual styles. If there's something you can't customize with a variable, you can just write your own CSS to add it. + +<div class="callout warning"> + <p>Once you've set up a new project, your settings file can't be automatically updated when new versions change, add, or remove variables. Keep tabs on new <a href="https://github.com/zurb/foundation/releases">Foundation releases</a> so you know when things change.</p> +</div> + +Here's an example set of settings variables. These change the default styling of [buttons](button.html): + +```scss +// Default padding for button. +$button-padding: 0.85em 1em !default; + +// Default margin for button. +$button-margin: 0 $global-padding $global-padding 0 !default; + +// Default fill for button. Is either solid or hollow. +$button-fill: solid !default; + +// Default background color for button. +$button-background: $primary-color !default; + +// Default hover background color for button. +$button-background-hover: scale-color($button-background, $lightness: -15%) !default; + +// Default font color for button. +$button-font-color: #fff !default; + +// Default alternative font color for button. +$button-font-color-alt: #000 !default; + +// Default radius for button. +$button-radius: 0 !default; + +// Default sizes for button. +$button-sizes: ( + tiny: 0.7, + small: 0.8, + medium: 1, + large: 1.3, +) !default; + +// Default font size for button. +$button-font-size: 0.9rem !default; + +// Default opacity for a disabled button. +$button-opacity-disabled: 0.25 !default; +``` diff --git a/libraries/foundation-6/docs/pages/slider.md b/libraries/foundation-6/docs/pages/slider.md new file mode 100755 index 00000000..78ccc50f --- /dev/null +++ b/libraries/foundation-6/docs/pages/slider.md @@ -0,0 +1,132 @@ +--- +title: Slider +description: This handy lil slider is perfect for setting specific values within a range. +sass: scss/components/_slider.scss +js: js/foundation.slider.js +tags: + - range +--- + +## Basics + +Create a slider by adding the class `.slider` and the attribute `data-slider` to a container element. You should also define both a starting and maximum value for the slider. + +Inside the container are three elements: +- The handle (`.slider-handle`), which the user drags. +- The fill (`.slider-fill`), which resizes dynamically based on where the handle is. +- A hidden `<input>`, which is where the value of the slider is stored. + +```html_example +<div class="slider" data-slider data-initial-start="50" data-end="200"> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span> + <span class="slider-fill" data-slider-fill></span> + <input type="hidden"> +</div> +``` + +--- + +## Vertical + +To get *vertical*, just add a `.vertical` class and `data-vertical="true"` the slider. + +```html_example +<div class="slider vertical" data-slider data-initial-start="25" data-end="200" data-vertical="true"> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span> + <span class="slider-fill" data-slider-fill></span> + <input type="hidden"> +</div> +``` + +--- + +## Disabled + +Add the class `.disabled` to disable interaction with the slider. + +```html_example +<div class="slider disabled" data-slider data-initial-start="78"> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span> + <span class="slider-fill" data-slider-fill></span> + <input type="hidden"> +</div> +``` + +--- + +## Two Handles + +Two-handle sliders can be used to define a range of values, versus a single value. To make a two-handle slider, add a second handle, and a second `<input>`. This works with horizontal and vertical sliders. + +You can add IDs to the `<input>`s inside the sliders to make it easier to access the values. If you don't, the plugin will add an ID to each for you. + +Note that the first handle manipulates the first `<input>`, while the second handle manipulates the second `<input>`. + +```html_example +<div class="slider" data-slider data-initial-start="25" data-initial-end="75"> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span> + <span class="slider-fill" data-slider-fill></span> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span> + <input type="hidden"> + <input type="hidden"> +</div> +``` + +--- + +## Data Binding + +Data binding allows you to connect the slider to an external `<input>` field. With data binding set up, dragging the handle will change the value inside the text field, and editing the number in the text field will move the slider in real-time. + +To set it all up, create an `<input>` with an ID and add `aria-controls="id"` to the slider handle, where `id` is the ID of the `<input>`. + +```html_example +<div class="small-10 columns"> + <div class="slider" data-slider data-initial-start="50"> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1" aria-controls="sliderOutput1"></span> + <span class="slider-fill" data-slider-fill></span> + </div> +</div> +<div class="small-2 columns"> + <input type="number" id="sliderOutput1"> +</div> +``` + +--- + +Or with a step size: + +```html_example +<div class="small-10 columns"> + <div class="slider" data-slider data-initial-start="50" data-step="5"> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1" aria-controls="sliderOutput2"></span> + <span class="slider-fill" data-slider-fill></span> + </div> +</div> +<div class="small-2 columns"> + <input type="number" id="sliderOutput2"> +</div> +``` +--- + +## Native Range Slider + +In Foundation 6.2, we introduced styles for `<input type="range">`, the native HTML element for range sliders. It's not supported in every browser, namely IE9 and some older mobile browsers. [View browser support for the range input type.](http://caniuse.com/#feat=input-range) + +```html_example +<input type="range" min="1" max="100" step="1"> +``` + +If you're using the Sass version of Foundation, add this line to your main Sass file: + +```scss +@include foundation-range-input; +``` + +It's possible to use both the JavaScript slider and the native slider in the same codebase, as the CSS selectors used don't overlap. Here's what's different about the native slider: + +- Less markup: just write `<input type="range">` and you're good. +- No JavaScript is needed, which guarantees it runs faster in most browsers. +- To disable the slider, add `disabled` as an attribute, instead of a class. +- No support for vertical orientation. +- No support for two handles. diff --git a/libraries/foundation-6/docs/pages/starter-projects.md b/libraries/foundation-6/docs/pages/starter-projects.md new file mode 100755 index 00000000..b4ee72f7 --- /dev/null +++ b/libraries/foundation-6/docs/pages/starter-projects.md @@ -0,0 +1,76 @@ +--- +title: Starter Projects +description: We have a few starter project templates that can be installed with Yeti Launch or the Foundation CLI. You can also download them manually! +--- + +Our project templates give you a solid... *Foundation* on which to start a new project. Both templates use the [Gulp](http://gulpjs.com) build system to automate the process of compiling Sass, processing JavaScript, copying files, and more. + +## Basic Template + +Our basic project template is a lot like the Sass template from Foundation 5. The project has a flat directory structure and only compiles Sass. It's great if you want to quickly put together a simple project and only need to use Sass. + +You can set up a basic project through [Yeti Launch](installation.html), or the Foundation CLI with this command: + +```bash +foundation new --framework sites --template basic +``` + +It's also possible to download the template files directly from GitHub. Run `npm install` and `bower install` first to set it up, then `npm start` to run it. [Download basic template](https://github.com/zurb/foundation-sites-template/archive/master.zip). + +--- + +## ZURB Template + +The official ZURB Template includes not only Sass processing, but also JavaScript processing, Handlebars templating, and image compression. We use this exact template at ZURB for our client work! + +You can set up an advanced project through [Yeti Launch](installation.html), or the Foundation CLI with this command: + +```bash +foundation new --framework sites --template zurb +``` + +It's also possible to download the template files directly from GitHub. Run `npm install` and `bower install` first to set it up, then `npm start` to run it. [Download advanced template](https://github.com/zurb/foundation-zurb-template/archive/master.zip). + +The biggest difference between this and the basic template is the folder structure. In the ZURB Template, your project has a `src/` folder which contains your source files, and a separate `dist/` folder with your finished website. As you work on your project, Gulp continuously updates your `dist/` folder with new versions of files. To compile a production build, run `npm run build`. + +Here's an overview of what the ZURB Template can do: + +### Asset Copying + +Gulp will copy anything out of the `src/assets` folder as-is to the `assets` folder of your final project. Note that Sass files, JavaScript files, and images are *not* part of this copying process, as they have their own steps. + +### Page Compilation + +The `src/` directory includes three folders used to create HTML pages: `pages/`, `layouts/`, and `partials/`. A flat file compiler called [Panini](panini.html) is used to process your project's various pages, inserting them into a common template, and injecting any HTML partials. This is done with a templating language called [Handlebars](http://handlebarsjs.com/). + +Panini has a dedicated page here in the docs that explains its various features. **[Learn more about Panini.](panini.html)** + +### Sass Compilation + +Sass is compiled to CSS using [Libsass](http://sass-lang.com/libsass) (via [node-sass](https://github.com/sass/node-sass)). The main Sass file is under `src/assets/scss/app.scss`, and imports Foundation and Motion UI. Any new Sass partials you create should be in this folder as well. + +The CSS is output in the `nested` style, which is readable like normal CSS. A source map is also created, which can be read by developer tools such as the Chrome Web Inspector. When building for production, the CSS is also compressed with [clean-css](https://github.com/jakubpawlowicz/clean-css/issues), and pruned with [UnCSS](https://github.com/giakki/uncss). UnCSS scans the HTML of your pages and removes any CSS classes you didn't use. + +### JavaScript Compilation + +All JavaScript files in the `src/assets/js` folder, along with Foundation and its dependencies, are bundled into one file called `app.js`. The files are bundled in this order: + +- Foundation's dependencies (including jQuery) +- All files in `src/assets/js` +- `app.js` + +A source map is created that maps back to the original files. By default, the bundled `app.js` is uncompressed. When building for production, the file is run through [UglifyJS](https://github.com/mishoo/UglifyJS) for compression. + +### Image Compression + +By default, all images are copied as-is from `assets/img` to your `dist` folder. When building for production, images are run through [gulp-imagemin](https://github.com/sindresorhus/gulp-imagemin) for compression. The plugin supports JPEG, PNG, SVG, and GIF files. + +### BrowserSync + +The template creates a [BrowserSync](http://www.browsersync.io/) server, which is at `http://localhost:8000`. Load this URL to see your compiled templates. While the server is running, any time you save a file, any pages you have open will automatically refresh, allowing you to see changes in real-time as you work. + +### Style Guide Creation + +Under `src/styleguide` are two files to create a style guide for your project. The style guide is generated using Style Sherpa, a small plugin created by ZURB. + +Style Sherpa has a dedicated page here in the docs that explains its various features. **[Learn more about Style Sherpa.](style-sherpa.html)** diff --git a/libraries/foundation-6/docs/pages/sticky.md b/libraries/foundation-6/docs/pages/sticky.md new file mode 100755 index 00000000..e9a68a81 --- /dev/null +++ b/libraries/foundation-6/docs/pages/sticky.md @@ -0,0 +1,151 @@ +--- +title: Sticky +description: Stick nearly anything, anywhere you like! +js: js/foundation.sticky.js +--- + +## Basics + +Add the `.sticky` class and `[data-sticky]` to an element to create something that sticks. Sticky elements must be wrapped in a container, which will determine your sizing and grid layout, with `[data-sticky-container]`. + +```html +<div class="columns small-6 right" data-sticky-container> + <div class="sticky" data-sticky data-margin-top="0"> + <img class="thumbnail" src="assets/img/generic/rectangle-3.jpg"> + <!-- This sticky element would stick to the window, with a marginTop of 0 --> + </div> +</div> + + +<div class="columns small-6 right" data-sticky-container> + <div class="sticky" data-sticky data-anchor="foo"> + <img class="thumbnail" src="assets/img/generic/rectangle-3.jpg"> + <!-- This sticky element would stick to the window for the height of the element #foo, with a 1em marginTop --> + </div> +</div> +``` + +<!-- ```html_example --> +<div class="row"> + <div class="columns small-6" id="example1" data-something> + <p id="doodle"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + <p> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + <p> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + <p> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + </div> + <div class="columns small-6 right" data-sticky-container> + <div class="sticky" data-sticky data-anchor="example1"> + <img class="thumbnail" src="assets/img/generic/rectangle-3.jpg"> + </div> + </div> +</div> + +## Advanced + +You can also use two anchors, if you please. Using `data-top-anchor="idOfSomething"`, `data-btm-anchor="idOfSomething:[top/bottom]"`, or a set pixel number `data-top-anchor="150"`. If you use an element id with no top/bottom specified, it defaults to the top. + +```html +<div class="columns small-6 right" data-sticky-container> + <div class="sticky" data-sticky data-top-anchor="example2:top" data-btm-anchor="foo:bottom"> + <img class="thumbnail" src="assets/img/generic/rectangle-5.jpg"> + </div> +</div> +``` + + +<div class="row"> + <div class="columns small-6"> + <p> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + </p> + <p id="example2"> + <strong>The image to the right will be sticky when it hits the top of this paragraph element.</strong> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + <p> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + <p id="foo"> + <strong>The image to the right will lose stickiness when it hits the bottom of this paragraph element.</strong> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + <p> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </p> + </div> + <div class="columns small-6 right" data-sticky-container> + <div class="sticky" data-sticky data-top-anchor="example2:top" data-btm-anchor="foo:bottom"> + <img class="thumbnail" src="assets/img/generic/rectangle-5.jpg"> + </div> + </div> +</div> + +## Stick to bottom + +You can also stick to bottom. +Using `data-stick-to="bottom"`. +Here is an example using two anchors (like above) with a stick to bottom. +```html +<div class="columns small-6 right" data-sticky-container> + <div class="sticky" data-sticky data-stick-to="bottom" data-top-anchor="example3" data-btm-anchor="foo2:top"> + <img class="thumbnail" src="assets/img/generic/rectangle-5.jpg"> + </div> +</div> +``` + + +<div class="row"> + <div class="columns small-6"> + <p> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + <p id="example3"><strong>The image to the right will be sticky when it hits the top of this paragraph element.</strong> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + <p> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + <p id="foo2"> + <strong>The image to the right will lose stickiness when it hits the top of this paragraph element.</strong> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </p> + </div> + <div class="columns small-6 right" data-sticky-container> + <div class="sticky" data-sticky data-top-anchor="example3:top" data-btm-anchor="foo2:top" data-stick-to="bottom"> + <img class="thumbnail" src="assets/img/generic/rectangle-5.jpg"> + </div> + </div> +</div> + +## Sticky Navigation + +Sometimes you want a sticky nav bar or side nav, this is pretty simple, but does involve an extra step from Foundation 5's `sticky` class addition to Top Bar. The minimum to make a stick nav bar is below, and you can swap out `.title-bar` for another menu component. Please note the style `width:100%`, you can do it inline, or in your style sheets. + +```html +<div data-sticky-container> + <div class="title-bar" data-sticky data-options="marginTop:0;" style="width:100%"> + <div class="title-bar-left"><!-- Content --></div> + <div class="title-bar-right"><!-- Content --></div> + </div> +</div> +``` +With the minimum markup above, your nav bar will be sticky for the entire page. You could change this up by using anchor points, so it sticks and breaks at important markers on the page. A top anchor point of '1' will make it stick at the top of the page, a bottom anchor of `content:bottom` will make it break at the bottom of your `#content` element. This is useful if you want a sticky nav element, but not for the full length of the page. +```html +<div data-sticky-container> + <div class="title-bar" data-sticky data-options="marginTop:0;" style="width:100%" data-top-anchor="1" data-btm-anchor="content:bottom"> + <div class="title-bar-left"><!-- Content --></div> + <div class="title-bar-right"><!-- Content --></div> + </div> +</div> +``` + +<iframe src="./assets/partials/sticky-nav.html" width="100%" height="300px" frameborder="0"></iframe> +<!-- ``` --> diff --git a/libraries/foundation-6/docs/pages/style-sherpa.md b/libraries/foundation-6/docs/pages/style-sherpa.md new file mode 100755 index 00000000..6b214ecc --- /dev/null +++ b/libraries/foundation-6/docs/pages/style-sherpa.md @@ -0,0 +1,107 @@ +--- +title: Style Sherpa +description: Bundled with the ZURB Template, Style Sherpa makes it easy to create a style guide for your codebase, with just two files. +library: + github: https://github.com/zurb/style-sherpa + docs: https://github.com/zurb/style-sherpa +--- + +Style guides are a critical component of a CSS codebase, especially one used by many people. It's important that everyone on a team knows how to build a component. Style guides are that documentation. The docs you're reading right now are a style guide of sorts, for the core Foundation styles. + +[Style Sherpa](https://github.com/zurb/style-sherpa) is a small tool bundled with the [ZURB Template](starter-projects.html#zurb-template) that can generate a basic style guide for you quickly. The style guide is created from a single Markdown file, which contains all of the page content, and an HTML template, which defines the structure around the content. + +--- + +## Usage + +The ZURB Template includes the folder `src/styleguide/`, which contains both of the files you need to build your style guide. Like everything else in the ZURB Template, just edit the files and your changes will instantly be compiled + +One is a Markdown file, `index.md`. This file contains the contents of your style guide. + +The other is a Handlebars template, `template.html`. The contents of your style guide are inserted into this template as HTML. The final file is included in the `dist/` folder of your project as `styleguide.html`. + +--- + +## Writing Content + +The style guide is divided into sections. Generally, each component in your codebase—think buttons, panels, modals, form controls, and so on—will have its own section. + +Sections are titled with a Markdown heading, which is a single hash mark: + +```markdown +# Buttons + +Lorem ipsum dolor sit amet, **consectetur adipisicing** elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +``` + +To create a new section, add four line breaks and a new heading: + +```markdown +# Buttons + +Lorem ipsum dolor sit amet, **consectetur adipisicing** elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + +# Forms + +Lorem ipsum dolor sit amet, `<form>` elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +``` + +### Code Samples + +A style guide should always have HTML examples, which explain how to build something. To create a code block in Markdown, surround the code with three backticks. You can also set the language of the code block after the first set of backticks. Style Sherpa will color the syntax for you in the final output. + + ```html + <button class="button" type="button">This is a button.</button> + ``` + +You'll also want to show a live demo of the component below the code sample, so developers can see both the HTML for an element, and what the HTML looks live rendered in one place. Style Sherpa has a shortcut for this: instead of setting `html` as the language in Markdown, set it to `html_example`. This will print a code sample and a live demo with the same code all in one go. + + ```html_example + <button class="button" type="button">This is a button.</button> + ``` + +The output looks something like this: + +```html_example +<button class="button" type="button">This is a button.</button> +``` + +--- + +## Changing the Template + +The ZURB Template includes a minimal boilerplate for your style guide, but you're free to customize it however you want. + +The boilerplate uses Foundation's tab plugin—one tab is made for each section. Here's what the Handlebars code looks like: + +{{{{raw}}}} +```handlebars +<div class="column row"><div class="row collapse"> + <div class="large-3 medium-4 columns" data-sticky-container> + <ul class="vertical menu"> + {{#each pages}} + <li><a href="#{{ anchor }}">{{ title }}</a></li> + {{/each}} + </ul> + </div> + + <div class="large-9 medium-8 columns"> + {{#each pages}} + <section class="ss-section" id="{{ anchor }}"> + {{ body }} + </section> + {{/each}} + </div> + +</div></div> +``` + +The template has access to a `pages` variable, which is an array with the data for each page. When looping through `pages` using `{{#each}}`, you have access to these variables: + +- `title`: The name of the section. +- `anchor`: The name of the section, formatted as a URL anchor. +- `body`: The content of the section. + +{{{{/raw}}}} diff --git a/libraries/foundation-6/docs/pages/switch.md b/libraries/foundation-6/docs/pages/switch.md new file mode 100755 index 00000000..1abd4ed3 --- /dev/null +++ b/libraries/foundation-6/docs/pages/switch.md @@ -0,0 +1,114 @@ +--- +title: Switch +description: Now you can tell your users to flip the switch or switch off. +sass: scss/components/_switch.scss +--- + +## Basics + +Add the `.switch` class to an element to create a switch. Inside the switch, add an `<input type="checkbox">` with the class `.switch-input`. Next to that, create a `<label>` with the class `.switch-paddle`. + +Give the `<input>` a unique ID and point the `<label>` to it with the `for` attribute. This makes the switch clickable. + +<div class="primary callout"> + <p>Inside the switch label is screen reader-only text, which uses the <code>.show-for-sr</code> class to visually mask the text.</p> +</div> + +<div class="callout warning"> + <p>Make sure the HTML of the switch goes in the order you see above—<code><input></code>, then <code><label></code></p> +</div> + +```html_example +<div class="switch"> + <input class="switch-input" id="exampleSwitch" type="checkbox" name="exampleSwitch"> + <label class="switch-paddle" for="exampleSwitch"> + <span class="show-for-sr">Download Kittens</span> + </label> +</div> +``` + +--- + +## Radio Switch + +You can also use `<input type="radio">` instead of `checkbox` to create a series of options. + +```html_example +<div class="switch"> + <input class="switch-input" id="exampleRadioSwitch1" type="radio" checked name="testGroup"> + <label class="switch-paddle" for="exampleRadioSwitch1"> + <span class="show-for-sr">Bulbasaur</span> + </label> +</div> +``` + +<div class="switch"> + <input class="switch-input" id="exampleRadioSwitch2" type="radio" name="testGroup"> + <label class="switch-paddle" for="exampleRadioSwitch2"> + <span class="show-for-sr">Charmander</span> + </label> +</div> + +<div class="switch"> + <input class="switch-input" id="exampleRadioSwitch3" type="radio" name="testGroup"> + <label class="switch-paddle" for="exampleRadioSwitch3"> + <span class="show-for-sr">Squirtle</span> + </label> +</div> + +--- + +## Sizing Classes + +Use the classes `.tiny`, `.small`, or `.large` to change the switch size. + +```html_example +<div class="switch tiny"> + <input class="switch-input" id="tinySwitch" type="checkbox" name="exampleSwitch"> + <label class="switch-paddle" for="tinySwitch"> + <span class="show-for-sr">Tiny Sandwiches Enabled</span> + </label> +</div> + +<div class="switch small"> + <input class="switch-input" id="smallSwitch" type="checkbox" name="exampleSwitch"> + <label class="switch-paddle" for="smallSwitch"> + <span class="show-for-sr">Small Portions Only</span> + </label> +</div> + +<div class="switch large"> + <input class="switch-input" id="largeSwitch" type="checkbox" name="exampleSwitch"> + <label class="switch-paddle" for="largeSwitch"> + <span class="show-for-sr">Show Large Elephants</span> + </label> +</div> +``` + +--- + +## Inner Labels + +You can place active and inactive text inside of a switch. The active text (`.switch-active`) only displays when the switch is on, and the inactive text (`.switch-inactive`) only displays when the switch is off. + +Active/inactive text goes inside of the switch's `<label>`. + +<div class="primary callout"> + <p>Depending on the length of the words you place inside the switch, you may need to fine-tune the <code>left</code> or <code>right</code> CSS properties of the text to get it positioned right.</p> +</div> + +<div class="primary callout"> + <p>Add <code>aria-hidden="true"</code> to these labels to prevent AT from reading them.</p> +</div> + +```html_example +<p>Do you like me?</p> +<div class="switch large"> + <input class="switch-input" id="yes-no" type="checkbox" name="exampleSwitch"> + <label class="switch-paddle" for="yes-no"> + <span class="show-for-sr">Do you like me?</span> + <span class="switch-active" aria-hidden="true">Yes</span> + <span class="switch-inactive" aria-hidden="true">No</span> + </label> +</div> +``` diff --git a/libraries/foundation-6/docs/pages/table.md b/libraries/foundation-6/docs/pages/table.md new file mode 100755 index 00000000..06b08238 --- /dev/null +++ b/libraries/foundation-6/docs/pages/table.md @@ -0,0 +1,228 @@ +--- +title: Tables +description: Okay, they're not the sexiest things ever, but tables get the job done (for tabular data, of course). They have responsive modifiers to help solve some of your layout issues based on your tables needs. +sass: scss/components/_table.scss +--- + +## Basics + +No bells or whistles here, just a straight up table for all of your basic table needs. + +```html_example +<table> + <thead> + <tr> + <th width="200">Table Header</th> + <th>Table Header</th> + <th width="150">Table Header</th> + <th width="150">Table Header</th> + </tr> + </thead> + <tbody> + <tr> + <td>Content Goes Here</td> + <td>This is longer content Donec id elit non mi porta gravida at eget metus.</td> + <td>Content Goes Here</td> + <td>Content Goes Here</td> + </tr> + <tr> + <td>Content Goes Here</td> + <td>This is longer Content Goes Here Donec id elit non mi porta gravida at eget metus.</td> + <td>Content Goes Here</td> + <td>Content Goes Here</td> + </tr> + <tr> + <td>Content Goes Here</td> + <td>This is longer Content Goes Here Donec id elit non mi porta gravida at eget metus.</td> + <td>Content Goes Here</td> + <td>Content Goes Here</td> + </tr> + </tbody> +</table> +``` + +--- + +## Hover State + +Need to spiff up the table just a tad? Just add the class `.hover` to lightly darken the table rows on hover. + +```html +<table class="hover"> +</table> +``` + +<table class="hover"> + <thead> + <tr> + <th width="200">Table Header</th> + <th>Table Header</th> + <th width="150">Table Header</th> + <th width="150">Table Header</th> + </tr> + </thead> + <tbody> + <tr> + <td>Content Goes Here</td> + <td>This is longer content Donec id elit non mi porta gravida at eget metus.</td> + <td>Content Goes Here</td> + <td>Content Goes Here</td> + </tr> + <tr> + <td>Content Goes Here</td> + <td>This is longer Content Goes Here Donec id elit non mi porta gravida at eget metus.</td> + <td>Content Goes Here</td> + <td>Content Goes Here</td> + </tr> + <tr> + <td>Content Goes Here</td> + <td>This is longer Content Goes Here Donec id elit non mi porta gravida at eget metus.</td> + <td>Content Goes Here</td> + <td>Content Goes Here</td> + </tr> + </tbody> +</table> + +--- + +## Stacked Table + +To stack a table on small screens, add the class `.stack`. + +```html +<table class="stack"> +</table> +``` + +<table class="stack"> + <thead> + <tr> + <th>Cookies</th> + <th>Taste</th> + <th>Calories</th> + <th>Overall</th> + </tr> + </thead> + <tbody> + <tr> + <td>Chocolate Chip</td> + <td>Tastey</td> + <td>120cal</td> + <td>7.5/10</td> + </tr> + <tr> + <td>Snickerdoodle</td> + <td>Delicious</td> + <td>95cal</td> + <td>8/10</td> + </tr> + <tr> + <td>Oatmeal Raisin</td> + <td>Superb</td> + <td>10cal</td> + <td>11/10</td> + </tr> + </tbody> +</table> + +--- + +## Scrolling Table + +Got a lot of tubular tabular data? Add a wrapper element with the class `.table-scroll` around your table to enable horizontal scrolling. + +<div class="primary callout"> + <p>The wrapping element was added in Foundation 6.2—prior to that, you just added the class <code>.scroll</code> to the table itself. However, this method doesn't work great with Internet Explorer 9. <strong>If you don't need IE9 support, you can just add <code>.scroll</code> to your table, and the wrapping element isn't necessary.</strong> +</div> + +```html +<div class="table-scroll"> + <table></table> +</div> +``` + +<div class="table-scroll"> + <table> + <thead> + <tr> + <th>This is the description!</th> + <th>One</th> + <th>Two</th> + <th>Three</th> + <th>Four</th> + <th>Five</th> + <th>Six</th> + <th>Seven</th> + <th>Eight</th> + <th>Nine</th> + <th>Ten</th> + <th>Eleven</th> + <th>Twelve</th> + </tr> + </thead> + <tbody> + <tr> + <td style="display:block; width:400px;">These are all the words that people use to describe Foundation 6!</td> + <td>Cool</td> + <td>Swag</td> + <td>Chill</td> + <td>Killer</td> + <td>Rad</td> + <td>Baller</td> + <td>OMG</td> + <td>Sweet</td> + <td>Awesome</td> + <td>Beast</td> + <td>Dope</td> + <td>Tubular</td> + </tr> + <tr> + <td>These are some words that people use to describe other web frameworks.</td> + <td>Whatevs</td> + <td>Ugh.</td> + <td>LOL</td> + <td>K</td> + <td>Aight</td> + <td>Eh.</td> + <td>Grrr...</td> + <td>Meh.</td> + <td>TTYL</td> + <td>Bleh.</td> + <td>Really?</td> + <td>Why?</td> + </tr> + <tr> + <td>Here are some great super heros.</td> + <td>Batman</td> + <td>Superman</td> + <td>Spiderman</td> + <td>Wonder Woman</td> + <td>Hulk</td> + <td>Nicolas Cage</td> + <td>Antman</td> + <td>Aquaman</td> + <td>Captain America</td> + <td>Wolverine</td> + <td>Thor</td> + <td>Iron Man</td> + </tr> + </tbody> + <tfoot> + <tr> + <td>Here's a footer, just in case</td> + <td></td> + <td></td> + <td></td> + <td></td> + <td></td> + <td></td> + <td></td> + <td></td> + <td></td> + <td></td> + <td></td> + <td></td> + </tr> + </tfoot> + </table> +</div> diff --git a/libraries/foundation-6/docs/pages/tabs.md b/libraries/foundation-6/docs/pages/tabs.md new file mode 100755 index 00000000..5ecc7f5a --- /dev/null +++ b/libraries/foundation-6/docs/pages/tabs.md @@ -0,0 +1,111 @@ +--- +title: Tabs +description: Tabs are elements that help you organize and navigate multiple documents in a single container. They can be used for switching between items in the container. +sass: scss/components/_tabs.scss +js: js/foundation.tabs.js +--- + +## Basics + +There are two pieces to a tabbed interface: the tabs themselves, and the content for each tab. The tabs are an element with the class `.tabs`, and each item has the class `.tabs-title`. Each tab contains a link to a tab. The `href` of each link should match the ID of a tab. + +```html +<ul class="tabs" data-tabs id="example-tabs"> + <li class="tabs-title is-active"><a href="#panel1" aria-selected="true">Tab 1</a></li> + <li class="tabs-title"><a href="#panel2">Tab 2</a></li> +</ul> +``` + +The tab content container has the class `.tabs-content`, while each section has the class `.tabs-panel`. Each content pane also has a unique ID, which is targeted by a link in the tabstrip. + +```html +<div class="tabs-content" data-tabs-content="example-tabs"> + <div class="tabs-panel is-active" id="panel1"> + <p>Vivamus hendrerit arcu sed erat molestie vehicula. Sed auctor neque eu tellus rhoncus ut eleifend nibh porttitor. Ut in nulla enim. Phasellus molestie magna non est bibendum non venenatis nisl tempor. Suspendisse dictum feugiat nisl ut dapibus.</p> + </div> + <div class="tabs-panel" id="panel2"> + <p>Suspendisse dictum feugiat nisl ut dapibus. Vivamus hendrerit arcu sed erat molestie vehicula. Ut in nulla enim. Phasellus molestie magna non est bibendum non venenatis nisl tempor. Sed auctor neque eu tellus rhoncus ut eleifend nibh porttitor.</p> + </div> +</div> +``` + +Put it all together, and we get this: + +<ul class="tabs" data-tabs id="example-tabs"> + <li class="tabs-title is-active"><a href="#panel1" aria-selected="true">Tab 1</a></li> + <li class="tabs-title"><a href="#panel2">Tab 2</a></li> + <li class="tabs-title"><a href="#panel3">Tab 3</a></li> + <li class="tabs-title"><a href="#panel4">Tab 4</a></li> + <li class="tabs-title"><a href="#panel5">Tab 5</a></li> + <li class="tabs-title"><a href="#panel6">Tab 6</a></li> +</ul> + +<div class="tabs-content" data-tabs-content="example-tabs"> + <div class="tabs-panel is-active" id="panel1"> + <p>one</p> + <p>Check me out! I'm a super cool Tab panel with text content!</p> + </div> + <div class="tabs-panel" id="panel2"> + <p>two</p> + <img class="thumbnail" src="assets/img/generic/rectangle-7.jpg"> + </div> + <div class="tabs-panel" id="panel3"> + <p>three</p> + <p>Check me out! I'm a super cool Tab panel with text content!</p> + </div> + <div class="tabs-panel" id="panel4"> + <p>four</p> + <img class="thumbnail" src="assets/img/generic/rectangle-2.jpg"> + </div> + <div class="tabs-panel" id="panel5"> + <p>five</p> + <p>Check me out! I'm a super cool Tab panel with text content!</p> + </div> + <div class="tabs-panel" id="panel6"> + <p>six</p> + <img class="thumbnail" src="assets/img/generic/rectangle-8.jpg"> + </div> +</div> + +--- + +## Vertical Tabs + +Add the `.vertical` class to a tabstrip to stack tabs vertically. You can also place the tabstrip and the tab contents in a grid to make them sit side-by-side. + +```html_example +<div class="row collapse"> + <div class="medium-3 columns"> + <ul class="tabs vertical" id="example-vert-tabs" data-tabs> + <li class="tabs-title is-active"><a href="#panel1v" aria-selected="true">Tab 1</a></li> + <li class="tabs-title"><a href="#panel2v">Tab 2</a></li> + <li class="tabs-title"><a href="#panel3v">Tab 3</a></li> + <li class="tabs-title"><a href="#panel4v">Tab 4</a></li> + <li class="tabs-title"><a href="#panel3v">Tab 5</a></li> + <li class="tabs-title"><a href="#panel4v">Tab 6</a></li> + </ul> + </div> + <div class="medium-9 columns"> + <div class="tabs-content vertical" data-tabs-content="example-vert-tabs"> + <div class="tabs-panel is-active" id="panel1v"> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> + </div> + <div class="tabs-panel" id="panel2v"> + <p>Vivamus hendrerit arcu sed erat molestie vehicula. Sed auctor neque eu tellus rhoncus ut eleifend nibh porttitor. Ut in nulla enim. Phasellus molestie magna non est bibendum non venenatis nisl tempor. Suspendisse dictum feugiat nisl ut dapibus.</p> + </div> + <div class="tabs-panel" id="panel3v"> + <img class="thumbnail" src="assets/img/generic/rectangle-3.jpg"> + </div> + <div class="tabs-panel" id="panel4v"> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> + </div> + <div class="tabs-panel" id="panel5v"> + <p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + </div> + <div class="tabs-panel" id="panel6v"> + <img class="thumbnail" src="assets/img/generic/rectangle-5.jpg"> + </div> + </div> + </div> +</div> +``` diff --git a/libraries/foundation-6/docs/pages/thumbnail.md b/libraries/foundation-6/docs/pages/thumbnail.md new file mode 100755 index 00000000..ebdbe22c --- /dev/null +++ b/libraries/foundation-6/docs/pages/thumbnail.md @@ -0,0 +1,23 @@ +--- +title: Thumbnail +description: If you're going to use an image as an anchor, we've got you covered. All you gotta do is add one class to your image and voilà ! +sass: scss/components/_thumbnail.scss +--- + +The `.thumbnail` class can be applied directly to an `<img>` element, or an `<a>` that wraps it. Make sure the `<img>` has an `alt` attribute that describes the contents of the image. + +```html +<img class="thumbnail" src="assets/img/thumbnail/01.jpg" alt="Photo of Uranus."> +``` + +<div class="row"> + <div class="small-4 columns"> + <img class="thumbnail" src="assets/img/thumbnail/01.jpg" alt="Photo of Uranus."> + </div> + <div class="small-4 columns"> + <img class="thumbnail" src="assets/img/thumbnail/02.jpg" alt="Photo of Neptune."> + </div> + <div class="small-4 columns"> + <img class="thumbnail" src="assets/img/thumbnail/03.jpg" alt="Photo of Pluto."> + </div> +</div> diff --git a/libraries/foundation-6/docs/pages/toggler.md b/libraries/foundation-6/docs/pages/toggler.md new file mode 100755 index 00000000..5aefcebd --- /dev/null +++ b/libraries/foundation-6/docs/pages/toggler.md @@ -0,0 +1,114 @@ +--- +title: Toggler +description: Toggler makes it easy to toggle CSS or animate any element with a click. +js: js/foundation.toggler.js +mui: true +--- + +## Toggle a CSS class + +To setup a class toggle, start by adding the attribute `data-toggler` to an element. The value of `data-toggler` is the class you want to toggle. Also give the element a unique ID so it can be targeted. + +```html +<ul class="menu" id="menuBar" data-toggler=".expanded"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + <li><a href="#">Four</a></li> +</ul> +``` + +Then, add `data-toggle` to any element, with the ID of the target as the value of the attribute. Now, any time you click on this element, the class will toggle on and off on the target. + +```html +<p><a data-toggle="menuBar">Expand!</a></p> +``` + +<p><a data-toggle="menuBar">Expand!</a></p> + +<ul class="menu" id="menuBar" data-toggler=".expanded"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + <li><a href="#">Four</a></li> +</ul> + +--- + +## Toggle with Animation + +Instead of toggling a class, you can also toggle visibility. When toggled, the element comes into or out of view using a Motion UI class. + +Instead of `data-toggler`, add the attribute `data-animate`. The value of the attribute is the *in animation* you want, followed by the *out animation*. + +```html_example +<p><a data-toggle="panel">Toggle Panel</a></p> + +<div class="callout" id="panel" data-toggler data-animate="hinge-in-from-top spin-out"> + <h4>Hello!</h4> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dicta quas optio alias voluptas nobis iusto mollitia asperiores incidunt reprehenderit doloribus voluptatibus officiis minus, inventore, quasi nisi. Consequuntur, quidem. Sint, dicta?</p> +</div> +``` + +--- + +## Mark as Closable + +To create an element that can be closed once, add the attribute `data-closable`. Then add a click trigger inside the element using `data-close`. + +```html_example +<div class="callout" data-closable> + <button class="close-button" data-close>×</button> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Labore praesentium sint alias dolorum qui vel quaerat, libero consequatur non esse asperiores veritatis commodi, odit eum ipsam nemo dicta iste aliquam.</p> +</div> +``` + +--- + +### With Alternate Animation + +`data-closable` can be configured with a custom exit animation. + +```html_example +<div class="callout" data-closable="slide-out-right"> + <button class="close-button" data-close>×</button> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Labore praesentium sint alias dolorum qui vel quaerat, libero consequatur non esse asperiores veritatis commodi, odit eum ipsam nemo dicta iste aliquam.</p> +</div> +``` + +--- + +### Toggle on focus + +The `data-toggle` attribute only toggles classes/visibility on click. You can also have the toggle fire when an element is *focused* or *unfocused* using `data-toggle-focus`. + +```html_example +<input type="text" data-toggle-focus="form-callout" placeholder="Click in here to reveal extra content"> + +<div class="secondary callout is-hidden" id="form-callout" data-toggler="is-hidden"> + <p>This is only visible when the above field has focus.</p> +</div> +``` + +--- + +## Multiple Targets + +The `data-toggle`, `data-close`, and `data-open` attributes can now target multiple elements! The syntax is simple; just pass a *space* separated list to the `data-x` attribute like so: +```html +<button class="button" data-toggle="foo bar baz">Toggle things</button> +``` +Then the elements with ids of `foo`, `bar`, and `baz` will be toggled any time your button, (or any other element you choose), is clicked. + +<button class="button primary" data-toggle="thumb1 thumb2 thumb3">Toggle All These</button> +<div class="row"> + <div class="small-4 columns"> + <img class="thumbnail" id="thumb1" data-toggler data-animate="hinge-in-from-top spin-out" src="assets/img/thumbnail/01.jpg" alt="Photo of Uranus."> + </div> + <div class="small-4 columns"> + <img class="thumbnail" id="thumb2" data-toggler data-animate="hinge-in-from-top spin-out" src="assets/img/thumbnail/02.jpg" alt="Photo of Uranus."> + </div> + <div class="small-4 columns"> + <img class="thumbnail" id="thumb3" data-toggler data-animate="hinge-in-from-top spin-out" src="assets/img/thumbnail/03.jpg" alt="Photo of Uranus."> + </div> +</div> diff --git a/libraries/foundation-6/docs/pages/tooltip.md b/libraries/foundation-6/docs/pages/tooltip.md new file mode 100755 index 00000000..e829db76 --- /dev/null +++ b/libraries/foundation-6/docs/pages/tooltip.md @@ -0,0 +1,63 @@ +--- +title: Tooltips +description: Tooltips? More like <em>Cooltips</em>. But really though, tooltips are nifty for displaying extended information for a term or action on a page. +sass: scss/components/_tooltip.scss +js: js/foundation.tooltip.js +--- + + +## Basic Tooltip +By default, a tooltip appears below the defined term on hover. + +```html_example +<p> +The <span data-tooltip aria-haspopup="true" class="has-tip" data-disable-hover="false" tabindex="1" title="Fancy word for a beetle.">scarabaeus</span> hung quite clear of any branches, and, if allowed to fall, would have fallen at our feet. Legrand immediately took the scythe, and cleared with it a circular space, three or four yards in diameter, just beneath the insect, and, having accomplished this, ordered Jupiter to let go the string and come down from the tree. +</p> +``` + +--- + +## Tooltip Top +To get a tip-top top tooltip (lol), just add the class `.top` to the `<span>` element. + +```html_example +<p> +...clearing away the brambles with the +<span data-tooltip aria-haspopup="true" class="has-tip top" data-disable-hover="false" tabindex="2" title="A tool used for cutting crops.">scythe.</span> +At the spot thus attained a second peg was driven, and about this, as a centre, a rude circle, about four feet in diameter, described. Taking now a spade himself, and giving one to Jupiter and one to me, Legrand begged us to set about one to digging as quickly as possible. +</p> +``` + +--- + +## Tooltip clicking +By default, clicking on a tooltip will leave it open until you click somewhere else. However, you can disable that by adding data-click-open="false" + +```html_example +<p> +this +<span data-tooltip aria-haspopup="true" class="has-tip top" data-disable-hover="false" tabindex="2" title="You see? I'm open!">tooltip will stay open</span> + +while +<span data-tooltip aria-haspopup="true" class="has-tip top" data-click-open="false" data-disable-hover="false" tabindex="2" title="I don't stay open">this one will only be open when hovered</span> +</p> +``` + +--- + +## Tooltip Right and Left + +You can also position the tooltips to the right and left of the word by adding the classes `.right` or `.left` to the `<span>` element. + +<div class="primary callout"> + <p>When using Foundation in <a href="rtl.html">right-to-left</a> mode, "right" still means right, and "left" still means left.</p> +</div> + +```html_example +<p> +To speak the truth, I had no especial relish for such amusement at any time, and, at that particular moment, would most willingly have declined it; for the night was coming on, and I felt much fatigued with the exercise already taken; but I saw no mode of escape, and was fearful of disturbing my poor friend's equanimity by a refusal. Could I have depended, indeed, upon Jupiter's aid, I would have had no hesitation in attempting to get the +<span data-tooltip aria-haspopup="true" class="has-tip right" data-disable-hover="false" tabindex="3" title="Someone not using Foundation.">lunatic</span> +home by force; but I was too well assured of the old negro's disposition, to hope that he would assist me, under any circumstances, in a personal contest with his master. I made no doubt that the latter had been infected with some of the innumerable Southern superstitions about money buried, and that his phantasy had received confirmation by the finding of the scarabaeus, or, perhaps, by Jupiter's obstinacy in maintaining it to be "a bug of real gold." A mind disposed to lunacy would readily be led away by such suggestions -especially if chiming in with favorite preconceived ideas -and then I called to mind the poor fellow's speech about the beetle's being "the +<span data-tooltip aria-haspopup="true" class="has-tip left" data-disable-hover="false" tabindex="4" title="Sometimes referred to as a homepage.">index</span> +of his fortune." Upon the whole, I was sadly vexed and puzzled, but, at length, I concluded to make a virtue of necessity -to dig with a good will, and thus the sooner to convince the visionary, by ocular demonstration, of the fallacy of the opinions he entertained. </p> +``` diff --git a/libraries/foundation-6/docs/pages/top-bar.md b/libraries/foundation-6/docs/pages/top-bar.md new file mode 100755 index 00000000..16367c17 --- /dev/null +++ b/libraries/foundation-6/docs/pages/top-bar.md @@ -0,0 +1,135 @@ +--- +title: Top Bar +description: The new top bar is a simpler wrapper around our flexible menu components. +sass: ./scss/components/_top-bar.scss +flex: true +--- + +<div class="primary callout"> + <p>The features of Foundation 5's top bar are still around, but they've been reworked into smaller, individual plugins. Check out our page on <a href="responsive-navigation.html">responsive navigation</a> to learn more.</p> +</div> + +## Basics + +A top bar (`.top-bar`) can have two sections: a left-hand section (`.top-bar-left`) and a right-hand section (`.top-bar-right`). On small screens, these sections stack on top of each other. + +In the below example, our top bar includes a [dropdown menu](dropdown-menu.html), along with a text input field and action button. The dropdown menu inherits the background color of the top bar. If you're using the Sass version of Foundation, you can change this with the `$topbar-submenu-background` variable. + +```html_example +<div class="top-bar"> + <div class="top-bar-left"> + <ul class="dropdown menu" data-dropdown-menu> + <li class="menu-text">Site Title</li> + <li> + <a href="#">One</a> + <ul class="menu vertical"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </div> + <div class="top-bar-right"> + <ul class="menu"> + <li><input type="search" placeholder="Search"></li> + <li><button type="button" class="button">Search</button></li> + </ul> + </div> +</div> +``` + +--- + +## Advanced Layout + +You can further divide a top bar into a title area and content area. Use the `.top-bar-title` class to create a title/branding area. Next to that can be any element, which is used for the rest of the content. + +```html +<div class="top-bar"> + <div class="top-bar-title"></div> + <div> + <div class="top-bar-left"></div> + <div class="top-bar-right"></div> + </div> +</div> +``` + +In the below example, we've combined the above pattern with the Responsive Toggler plugin, creating a responsive top bar with a toggle click trigger on mobile. + +```html_example +<div class="top-bar"> + <div class="top-bar-title"> + <span data-responsive-toggle="responsive-menu" data-hide-for="medium"> + <button class="menu-icon dark" type="button" data-toggle></button> + </span> + <strong>Site Title</strong> + </div> + <div id="responsive-menu"> + <div class="top-bar-left"> + <ul class="dropdown menu" data-dropdown-menu> + <li> + <a href="#">One</a> + <ul class="menu vertical"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </div> + <div class="top-bar-right"> + <ul class="menu"> + <li><input type="search" placeholder="Search"></li> + <li><button type="button" class="button">Search</button></li> + </ul> + </div> + </div> +</div> +``` + +--- + +## Stacking + +By default, the two sections of a top bar will stack on top of each other on small screens. This can be changed by adding the class `.stacked-for-medium` or `.stacked-for-large`. + +```html +<div class="top-bar stacked-for-medium"> + <!-- ... --> +</div> +``` + +<div class="top-bar stacked-for-medium"> + <div class="top-bar-left"> + <ul class="dropdown menu" data-dropdown-menu> + <li class="menu-text">Site Title</li> + <li> + <a href="#">One</a> + <ul class="menu vertical"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </div> + <div class="top-bar-right"> + <ul class="menu"> + <li><input type="search" placeholder="Search"></li> + <li><button type="button" class="button">Search</button></li> + </ul> + </div> +</div> + +--- + +## Sticky Navigation + +See the documentation for the [Sticky](sticky.html#sticky-navigation) plugin to see how to easily make a sticky nav bar. diff --git a/libraries/foundation-6/docs/pages/typography-base.md b/libraries/foundation-6/docs/pages/typography-base.md new file mode 100755 index 00000000..2d5f90ed --- /dev/null +++ b/libraries/foundation-6/docs/pages/typography-base.md @@ -0,0 +1,262 @@ +--- +title: Base Typography +description: Typography in Foundation 6 is meant to make your life easier by providing clean, attractive, simple default styles for all of the most basic typographical elements. +sass: + - scss/typography/_base.scss + - scss/typography/_print.scss +tags: + - paragraph + - heading + - link + - definition + - blockquote + - abbreviation + - acronym + - code + - keystroke +--- + +## Paragraphs + +This is a paragraph. Paragraphs are preset with a font size, line height and spacing to match the overall vertical rhythm. To show what a paragraph looks like this needs a little more content—so, did you know that there are storms occurring on Jupiter that are larger than the Earth? Pretty cool. Use the `<strong>` and `<em>` tags to denote text that should be displayed or read with emphasis. Browsers will **bold** and *italicize* the words, while screen readers will read them with *emphasis*. + +<div class="callout primary"> + <p>If the emphasis of a phrase is important, don't make the emphasis purely visual—use the `<em>` or `<strong>` tags to mark it as well. Both of these tags have built-in styles, but there's no harm in adding additional styles in specific contexts.</p> +</div> + +```html +<p>This is a paragraph. Paragraphs are preset with a font size, line height and spacing to match the overall vertical rhythm. To show what a paragraph looks like this needs a little more content so, did you know that there are storms occurring on Jupiter that are larger than the Earth? Pretty cool. Wrap strong around type to <strong>make it bold!</strong>. You can also use em to <em>italicize your words</em>.</p> +``` + +--- + +## Header + +Foundation includes styles for all headings—they're balanced and sized along a modular scale. + +<div class="callout primary"> + <p>Avoid skipping heading levels when structuring your document, as it confuses screen readers. For example, after using an <code><h2></code> in your code, the next heading used should be either <code><h2></code> or <code><h3></code>. If you need a heading to look bigger or smaller to match a specific style, use CSS to override the default size.</p> +</div> + +```html_example +<h1>h1. This is a very large header.</h1> +<h2>h2. This is a large header.</h2> +<h3>h3. This is a medium header.</h3> +<h4>h4. This is a moderate header.</h4> +<h5>h5. This is a small header.</h5> +<h6>h6. This is a tiny header.</h6> +``` + +--- + +### Header Sizes + +The framework includes two typographic scales—one uses a narrow range of sizes for small- and medium-sized screens, and the other uses a wider range of sizes for large-sized screens. You can change these scales, or add new ones for other breakpoints, by editing the `$header-sizes` map in your project's <a href="sass.html#the-settings-file">Settings File</a>. + +Header | Default | Large and up +--------|---------|------------- +`<h1>` | 24px | 48px +`<h2>` | 20px | 40px +`<h3>` | 19px | 31px +`<h4>` | 18px | 25px +`<h5>` | 17px | 20px +`<h6>` | 16px | 16px + +--- + +### Small Header Segments + +By inserting a `<small>` element into a header Foundation will scale the header font size down for an inline element, allowing you to use this for subtitles or other secondary header text. + +```html_example +<h3>Foundation for Sites <small>Version 6.0.4</small></h3> +``` + +--- + +## Links + +Links are very standard, and the color is preset to the Foundation primary color. <a href="global.html">Learn more about Foundation's global colors.</a> + +<div class="callout"> + <p>To make links screen reader-friendly, avoid using vague words like "here" or "read more" within link text. The text of the link itself should adequately describe where the link goes.</p> +</div> + +```html +<p>Links are very standard, and the color is preset to the Foundation primary color. <a href="global.html">Learn more about Foundation's global colors.</a></p> +``` + +--- + +## Dividers + +Use dividers to define thematic breaks between paragraphs. To denote the end of one section of a page and the start of another, it's better to use the `<section>` tag. + +```html +<hr> +``` + +--- + +## Unordered Lists + +Use an unordered list to... *list things*, if the order of the items doesn't matter. + +```html_example +<ul> + <li>List item with a much longer description or more content.</li> + <li>List item</li> + <li>List item + <ul> + <li>Nested list item</li> + <li>Nested list item</li> + <li>Nested list item</li> + </ul> + </li> + <li>List item</li> + <li>List item</li> + <li>List item</li> +</ul> +``` + +--- + +## Ordered Lists + +Use an `<ol>` when creating a list where the order of the items is important, like ranking pizza toppings from best to worst. + +```html_example +<ol> + <li>Cheese (essential)</li> + <li>Pepperoni</li> + <li>Bacon + <ol> + <li>Normal bacon</li> + <li>Canadian bacon</li> + </ol> + </li> + <li>Sausage</li> + <li>Onions</li> + <li>Mushrooms</li> +</ol> +``` + +--- + +## Definition Lists + +A definition list (`<dl>`) is used to display name-value pairs, like metadata or a dictionary definition. Each term (`<dt>`) is paired with one or more definitions (`<dd>`). + +```html_example +<dl> + <dt>Time</dt> + <dd>The indefinite continued progress of existence and events in the past, present, and future regarded as a whole.</dd> + <dt>Space</dt> + <dd>A continuous area or expanse that is free, available, or unoccupied.</dd> + <dd>The dimensions of height, depth, and width within which all things exist and move.</dd> +</dl> +``` + +--- + +## Blockquotes + +Sometimes other people say smart things, and you may want to mention those things with a quote. We've got you covered. + +```html_example +<blockquote> + Those people who think they know everything are a great annoyance to those of us who do. + <cite>Isaac Asimov</cite> +</blockquote> +``` + +--- + +## Abbreviations + +Use the `<abbr>` tag to annotate a shortened term. Abbreviations must always have a `title` attribute which clarifies the full term. + +```html_example +<p>In my dream last night, I saw <abbr title="John Ronald Reuel">J. R. R.</abbr> Tolkien and George <abbr title="Raymond Richard">R. R.</abbr> Martin hanging out on Sunset <abbr title="Boulevard">Blvd</abbr>.</p> +``` + +--- + +## Code + +Format references to code with the `<code>` tag. + +```html_example +Remember to escape angle brackets when printing HTML: <code><div></code> +``` + +--- + +## Keystrokes + +Use the `<kbd>` element to annotate a key stroke or combination. + +```html_example +<p>Press <kbd>Cmd+Q</kbd> (or <kbd>Ctrl+Q</kbd> on Windows) to play Half-Life 3.</p> +``` + +--- + +## Accessibility + +Text is core to the content of your page, so making it accessible to everyone is important. Here are some general guidelines to follow. + +### Text vs. Images + +Prefer using actual text over text inside a graphic. Assistive technologies can't read an image, and the text in an image can't be resized by a browser, like normal text. If an image has text that needs to be read, add it in the `alt` attribute of the image. + +```html +<img src="assets/img/buy-now.jpg" alt="Buy now"> +``` + +--- + +### Contrast + +The contrast between the color of an element's text and its background should be high enough that low-vision users can read it. **The minimum recommended contrast ratio is 4.5:1.** There are no automated tools that can effectively check this for you, but if you aren't sure about a specific color combination, you can run it through one of many color contrast checkers, such as [WebAIM's color contrast checker](http://webaim.org/resources/contrastchecker/). + +Google Chrome's [Accessibility Developer Tools](https://chrome.google.com/webstore/detail/accessibility-developer-t/fpkknkljclfencbdbgkenhalefipecmb?hl=en) also includes a contrast checker. By selecting an element in the inspector, you can see if the contrast meets the minimum standards. + +<img class="thumbnail" src="assets/img/a11y/chrome-a11y-inspector.jpg" alt="Screenshot of Google Chrome's Accessibility Tools"> + +--- + +### Type Size + +When possible, use the `rem` and `em` units to size everything. Not just font size, but also padding, margins, and any length value. This ensures that your design scales up and down uniformly if the user changes their browser's text size. It's common for vision-impaired users to resize their browser up to 200% zoom. + +We use the `rem` unit nearly everywhere in Foundation, and even wrote a Sass function to make it a little easier. The `rem-calc()` function can take one or more pixel values and convert them to proper `rem` values. + +```scss +.element { + width: rem-calc(300); + padding: rem-calc(10 16); +} +``` + +--- + +### More Resources + +- [WebAIM: Fonts](http://webaim.org/techniques/fonts/) +- [WebAIM: Links and HyperText](http://webaim.org/techniques/hypertext/) +- [WebAIM: Writing Clearly and Simply](http://webaim.org/techniques/semanticstructure/) +- [WebAIM: Color Contrast Checker](http://webaim.org/resources/contrastchecker/) + +--- + +## Print Styles + +Foundation includes print styles developed by HTML5 Boilerplate to give you some basic print-specific styles. These are activated when you print through a media query. It includes: + +- Clearing out backgrounds, box shadows and text shadows +- Appending link URLs after the anchor text +- Adding borders to `<blockquote>` and `<pre>` elements +- Page cleanup and window minimization + +On top of that, Foundation includes a couple of simple classes you can use to control elements printing, or not printing. Simply attach `.show-for-print` to an element to only show when printing, and `.hide-for-print` to hide something when printing. diff --git a/libraries/foundation-6/docs/pages/typography-helpers.md b/libraries/foundation-6/docs/pages/typography-helpers.md new file mode 100755 index 00000000..2e0d751a --- /dev/null +++ b/libraries/foundation-6/docs/pages/typography-helpers.md @@ -0,0 +1,92 @@ +--- +title: Typography Helpers +description: Our helper classes allow you to scaffold certain typographic styles faster. +sass: + - scss/typography/_helpers.scss + - scss/typography/_alignment.scss +tags: + - alignment + - subheader + - lead + - statistic +--- + +## Text Alignment + +You can change the text alignment of an element by adding `.text-left`, `.text-right`, `.text-center` or `.text-justify` to an element. + +Adding a breakpoint to the front of a text alignment class will cause it to only be applied on that size screen or larger. For example, `.medium-text-center` will keep text left-aligned on the smallest screens, but switch to center-aligned on medium screens and larger. + +```html +<p class="text-left"><!-- ... --></p> +<p class="text-right"><!-- ... --></p> +<p class="text-center"><!-- ... --></p> +<p class="text-justify"><!-- ... --></p> +``` + +<p class="text-left"><strong>This text is left-aligned.</strong> Set in the year 0 F.E. ("Foundation Era"), The Psychohistorians opens on Trantor, the capital of the 12,000-year-old Galactic Empire. Though the empire appears stable and powerful, it is slowly decaying in ways that parallel the decline of the Western Roman Empire.</p> + +<p class="text-right"><strong>This text is right-aligned.</strong> Set in the year 0 F.E. ("Foundation Era"), The Psychohistorians opens on Trantor, the capital of the 12,000-year-old Galactic Empire. Though the empire appears stable and powerful, it is slowly decaying in ways that parallel the decline of the Western Roman Empire.</p> + +<p class="text-center"><strong>This text is center-aligned.</strong> Set in the year 0 F.E. ("Foundation Era"), The Psychohistorians opens on Trantor, the capital of the 12,000-year-old Galactic Empire. Though the empire appears stable and powerful, it is slowly decaying in ways that parallel the decline of the Western Roman Empire.</p> + +<p class="text-justify"><strong>This text is justified.</strong> Set in the year 0 F.E. ("Foundation Era"), The Psychohistorians opens on Trantor, the capital of the 12,000-year-old Galactic Empire. Though the empire appears stable and powerful, it is slowly decaying in ways that parallel the decline of the Western Roman Empire.</p> + +--- + +## Subheader + +Lighten up your headers by adding a class of `.subheader` to any header element. + +```html_example +<h1 class="subheader">h1.subheader</h1> +<h2 class="subheader">h2.subheader</h2> +<h3 class="subheader">h3.subheader</h3> +<h4 class="subheader">h4.subheader</h4> +<h5 class="subheader">h5.subheader</h5> +<h6 class="subheader">h6.subheader</h6> +``` + +--- + +## Lead Paragraph + +A slightly-larger-than-normal block of text, useful for decks, blurbs, or other descriptive text. + +```html_example +<p class="lead">What are your cats <em>really</em> dreaming about while they sleep?</p> +``` + +--- + +## Un-bulleted List + +In Foundation, the `<ul>` is a bulleted list by default, but you can add the class `.no-bullet` to remove the bullets. + +```html_example +<ul class="no-bullet"> + <li>List item with a much longer description or more content.</li> + <li>List item</li> + <li>List item + <ul> + <li>Nested list item</li> + <li>Nested list item</li> + <li>Nested list item</li> + </ul> + </li> + <li>List item</li> + <li>List item</li> + <li>List item</li> +</ul> +``` + +--- + +## Statistics + +If you're building a dashboard, you might need to display some important numbers *real big*. Just add the `.stat` class to any element to amp up the font size. + +```html_example +<p>Days without merge conflict</p> +<div class="stat">128</div> +``` \ No newline at end of file diff --git a/libraries/foundation-6/docs/pages/visibility.md b/libraries/foundation-6/docs/pages/visibility.md new file mode 100755 index 00000000..a21eb0b0 --- /dev/null +++ b/libraries/foundation-6/docs/pages/visibility.md @@ -0,0 +1,128 @@ +--- +title: Visibility Classes +description: Visibility classes let you show or hide elements based on screen size or device orientation. You can also use visibility classes to control which elements users see depending on their browsing environment. +sass: scss/components/_visibility.scss +tags: + - hide + - show +--- + +<div class="callout primary"> + <p>Visibility classes use `!important` to ensure they aren't overriden by more specific selectors. This is the only component in the framework that uses `!important`.</p> +</div> + +<div class="callout primary"> + <p>There are no classes to detect touchscreen devices, as both desktop and mobile browsers inconsistently report touch support. Learn more here: <a href="http://www.stucox.com/blog/you-cant-detect-a-touchscreen/">You Can't Detect a Touchscreen</a></p> +</div> + +## Show by Screen Size + +In this example, we use the `.show` visibility classes to show certain strings of text based on the device on which users view a page. If their browser meets the class's conditions, the element will be shown. If not, it will be hidden. + +```html_example +<p>You are on a small screen or larger.</p> +<p class="show-for-medium">You are on a medium screen or larger.</p> +<p class="show-for-large">You are on a large screen or larger.</p> +``` + +These classes automatically hide the element on screen sizes *below* what's specified in the class. So `.show-for-medium` will hide the element on small, and show it on medium and larger. + +A separate set of classes allow you to show content *only* on a certain screen size. Just add `-only` to the end of the class. + +<div class="primary callout"> + <p>Don't see any text below the code sample? You must be on an *extra* large screen.</p> +</div> + +```html_example +<p class="show-for-small-only">You are <em>definitely</em> on a small screen.</p> +<p class="show-for-medium-only">You are <em>definitely</em> on a medium screen.</p> +<p class="show-for-large-only">You are <em>definitely</em> on a large screen.</p> +``` + +--- + +## Hide by Screen Size + +This example shows the opposite: It uses the `.hide` visibility classes to state which elements should disappear based on the device's screen size. + +<div class="primary callout"> + <p>There's no <code>.hide-for-small</code> class, because that would just permanently hide the element. For that, you can use the plain old <code>.hide</code> class instead.</p> +</div> + +```html_example +<p class="hide-for-medium">You are <em>not</em> on a medium screen or larger.</p> +<p class="hide-for-large">You are <em>not</em> on a large screen or larger.</p> +``` + +<p class="show-for-large">If you're reading this, you're on a large screen, and can't see either of the above examples.</p> + +Like with `.show`, these classes also have `-only` versions. + +```html_example +<p class="hide-for-small-only">You are <em>definitely not</em> on a small screen.</p> +<p class="hide-for-medium-only">You are <em>definitely not</em> on a medium screen.</p> +<p class="hide-for-large-only">You are <em>definitely not</em> on a large screen.</p> +``` + +### Generic Hide Classes + +And if you really just need something hidden no matter what, there are classes for that as well. The `.hide` and `.invisible` classes respectively set `display: none` and `visibility: hidden` on an element. Note that both of these classes hide content from screen readers. + +```html +<p class="hide">Can't touch this.</p> +<p class="invisible">Can sort of touch this.</p> +``` + +--- + +## Orientation Detection + +This straightforward example shows how two strings of text determine whether or not an element is visible in different orientations. This will change on mobile devices when you rotate the device. On desktop, the orientation is almost always reported as landscape. + +```html_example +<p class="show-for-landscape">You are in landscape orientation.</p> +<p class="show-for-portrait">You are in portrait orientation.</p> +``` + +--- + +## Accessibility + +Adding `display: none` to an element will prevent screen readers from reading it. However, there are techniques to hide content while still making it readable by screen readers. + +### Show for Screen Readers Only + +To visually hide content, while still allowing assistive technology to read it, add the class show-for-sr. + +```html_example +<p class="show-for-sr">This text can only be read by a screen reader.</p> +<p>There's a line of text above this one, you just can't see it.</p> +``` + +### Hide for Screen Readers Only + +To hide text from assistive technology, while still keeping it visible, add the attribute `aria-hidden="true"`. This doesn't affect how the element looks, but screen readers will skip over it. + +<div class="primary callout"> + <p>It's usually not a good idea to hide content from screen readers. <code>aria-hidden</code> is best used to mask purely visual elements of a page.</p> +</div> + +```html_example +<p aria-hidden="true">This text can be seen, but won't be read by a screen reader.</p> +``` + +### Creating Skip Links + +If your site has a lot of navigation, a screen reader will have to read through the entire navigation to get to your site's content. To remedy this, you can add a *skip link* at the very top of your page, which will send the user farther down the page, past the navigation when clicked on. + +Use the class `.show-on-focus` to hide an element, except when it has focus. Adding tabindex="0" to the target element makes if focusable. + +```html_example +<p><a class="show-on-focus" href="#mainContent">Skip to Content</a></p> + +<header id="header" role="banner"> +</header> + +<main id="mainContent" role="main" tabindex="0"> +</main> +``` diff --git a/libraries/foundation-6/docs/partials/component-list.html b/libraries/foundation-6/docs/partials/component-list.html new file mode 100755 index 00000000..c2ecb844 --- /dev/null +++ b/libraries/foundation-6/docs/partials/component-list.html @@ -0,0 +1,93 @@ +<ul class="vertical menu docs-nav" id="docs-menu"> + <p class="docs-nav-version"> + <span data-docs-version></span> + <a href="https://github.com/zurb/foundation-sites/releases/" target="_blank">(Changelog)</a> + </p> + + <li class="docs-nav-title">Getting Started</li> + <li{{#ifpage 'installation'}} class="current"{{/ifpage}}><a href="installation.html">Installation</a></li> + <li{{#ifpage 'starter-projects'}} class="current"{{/ifpage}}><a href="starter-projects.html">Starter Projects</a></li> + <li{{#ifpage 'compatibility'}} class="current"{{/ifpage}}><a href="compatibility.html">Compatibility</a></li> + <li{{#ifpage 'accessibility'}} class="current"{{/ifpage}}><a href="accessibility.html">Accessibility</a></li> + <li{{#ifpage 'kitchen-sink'}} class="current"{{/ifpage}}><a href="kitchen-sink.html">Kitchen Sink</a></li> + + <li class="docs-nav-title">Setup</li> + <li{{#ifpage 'global'}} class="current"{{/ifpage}}><a href="global.html">Global Styles</a></li> + <li{{#ifpage 'rtl'}} class="current"{{/ifpage}}><a href="rtl.html">Right-to-Left Support</a></li> + <li{{#ifpage 'flexbox'}} class="current"{{/ifpage}}><a href="flexbox.html">Flexbox</a></li> + <li{{#ifpage 'sass'}} class="current"{{/ifpage}}><a href="sass.html">Sass</a></li> + <li{{#ifpage 'javascript'}} class="current"{{/ifpage}}><a href="javascript.html">JavaScript</a></li> + <li{{#ifpage 'javascript-utilities'}} class="current"{{/ifpage}}><a href="javascript-utilities.html">JavaScript Utilities</a></li> + <li{{#ifpage 'media-queries'}} class="current"{{/ifpage}}><a href="media-queries.html">Media Queries</a></li> + + <li class="docs-nav-title">General</li> + <li{{#ifpage 'grid'}} class="current"{{/ifpage}}><a href="grid.html">Grid</a></li> + <li{{#ifpage 'flex-grid'}} class="current"{{/ifpage}}><a href="flex-grid.html">Flex Grid</a></li> + <li{{#ifpage 'forms'}} class="current"{{/ifpage}}><a href="forms.html">Forms</a></li> + <li{{#ifpage 'visibility'}} class="current"{{/ifpage}}><a href="visibility.html">Visibility Classes</a></li> + <li{{#ifpage 'float-classes'}} class="current"{{/ifpage}}><a href="float-classes.html">Float Classes</a></li> + + <li class="docs-nav-title">Typography</li> + <li{{#ifpage 'typography-base'}} class="current"{{/ifpage}}><a href="typography-base.html">Base Styles</a></li> + <li{{#ifpage 'typography-helpers'}} class="current"{{/ifpage}}><a href="typography-helpers.html">Helper Classes</a></li> + + <li class="docs-nav-title">Controls</li> + <li{{#ifpage 'button'}} class="current"{{/ifpage}}><a href="button.html">Button</a></li> + <li{{#ifpage 'button-group'}} class="current"{{/ifpage}}><a href="button-group.html">Button Group</a></li> + <li{{#ifpage 'close-button'}} class="current"{{/ifpage}}><a href="close-button.html">Close Button</a></li> + <li{{#ifpage 'slider'}} class="current"{{/ifpage}}><a href="slider.html">Slider <span class="label">JS</span></a></li> + <li{{#ifpage 'switch'}} class="current"{{/ifpage}}><a href="switch.html">Switch</a></li> + + <li class="docs-nav-title">Navigation</li> + <li{{#ifpage 'navigation'}} class="current"{{/ifpage}}><a href="navigation.html">Overview</a></li> + <li{{#ifpage 'menu'}} class="current"{{/ifpage}}><a href="menu.html">Menu</a></li> + <li{{#ifpage 'dropdown-menu'}} class="current"{{/ifpage}}><a href="dropdown-menu.html">Dropdown Menu <span class="label">JS</span></a></li> + <li{{#ifpage 'drilldown-menu'}} class="current"{{/ifpage}}><a href="drilldown-menu.html">Drilldown Menu <span class="label">JS</span></a></li> + <li{{#ifpage 'accordion-menu'}} class="current"{{/ifpage}}><a href="accordion-menu.html">Accordion Menu <span class="label">JS</span></a></li> + <li{{#ifpage 'top-bar'}} class="current"{{/ifpage}}><a href="top-bar.html">Top Bar</a></li> + <li{{#ifpage 'responsive-navigation'}} class="current"{{/ifpage}}><a href="responsive-navigation.html">Responsive Navigation</a></li> + <li{{#ifpage 'magellan'}} class="current"{{/ifpage}}><a href="magellan.html">Magellan <span class="label">JS</span></a></li> + <li{{#ifpage 'pagination'}} class="current"{{/ifpage}}><a href="pagination.html">Pagination</a></li> + <li{{#ifpage 'breadcrumbs'}} class="current"{{/ifpage}}><a href="breadcrumbs.html">Breadcrumbs</a></li> + + <li class="docs-nav-title">Containers</li> + <li{{#ifpage 'accordion'}} class="current"{{/ifpage}}><a href="accordion.html">Accordion <span class="label">JS</span></a></li> + <li{{#ifpage 'callout'}} class="current"{{/ifpage}}><a href="callout.html">Callout</a></li> + <li{{#ifpage 'dropdown'}} class="current"{{/ifpage}}><a href="dropdown.html">Dropdown <span class="label">JS</span></a></li> + <li{{#ifpage 'media-object'}} class="current"{{/ifpage}}><a href="media-object.html">Media Object</a></li> + <li{{#ifpage 'off-canvas'}} class="current"{{/ifpage}}><a href="off-canvas.html">Off-canvas <span class="label">JS</span></a></li> + <li{{#ifpage 'reveal'}} class="current"{{/ifpage}}><a href="reveal.html">Reveal <span class="label">JS</span> <small>Modal</small></a></li> + <li{{#ifpage 'table'}} class="current"{{/ifpage}}><a href="table.html">Table</a></li> + <li{{#ifpage 'tabs'}} class="current"{{/ifpage}}><a href="tabs.html">Tabs <span class="label">JS</span></a></li> + + <li class="docs-nav-title">Media</li> + <li{{#ifpage 'badge'}} class="current"{{/ifpage}}><a href="badge.html">Badge</a></li> + <li{{#ifpage 'flex-video'}} class="current"{{/ifpage}}><a href="flex-video.html">Flex Video</a></li> + <li{{#ifpage 'label'}} class="current"{{/ifpage}}><a href="label.html">Label</a></li> + <li{{#ifpage 'orbit'}} class="current"{{/ifpage}}><a href="orbit.html">Orbit <span class="label">JS</span> <small>Carousel</small></a></li> + <li{{#ifpage 'progress-bar'}} class="current"{{/ifpage}}><a href="progress-bar.html">Progress Bar</a></li> + <li{{#ifpage 'thumbnail'}} class="current"{{/ifpage}}><a href="thumbnail.html">Thumbnail</a></li> + <li{{#ifpage 'tooltip'}} class="current"{{/ifpage}}><a href="tooltip.html">Tooltip <span class="label">JS</span></a></li> + + <li class="docs-nav-title">Plugins</li> + <li{{#ifpage 'abide'}} class="current"{{/ifpage}}><a href="abide.html">Abide <small>Form Validation</small></a></li> + <li{{#ifpage 'equalizer'}} class="current"{{/ifpage}}><a href="equalizer.html">Equalizer <small>Column Alignment</small></a></li> + <li{{#ifpage 'interchange'}} class="current"{{/ifpage}}><a href="interchange.html">Interchange <small>Responsive Content</small></a></li> + <li{{#ifpage 'toggler'}} class="current"{{/ifpage}}><a href="toggler.html">Toggler <small>CSS Helper</small></a></li> + <li{{#ifpage 'sticky'}} class="current"{{/ifpage}}><a href="sticky.html">Sticky <small>Header/Sidebar</small></a></li> + + <li class="docs-nav-title">Sass</li> + <li{{#ifpage 'sass-functions'}} class="current"{{/ifpage}}><a href="sass-functions.html">Functions</a></li> + <li{{#ifpage 'sass-mixins'}} class="current"{{/ifpage}}><a href="sass-mixins.html">Mixins</a></li> + + <li class="docs-nav-title">Libraries</li> + <li{{#ifpage 'motion-ui'}} class="current"{{/ifpage}}><a href="motion-ui.html">Motion UI</a></li> + <li{{#ifpage 'panini'}} class="current"{{/ifpage}}><a href="panini.html">Panini</a></li> + <li{{#ifpage 'style-sherpa'}} class="current"{{/ifpage}}><a href="style-sherpa.html">Style Sherpa</a></li> + + <li class="docs-nav-title">Older Versions</li> + <li><a href="http://foundation.zurb.com/sites/docs/v/5.5.3/index.html">Foundation 5</a></li> + <li><a href="http://foundation.zurb.com/sites/docs/v/4.3.2/index.html">Foundation 4</a></li> + <li><a href="http://foundation.zurb.com/sites/docs/v/3.2.5/">Foundation 3</a></li> + <li><a href="http://foundation.zurb.com/sites/docs/v/2.2.1/">Foundation 2</a></li> +</ul> diff --git a/libraries/foundation-6/docs/partials/footer.html b/libraries/foundation-6/docs/partials/footer.html new file mode 100755 index 00000000..370610e2 --- /dev/null +++ b/libraries/foundation-6/docs/partials/footer.html @@ -0,0 +1,130 @@ +<!-- Small Business(Docs) --> +<section id="studiosCallout" class="foundation"> + <div class="row"> + <div class="large-4 medium-4 columns"> + <img src="http://foundation.zurb.com/assets/img/smallbiz-footer.svg" alt=""> + </div> + <div class="large-8 medium-8 columns banner-info"> + <div class="row column property-label">ZURB STUDIOS</div> + <h3 class="light">Let's build something amazing.</h3> + <p class="lead">Work with our scrappy design team to bring your concepts to life. We’ll equip you with our battle-tested Progressive Design process and the tools to get your product or website off the ground and in front of your users.</p> + <div class="course-buttons"> + <a href="http://zurb.com/studios/getstarted" class="button" data-zcom-event="studios_foundation_click" id="foundationSmallV1">Show Me How →</a> + </div> + </div> + </div> +</section> + +<div class="docs-newsletter"> + <div class="row"> + <div class="medium-8 columns"> + <h5>Stay on top of what’s happening in <a href="http://zurb.com/responsive">responsive design</a>.</h5> + <p>Sign up to receive monthly Responsive Reading highlights. <a href="http://zurb.com/responsive/reading">Read Last Month's Edition »</a></p> + </div> + <div class="medium-4 columns"> + <form action="http://zurb.createsend.com/t/y/s/vjtyhh/" method="post" id="subForm"> + <div class="row collapse margintop-20px"> + <div class="small-8 medium-8 columns"> + <input id="fieldEmail" name="cm-vjtyhh-vjtyhh" type="email" placeholder="signup@example.com"> + </div> + <div class="small-4 medium-4 columns"> + <input type="submit" href="#" class="postfix button" value="Sign Up"> + </div> + </div> + </form> + </div> + </div> +</div> + +<div class="zurb-footer-top bg-fblue"> + <div class="row property"> + <div class="medium-4 columns"> + <div class="property-info"> + <h3>Foundation for Sites</h3> + <p>Foundation is a responsive front-end framework made by <a href="http://zurb.com">ZURB</a>, a product design company in Campbell, CA. This framework is the result of building web products & services since 1998. + </p> + </div> + </div> + + <div class="medium-8 columns"> + <div class="row collapse"> + <div class="medium-4 columns"> + <div class="learn-links"> + <h4 class="hide-for-small">Want more?</h4> + <ul> + <li><a href="http://foundation.zurb.com/apps">Foundation for Apps</a></li> + <li><a href="http://zurb.com/ink/">Ink Responsive Emails</a></li> + <li><a href="http://zurb.com/notable">Notable Design Apps</a></li> + <li><a href="http://zurb.com/university/courses">Training</a></li> + <li><a href="http://zurb.com/library">Design Resources</a></li> + </ul> + </div> + </div> + <div class="medium-4 columns"> + <div class="support-links"> + <h4 class="hide-for-small">Talk to us</h4> + <p>Tweet us at <br> <a href="https://twitter.com/zurbfoundation">@ZURBfoundation</a></p> + <p><a href="http://foundation.zurb.com/business/business-support.html">Business Support</a></p> + <p>Or check our <a href="http://foundation.zurb.com/support/support.html">support page</a></p> + </div> + </div> + <div class="medium-4 columns"> + <div class="connect-links"> + <h4 class="hide-for-small">Stay Updated</h4> + <p>Keep up with the latest on Foundation. Find us on <a href="https://github.com/zurb/foundation">Github</a>.</p> + <a href="http://zurb.com/news" class="small button">Stay Connected</a> + </div> + </div> + </div> + </div> + </div> + <div class="row global"> + <div class="medium-3 small-6 columns"> + <a href="http://zurb.com/studios" class="footer-link-block services"> + <span class="title">Studios</span> + <span>Helping more than 200 startups succeed since 1998.</span> + </a> + </div> + <div class="medium-3 small-6 columns"> + <a href="http://foundation.zurb.com/" class="footer-link-block foundation"> + <span class="title">Foundation</span> + <span>The most advanced front-end framework in the world.</span> + </a> + </div> + <div class="medium-3 small-6 columns"> + <a href="http://zurb.com/notable" class="footer-link-block apps"> + <span class="title">Notable Design Apps</span> + <span>Prototype, iterate and collect feedback on your products.</span> + </a> + </div> + <div class="medium-3 small-6 columns"> + <a href="http://zurb.com/university" class="footer-link-block expo"> + <span class="title">University</span> + <span>Ideas, thoughts and design resources shared with you.</span> + </a> + </div> + </div> +</div> + +<div class="zurb-footer-bottom"> + <div class="row"> + <div class="medium-4 medium-push-8 columns"> + <ul class="home-social"> + <li><a href="http://www.twitter.com/ZURB" class="twitter"></a></li> + <li><a href="http://www.facebook.com/ZURB" class="facebook"></a></li> + <li><a href="http://zurb.com/contact" class="mail"></a></li> + </ul> + </div> + <div class="medium-8 medium-pull-4 columns"> + <a href="http://www.zurb.com" class="zurb-logo regular"></a> + <ul class="zurb-links"> + <li><a href="http://zurb.com/about">About</a></li> + <li><a href="http://zurb.com/blog">Blog</a></li> + <li><a href="http://zurb.com/news">News<span class="show-for-medium-up"> & Events</span></a></li> + <li><a href="http://zurb.com/contact">Contact</a></li> + <li><a href="http://zurb.com/sitemap">Sitemap</a></li> + </ul> + <p class="copyright">© 1998‐2015 ZURB, Inc. All rights reserved.</p> + </div> + </div> +</div> diff --git a/libraries/foundation-6/docs/partials/info-banner.html b/libraries/foundation-6/docs/partials/info-banner.html new file mode 100755 index 00000000..f7386c37 --- /dev/null +++ b/libraries/foundation-6/docs/partials/info-banner.html @@ -0,0 +1,6 @@ + <!-- Info Banner For Announcements or Links --> + <a href="https://github.com/zurb/foundation-emails/releases/tag/v2.0.0-rc.1" class="notice"> + <div class="info"> + <h5><strong>Foundation for Emails 2 Release Candidate<span class="hide-for-small-only"> is out now!</strong></span></h5> + </div> + </a> \ No newline at end of file diff --git a/libraries/foundation-6/docs/partials/mobile-navigation.html b/libraries/foundation-6/docs/partials/mobile-navigation.html new file mode 100755 index 00000000..39bea534 --- /dev/null +++ b/libraries/foundation-6/docs/partials/mobile-navigation.html @@ -0,0 +1,6 @@ +<div class="title-bar hide-for-medium"> + <div class="title-bar-left"> + <button class="menu-icon" type="button" data-open="offCanvasLeft"></button> + <span class="title-bar-title">Foundation</span> + </div> +</div> diff --git a/libraries/foundation-6/docs/partials/navigation.html b/libraries/foundation-6/docs/partials/navigation.html new file mode 100755 index 00000000..8e24c559 --- /dev/null +++ b/libraries/foundation-6/docs/partials/navigation.html @@ -0,0 +1,62 @@ +<nav class="marketing-topbar show-for-medium"> + + <ul class="menu"> + <li class="topbar-title"><a href="http://foundation.zurb.com/index.html"><img src="assets/img/logos/zurb-logo.svg" alt="ZURB"> Foundation</a></li> + </ul> + + <ul class="dropdown menu" data-dropdown-menu data-click-open="false"> + + <li> + <a href="http://foundation.zurb.com/learn/about.html">Learn</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="http://foundation.zurb.com/learn/about.html">About Foundation</a></li> + <li><a href="http://foundation.zurb.com/learn/tutorials.html">Tutorials</a></li> + <li><a href="http://foundation.zurb.com/learn/classes.html">Classes</a></li> + <li><a href="http://foundation.zurb.com/learn/case-studies.html">Case Studies</a></li> + <li><a href="http://foundation.zurb.com/learn/brands.html">Brands</a></li> + </ul> + </li> + + <li> + <a href="http://foundation.zurb.com/develop/getting-started.html">Develop</a> + <ul class="submenu menu vertical" data-submenu> + <li class="title">Frameworks</li> + <li><a href="http://foundation.zurb.com/sites.html">Foundation for Sites</a></li> + <li><a href="http://foundation.zurb.com/emails.html">Foundation for Email</a></li> + <li><a href="http://foundation.zurb.com/apps.html">Foundation for Apps</a></li> + <li class="divider"></li> + <li class="title">Develop</li> + <li><a href="http://foundation.zurb.com/templates.html">HTML Templates</a></li> + <li><a href="http://foundation.zurb.com/sites/resources.html">Resources</a></li> + <li><a href="http://foundation.zurb.com/develop/building-blocks.html">Building Blocks</a></li> + <li><a href="http://foundation.zurb.com/develop/yeti-launch.html">Yeti Launch</a></li> + <li><a href="http://foundation.zurb.com/develop/contribute.html">Contribute</a></li> + </ul> + </li> + + <li><a href="http://foundation.zurb.com/upload.html">Upload</a></li> + + <li> + <a href="http://foundation.zurb.com/support/support.html">Support</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="http://foundation.zurb.com/support/support.html">Support Channels</a></li> + <li><a href="http://foundation.zurb.com/support/premium-support.html">Premium Support</a></li> + <li><a href="http://foundation.zurb.com/forum/">Foundation Forum</a></li> + <li><a href="http://foundation.zurb.com/support/faq.html">FAQs</a></li> + </ul> + </li> + + <li> + <a href="http://foundation.zurb.com/frameworks-docs.html">Docs</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="http://foundation.zurb.com/docs/" target="_blank">Sites Docs</a></li> + <li><a href="http://foundation.zurb.com/apps/docs/#!/" target="_blank">Apps Docs</a></li> + <li><a href="http://foundation.zurb.com/emails/docs/" target="_blank">Email Docs</a></li> + </ul> + </li> + + <li><a href="http://foundation.zurb.com/develop/getting-started.html" class="button">Getting Started</a></li> + + </ul> + +</nav> diff --git a/libraries/foundation-6/docs/partials/off-canvi.html b/libraries/foundation-6/docs/partials/off-canvi.html new file mode 100755 index 00000000..14107e32 --- /dev/null +++ b/libraries/foundation-6/docs/partials/off-canvi.html @@ -0,0 +1,73 @@ +<div class="off-canvas position-left" id="offCanvasLeft" data-off-canvas data-position="left"> + <button class="close-button" aria-label="Close menu" type="button" data-close> + <span aria-hidden="true">×</span> + </button> + <ul class="mobile-ofc vertical menu"> + + <li> + <a href="http://foundation.zurb.com/learn/about.html">Learn</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="http://foundation.zurb.com/learn/about.html">About Foundation</a></li> + <li><a href="http://foundation.zurb.com/learn/tutorials.html">Tutorials</a></li> + <li><a href="http://foundation.zurb.com/learn/classes.html">Classes</a></li> + <li><a href="http://foundation.zurb.com/learn/case-studies.html">Case Studies</a></li> + <li><a href="http://foundation.zurb.com/learn/brands.html">Brands</a></li> + </ul> + </li> + + <li> + <a href="http://foundation.zurb.com/develop/getting-started.html">Develop</a> + <ul class="submenu menu vertical" data-submenu> + <li class="title">Frameworks</li> + <li><a href="http://foundation.zurb.com/sites.html">Foundation for Sites</a></li> + <li><a href="http://foundation.zurb.com/emails.html">Foundation for Email</a></li> + <li><a href="http://foundation.zurb.com/apps.html">Foundation for Apps</a></li> + <li class="divider"></li> + <li class="title">Develop</li> + <li><a href="http://foundation.zurb.com/templates.html">HTML Templates</a></li> + <li><a href="http://foundation.zurb.com/sites/resources.html">Resources</a></li> + <li><a href="http://foundation.zurb.com/develop/building-blocks.html">Building Blocks</a></li> + <li><a href="http://foundation.zurb.com/develop/yeti-launch.html">Yeti Launch</a></li> + <li><a href="http://foundation.zurb.com/develop/contribute.html">Contribute</a></li> + </ul> + </li> + + <li><a href="http://foundation.zurb.com/upload.html">Upload</a></li> + + <li> + <a href="http://foundation.zurb.com/support/support.html">Support</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="http://foundation.zurb.com/support/support.html">Support Channels</a></li> + <li><a href="http://foundation.zurb.com/support/premium-support.html">Premium Support</a></li> + <li><a href="http://foundation.zurb.com/forum/sort/unanswered">Foundation Forum</a></li> + <li><a href="http://foundation.zurb.com/support/faq.html">FAQs</a></li> + </ul> + </li> + + <li> + <a href="http://foundation.zurb.com/frameworks-docs.html">Docs</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="http://foundation.zurb.com/docs/" target="_blank">Sites Docs</a></li> + <li><a href="http://foundation.zurb.com/apps/docs/#!/" target="_blank">Apps Docs</a></li> + <li><a href="http://zurb.com/ink/docs.php" target="_blank">Email Docs</a></li> + </ul> + </li> + + <li><a href="http://foundation.zurb.com/develop/getting-started.html" class="button">Getting Started</a></li> + + </ul> +</div> + +<div class="off-canvas position-right" id="offCanvasRight" data-off-canvas data-position="right"> + <button class="close-button" aria-label="Close menu" type="button" data-close> + <span aria-hidden="true">×</span> + </button> + <ul class="vertical menu"> + <li><a href="#">Foundation</a></li> + <li><a href="#">Dot</a></li> + <li><a href="#">ZURB</a></li> + <li><a href="#">Com</a></li> + <li><a href="#">Slash</a></li> + <li><a href="#">Sites</a></li> + </ul> +</div> diff --git a/libraries/foundation-6/docs/search.yml b/libraries/foundation-6/docs/search.yml new file mode 100755 index 00000000..669596d6 --- /dev/null +++ b/libraries/foundation-6/docs/search.yml @@ -0,0 +1,33 @@ +# These are search results that lead to the old versions of Foundation. +- + type: old version + name: Foundation 2 + description: Documentation for Foundation 2.2.1 + link: 'http://foundation.zurb.com/sites/docs/v/2.2.1/' + tags: + - old + - previous +- + type: old version + name: Foundation 3 + description: Documentation for Foundation 3.2.5 + link: 'http://foundation.zurb.com/sites/docs/v/3.2.5/' + tags: + - old + - previous +- + type: old version + name: Foundation 4 + description: Documentation for Foundation 4.3.2 + link: 'http://foundation.zurb.com/sites/docs/v/4.3.2/index.html' + tags: + - old + - previous +- + type: old version + name: Foundation 5 + description: Documentation for Foundation 5.5.3 + link: 'http://foundation.zurb.com/sites/docs/v/5.5.3/index.html' + tags: + - old + - previous diff --git a/libraries/foundation-6/docslink.sh b/libraries/foundation-6/docslink.sh new file mode 100755 index 00000000..5b69e158 --- /dev/null +++ b/libraries/foundation-6/docslink.sh @@ -0,0 +1,3 @@ +# Clones the foundation-docs repo and links it to NPM locally +git clone https://github.com/zurb/foundation-docs +npm link ./foundation-docs diff --git a/libraries/foundation-6/gulp/babel-error.js b/libraries/foundation-6/gulp/babel-error.js new file mode 100755 index 00000000..9e0a3f0f --- /dev/null +++ b/libraries/foundation-6/gulp/babel-error.js @@ -0,0 +1,16 @@ +var chalk = require('chalk'); + +module.exports = function(err) { + console.log( + chalk.red( + err.fileName + + ( + err.loc ? + '(' + err.loc.line + ',' + err.loc.column + '): ' : + ': ' + ) + ) + + 'error Babel: ' + err.message + '\n' + + err.codeFrame + ); +} \ No newline at end of file diff --git a/libraries/foundation-6/gulp/clean.js b/libraries/foundation-6/gulp/clean.js new file mode 100755 index 00000000..7eaaaacd --- /dev/null +++ b/libraries/foundation-6/gulp/clean.js @@ -0,0 +1,7 @@ +var gulp = require('gulp'); +var rimraf = require('rimraf').sync; + +// Erases the dist folder +gulp.task('clean', function() { + rimraf('_build'); +}); diff --git a/libraries/foundation-6/gulp/copy.js b/libraries/foundation-6/gulp/copy.js new file mode 100755 index 00000000..2cbfb8cf --- /dev/null +++ b/libraries/foundation-6/gulp/copy.js @@ -0,0 +1,13 @@ +var gulp = require('gulp'); + +var FILES = [ + 'docs/assets/**/*', + '!docs/assets/{js,scss}', + '!docs/assets/{js,scss}/**/*' +]; + +// Copies static assets +gulp.task('copy', function() { + gulp.src(FILES) + .pipe(gulp.dest('_build/assets')); +}); diff --git a/libraries/foundation-6/gulp/customizer.js b/libraries/foundation-6/gulp/customizer.js new file mode 100755 index 00000000..9d455cf6 --- /dev/null +++ b/libraries/foundation-6/gulp/customizer.js @@ -0,0 +1,124 @@ +var addSrc = require('gulp-add-src'); +var babel = require('gulp-babel'); +var concat = require('gulp-concat'); +var cssnano = require('gulp-cssnano'); +var customizer = require('../customizer/lib'); +var File = require('vinyl'); +var fs = require('fs'); +var gulp = require('gulp'); +var If = require('gulp-if'); +var path = require('path'); +var Readable = require('stream').Readable; +var replace = require('gulp-replace'); +var rename = require('gulp-rename'); +var rimraf = require('rimraf'); +var sass = require('gulp-sass'); +var autoprefixer = require('gulp-autoprefixer'); +var source = require('vinyl-source-stream'); +var touch = require('touch'); +var uglify = require('gulp-uglify'); +var yaml = require('js-yaml').safeLoad; +var yargs = require('yargs'); +var zip = require('gulp-zip'); + +var ARGS = require('yargs').argv; +var FOUNDATION_VERSION = require('../package.json').version; +var OUTPUT_DIR = ARGS.output || 'custom-build'; +var COMPATIBILITY = [ + 'last 2 versions', + 'ie >= 9', + 'and_chr >= 2.3' +]; +var CUSTOMIZER_CONFIG; +var MODULE_LIST; +var VARIABLE_LIST; + +// Load the configuration file for the customizer. It's a list of modules to load and Sass variables to override +gulp.task('customizer:loadConfig', function(done) { + fs.readFile('customizer/config.yml', function(err, data) { + var moduleListPath = ARGS.modules || '../customizer/complete'; + var moduleList = require(moduleListPath); + + CUSTOMIZER_CONFIG = yaml(data.toString()); + MODULE_LIST = moduleList.modules; + VARIABLE_LIST = moduleList.variables || {}; + done(); + }); +}); + +// Creates a Sass file from the module/variable list and creates foundation.css and foundation.min.css +gulp.task('customizer:sass', ['customizer:loadConfig'], function() { + var sassFile = customizer.sass(CUSTOMIZER_CONFIG, MODULE_LIST, VARIABLE_LIST); + + // Create a stream with our makeshift Sass file + var stream = new Readable({ objectMode: true }); + stream._read = function() {}; + stream.push(new File({ + path: 'foundation.scss', + contents: new Buffer(sassFile) + })); + stream.push(null); + + return stream + .pipe(sass({ + includePaths: [ + 'scss', + 'node_modules/motion-ui/src' + ] + })) + .pipe(autoprefixer({ + browsers: COMPATIBILITY + })) + .pipe(gulp.dest(path.join(OUTPUT_DIR, 'css'))) + .pipe(cssnano()) + .pipe(rename('foundation.min.css')) + .pipe(gulp.dest(path.join(OUTPUT_DIR, 'css'))); +}); + +// Creates a Foundation JavaScript file from the module list, and also copies dependencies (jQuery, what-input) +gulp.task('customizer:javascript', ['customizer:loadConfig'], function() { + var jsPaths = customizer.js(CUSTOMIZER_CONFIG, MODULE_LIST); + + return gulp.src(jsPaths) + .pipe(babel()) + .pipe(concat('foundation.js')) + .pipe(gulp.dest(path.join(OUTPUT_DIR, 'js/vendor'))) + .pipe(uglify()) + .pipe(rename('foundation.min.js')) + .pipe(addSrc([ + 'node_modules/jquery/dist/jquery.js', + 'node_modules/what-input/what-input.js' + ])) + .pipe(gulp.dest(path.join(OUTPUT_DIR, 'js/vendor'))); +}); + +// Copies the boilerplate index.html to the custom download folder +gulp.task('customizer:html', ['customizer:loadConfig'], function() { + var rtlEnabled = VARIABLE_LIST['global-text-direction'] && VARIABLE_LIST['global-text-direction'] === 'rtl'; + + return gulp.src('customizer/index.html') + .pipe(If(rtlEnabled, replace('ltr', 'rtl'))) + .pipe(gulp.dest(OUTPUT_DIR)); +}); + +// Creates a custom build by: +// - Generating a CSS file +// - Generating a JS file +// - Copying the index.html file +// - Creating a blank app.css file +// - Creating an app.js file with Foundation initialization code +gulp.task('customizer', ['customizer:sass', 'customizer:javascript', 'customizer:html'], function(done) { + var outputFolder = path.dirname(OUTPUT_DIR); + var outputFileName = path.basename(OUTPUT_DIR); + + touch(path.join(OUTPUT_DIR, 'css/app.css')); + touch(path.join(OUTPUT_DIR, 'js/app.js')); + fs.writeFileSync(path.join(OUTPUT_DIR, 'js/app.js'), '$(document).foundation()\n'); + + gulp.src(path.join(OUTPUT_DIR, '/**/*')) + .pipe(zip(path.basename(outputFileName) + '.zip')) + .pipe(gulp.dest(outputFolder)) + .on('finish', function() { + rimraf(OUTPUT_DIR, done); + }); +}); diff --git a/libraries/foundation-6/gulp/deploy.js b/libraries/foundation-6/gulp/deploy.js new file mode 100755 index 00000000..ef0c296c --- /dev/null +++ b/libraries/foundation-6/gulp/deploy.js @@ -0,0 +1,164 @@ +var gulp = require('gulp'); +var filter = require('gulp-filter'); +var cssnano = require('gulp-cssnano'); +var rename = require('gulp-rename'); +var uglify = require('gulp-uglify'); +var confirm = require('gulp-prompt').confirm; +var prompt = require('gulp-prompt').prompt; +var rsync = require('gulp-rsync'); +var replace = require('gulp-replace'); +var octophant = require('octophant'); +var sequence = require('run-sequence'); +var inquirer = require('inquirer'); +var exec = require('child_process').execSync; +var plumber = require('gulp-plumber'); + +var VERSIONED_FILES = [ + 'bower.json', + 'composer.json', + 'docs/pages/installation.md', + 'js/foundation.core.js', + 'meteor-README.md', + 'package.js', + 'package.json', + 'scss/foundation.scss' +]; + +var DIST_FILES = [ + './_build/assets/css/foundation.css', + './_build/assets/css/foundation-flex.css', + './_build/assets/css/foundation-rtl.css', + '_build/assets/js/foundation.js' +]; + +var CURRENT_VERSION = require('../package.json').version; +var NEXT_VERSION; + +gulp.task('deploy', function(cb) { + sequence('deploy:prompt', 'deploy:version', 'deploy:dist', 'deploy:plugins', 'deploy:settings', 'deploy:commit', 'deploy:templates', cb); +}); + +gulp.task('deploy:prep', function(cb) { + sequence('deploy:prompt', 'deploy:version', 'deploy:dist', 'deploy:plugins', 'deploy:settings', cb); +}); + + +gulp.task('deploy:prompt', function(cb) { + inquirer.prompt([{ + type: 'input', + name: 'version', + message: 'What version are we moving to? (Current version is ' + CURRENT_VERSION + ')' + }], function(res) { + NEXT_VERSION = res.version; + cb(); + }); +}); + +// Bumps the version number in any file that has one +gulp.task('deploy:version', function() { + return gulp.src(VERSIONED_FILES, { base: process.cwd() }) + .pipe(replace(CURRENT_VERSION, NEXT_VERSION)) + .pipe(gulp.dest('.')); +}); + +// Generates compiled CSS and JS files and puts them in the dist/ folder +gulp.task('deploy:dist', ['sass:foundation', 'javascript:foundation'], function() { + var cssFilter = filter(['*.css'], { restore: true }); + var jsFilter = filter(['*.js'], { restore: true }); + + return gulp.src(DIST_FILES) + .pipe(plumber()) + .pipe(cssFilter) + .pipe(gulp.dest('./dist')) + .pipe(cssnano()) + .pipe(rename({ suffix: '.min' })) + .pipe(gulp.dest('./dist')) + .pipe(cssFilter.restore) + .pipe(jsFilter) + .pipe(gulp.dest('./dist')) + .pipe(uglify()) + .pipe(rename({ suffix: '.min' })) + .pipe(gulp.dest('./dist')); +}); + +// Copies standalone JavaScript plugins to dist/ folder +gulp.task('deploy:plugins', function() { + gulp.src('_build/assets/js/plugins/*.js') + .pipe(gulp.dest('dist/plugins')); +}); + +// Generates a settings file +gulp.task('deploy:settings', function(cb) { + var options = { + title: 'Foundation for Sites Settings', + output: './scss/settings/_settings.scss', + groups: { + 'grid': 'The Grid', + 'off-canvas': 'Off-canvas', + 'typography-base': 'Base Typography' + }, + sort: [ + 'global', + 'breakpoints', + 'grid', + 'typography-base', + 'typography-helpers' + ], + imports: ['util/util'], + _foundationShim: true + } + + octophant('./scss', options, cb); +}); + +// Writes a commit with the changes to the version numbers +gulp.task('deploy:commit', function(cb) { + exec('git commit -am "Bump to version "' + NEXT_VERSION); + exec('git tag v' + NEXT_VERSION); + exec('git push origin develop --follow-tags'); + cb(); +}); + +// Uploads the documentation to the live server +gulp.task('deploy:docs', ['build'], function() { + return gulp.src('./_build/**') + .pipe(confirm('Make sure everything looks right before you deploy.')) + .pipe(rsync({ + root: './_build', + hostname: 'deployer@72.32.134.77', + destination: '/home/deployer/sites/foundation-sites-6-docs' + })); +}); + +// This part of the deploy process hasn't been tested! It should be done manually for now +gulp.task('deploy:templates', function(done) { + // exec('git clone https://github.com/zurb/foundation-sites-template'); + // exec('cp scss/settings/_settings.scss foundation-sites-template/scss/_settings.scss'); + // exec('cd foundation-sites-template'); + // exec('git commit -am "Update settings file to match Foundation "' + NEXT_VERSION); + // exec('git push origin master'); + // exec('cd ..'); + // exec('rm -rf foundation-sites-template'); + // + // exec('git clone https://github.com/zurb/foundation-zurb-template'); + // exec('cp scss/settings/_settings.scss foundation-zurb-template/src/assets/scss/_settings.scss'); + // exec('cd foundation-zurb-template'); + // exec('git commit -am "Update settings file to match Foundation "' + NEXT_VERSION); + // exec('git push origin master'); + // exec('cd ..'); + // exec('rm -rf foundation-zurb-template'); + done(); +}); + +// The Customizer runs this function to generate files it needs +gulp.task('deploy:custom', ['sass:foundation', 'javascript:foundation'], function() { + gulp.src('./_build/assets/css/foundation.css') + .pipe(cssnano()) + .pipe(rename('foundation.min.css')) + .pipe(gulp.dest('./_build/assets/css')); + + return gulp.src('_build/assets/js/foundation.js') + .pipe(uglify()) + .pipe(rename('foundation.min.js')) + .pipe(gulp.dest('./_build/assets/js')); +}); diff --git a/libraries/foundation-6/gulp/docs.js b/libraries/foundation-6/gulp/docs.js new file mode 100755 index 00000000..7db0efcc --- /dev/null +++ b/libraries/foundation-6/gulp/docs.js @@ -0,0 +1,76 @@ +var cacheBust = require('gulp-cache-bust'); +var foundationDocs = require('foundation-docs'); +var gulp = require('gulp'); +var newer = require('gulp-newer'); +var panini = require('panini'); +var supercollider = require('supercollider'); + +var PANINI_CONFIG = { + root: 'docs/pages/', + layouts: 'docs/layout/', + partials: 'docs/partials/', + helpers: foundationDocs.handlebarsHelpers, +} + +var SEARCH_SORT_ORDER = ['page', 'component', 'sass variable', 'sass mixin', 'sass function', 'js class', 'js function', 'js plugin option', 'js event']; + +var SEARCH_PAGE_TYPES = { + 'library': function(item) { + return !!(item.library); + } +} + +supercollider + .config({ + template: foundationDocs.componentTemplate, + marked: foundationDocs.marked, + handlebars: foundationDocs.handlebars, + keepFm: true, + quiet: false, + pageRoot: 'docs/pages', + data: { + repoName: 'foundation-sites', + editBranch: 'master' + } + }) + .searchConfig({ + extra: 'docs/search.yml', + sort: SEARCH_SORT_ORDER, + pageTypes: SEARCH_PAGE_TYPES + }) + .adapter('sass') + .adapter('js'); + +// Assembles the layout, pages, and partials in the docs folder +gulp.task('docs', function() { + return gulp.src('docs/pages/**/*') + .pipe(newer({ + dest: '_build', + ext: '.html' + })) + .pipe(supercollider.init()) + .pipe(panini(PANINI_CONFIG)) + .pipe(cacheBust()) + .pipe(gulp.dest('_build')) + .on('finish', buildSearch); +}); + +gulp.task('docs:all', function() { + panini.refresh(); + + return gulp.src('docs/pages/**/*') + .pipe(supercollider.init()) + .pipe(panini(PANINI_CONFIG)) + .pipe(cacheBust()) + .pipe(gulp.dest('_build')) + .on('finish', buildSearch); +}); + +function buildSearch() { + supercollider.buildSearch('_build/data/search.json', function() {}); +} + +gulp.task('docs:debug', ['docs:all'], function(cb) { + var output = JSON.stringify(supercollider.tree, null, ' '); + require('fs').writeFile('./_debug.json', output, cb); +}); diff --git a/libraries/foundation-6/gulp/javascript.js b/libraries/foundation-6/gulp/javascript.js new file mode 100755 index 00000000..51e08915 --- /dev/null +++ b/libraries/foundation-6/gulp/javascript.js @@ -0,0 +1,48 @@ +var gulp = require('gulp'); +var concat = require('gulp-concat'); +var babel = require('gulp-babel'); +var onBabelError = require('./babel-error.js'); + +var FOUNDATION = [ + 'js/foundation.core.js', + 'js/foundation.util.*.js', + 'js/*.js' +]; + +var DEPS = [ + 'node_modules/jquery/dist/jquery.js', + 'node_modules/motion-ui/dist/motion-ui.js', + 'node_modules/what-input/what-input.js' +]; + +var DOCS = [ + 'node_modules/clipboard/dist/clipboard.js', + 'node_modules/corejs-typeahead/dist/typeahead.bundle.js', + 'node_modules/foundation-docs/js/**/*.js', + 'docs/assets/js/docs.*.js', + 'docs/assets/js/docs.js' +]; + +// Compiles JavaScript into a single file +gulp.task('javascript', ['javascript:foundation', 'javascript:deps', 'javascript:docs']); + +gulp.task('javascript:foundation', function() { + return gulp.src(FOUNDATION) + .pipe(babel() + .on('error', onBabelError)) + .pipe(gulp.dest('_build/assets/js/plugins')) + .pipe(concat('foundation.js')) + .pipe(gulp.dest('_build/assets/js')); +}); + +gulp.task('javascript:deps', function() { + return gulp.src(DEPS) + .pipe(concat('vendor.js')) + .pipe(gulp.dest('_build/assets/js')); +}); + +gulp.task('javascript:docs', function() { + return gulp.src(DOCS) + .pipe(concat('docs.js')) + .pipe(gulp.dest('_build/assets/js')); +}); diff --git a/libraries/foundation-6/gulp/lint.js b/libraries/foundation-6/gulp/lint.js new file mode 100755 index 00000000..b1a817ff --- /dev/null +++ b/libraries/foundation-6/gulp/lint.js @@ -0,0 +1,27 @@ +var gulp = require('gulp'); +var scssLint = require('gulp-scss-lint'); +var eslint = require('gulp-eslint'); + +var PATHS = [ + 'scss/**/*.scss', + '!scss/vendor/**/*.scss', + '!scss/components_old/**/*.scss' +]; + +// Lints Sass and JavaScript files for formatting issues +gulp.task('lint', ['lint:sass', 'lint:javascript']); + +gulp.task('lint:sass', function() { + return gulp.src(PATHS) + .pipe(scssLint()); +}); + +gulp.task('lint:javascript', function () { + return gulp.src(['js/*.js']) + .pipe(eslint({ + useEslintrc: true, + configFile: '.eslintrc' + })) + .pipe(eslint.format()) + .pipe(eslint.failAfterError()); +}); diff --git a/libraries/foundation-6/gulp/sass.js b/libraries/foundation-6/gulp/sass.js new file mode 100755 index 00000000..6443c050 --- /dev/null +++ b/libraries/foundation-6/gulp/sass.js @@ -0,0 +1,71 @@ +'use strict'; + +var fs = require('fs'); +var gulp = require('gulp'); +var Parker = require('parker/lib/Parker'); +var prettyJSON = require('prettyjson'); +var sass = require('gulp-sass'); +var autoprefixer = require('gulp-autoprefixer'); +var plumber = require('gulp-plumber'); +var sourcemaps = require('gulp-sourcemaps'); +var scssLint = require('gulp-scss-lint'); + +var PATHS = [ + 'scss', + 'node_modules/motion-ui/src', + 'node_modules/foundation-docs/scss' +]; + +var LINT_PATHS = [ + 'scss/**/*.scss', + '!scss/vendor/**/*.scss' +]; + +var COMPATIBILITY = [ + 'last 2 versions', + 'ie >= 9', + 'Android >= 2.3' +]; + +// Compiles Sass files into CSS +gulp.task('sass', ['sass:foundation', 'sass:docs']); + +// Compiles Foundation Sass +gulp.task('sass:foundation', function() { + return gulp.src(['assets/*']) + .pipe(sourcemaps.init()) + .pipe(plumber()) + .pipe(sass().on('error', sass.logError)) + .pipe(autoprefixer({ + browsers: COMPATIBILITY + })) + .pipe(sourcemaps.write('.')) + .pipe(gulp.dest('_build/assets/css')) + .on('finish', function() { + gulp.src(LINT_PATHS).pipe(scssLint()) + }); +}); + +// Compiles docs Sass (includes Foundation code also) +gulp.task('sass:docs', function() { + return gulp.src('docs/assets/scss/docs.scss') + .pipe(sourcemaps.init()) + .pipe(sass({ + includePaths: PATHS + }).on('error', sass.logError)) + .pipe(autoprefixer({ + browsers: COMPATIBILITY + })) + .pipe(sourcemaps.write('.')) + .pipe(gulp.dest('_build/assets/css')); +}); + +// Audits CSS filesize, selector count, specificity, etc. +gulp.task('sass:audit', ['sass:foundation'], function(cb) { + fs.readFile('./_build/assets/css/foundation.css', function(err, data) { + var parker = new Parker(require('parker/metrics/All')); + var results = parker.run(data.toString()); + console.log(prettyJSON.render(results)); + cb(); + }); +}); diff --git a/libraries/foundation-6/gulp/test.js b/libraries/foundation-6/gulp/test.js new file mode 100755 index 00000000..ef1738aa --- /dev/null +++ b/libraries/foundation-6/gulp/test.js @@ -0,0 +1,43 @@ +var gulp = require('gulp'); +var opener = require('opener'); +var mocha = require('gulp-mocha'); +var browser = require('browser-sync'); +var concat = require('gulp-concat'); +var babel = require('gulp-babel'); +var onBabelError = require('./babel-error.js'); +var rimraf = require('rimraf').sync; + +var JSTESTS = [ + 'test/javascript/components/**/*.js', + 'test/javascript/util/**/*.js' +]; + +// Runs unit tests +gulp.task('test', ['sass:foundation', 'test:transpile-js', 'watch'], function() { + browser.init({ + server: { + baseDir: 'test/visual', + directory: true, + routes: { + "/assets": "_build/assets", + "/motion-ui": "node_modules/motion-ui" + } + } + }); + gulp.watch(['test/visual/**/*'], ['test:reload']); +}); + +gulp.task('test:reload', function(done) { + browser.reload(); + done(); +}); + +gulp.task('test:transpile-js', ['javascript:foundation', 'javascript:deps'], function() { + rimraf('test/javascript/js-tests.js'); + + return gulp.src(JSTESTS) + .pipe(babel() + .on('error', onBabelError)) + .pipe(concat('js-tests.js')) + .pipe(gulp.dest('test/javascript')); +}); diff --git a/libraries/foundation-6/gulpfile.js b/libraries/foundation-6/gulpfile.js new file mode 100755 index 00000000..f090b5a1 --- /dev/null +++ b/libraries/foundation-6/gulpfile.js @@ -0,0 +1,27 @@ +var gulp = require('gulp'); +var browser = require('browser-sync'); +var requireDir = require('require-dir'); +var port = process.env.SERVER_PORT || 3000; + +requireDir('./gulp'); + +// Builds the documentation and framework files +gulp.task('build', ['clean', 'copy', 'docs:all', 'sass', 'javascript']); + +// Starts a BrowerSync instance +gulp.task('serve', ['build'], function(){ + browser.init({server: './_build', port: port}); +}); + +// Watch files for changes +gulp.task('watch', function() { + gulp.watch('docs/**/*', ['docs', browser.reload]); + gulp.watch(['docs/layout/*.html', 'docs/partials/*.html', 'docs/assets/partials/*.html'], ['docs:all', browser.reload]); + gulp.watch('scss/**/*', ['sass', browser.reload]); + gulp.watch(['docs/assets/scss/**/*', 'foundation-docs/scss/**/*'], ['sass:docs', browser.reload]); + gulp.watch('js/**/*', ['javascript:foundation', browser.reload]); + gulp.watch('docs/assets/js/**/*', ['javascript:docs', browser.reload]); +}); + +// Runs all of the above tasks and then waits for files to change +gulp.task('default', ['serve', 'watch']); diff --git a/libraries/foundation-6/js/app.js b/libraries/foundation-6/js/app.js deleted file mode 100644 index 5b80fd13..00000000 --- a/libraries/foundation-6/js/app.js +++ /dev/null @@ -1 +0,0 @@ -$(document).foundation() diff --git a/libraries/foundation-6/js/foundation.abide.js b/libraries/foundation-6/js/foundation.abide.js new file mode 100755 index 00000000..5c8750da --- /dev/null +++ b/libraries/foundation-6/js/foundation.abide.js @@ -0,0 +1,543 @@ +'use strict'; + +!function($) { + +/** + * Abide module. + * @module foundation.abide + */ + +class Abide { + /** + * Creates a new instance of Abide. + * @class + * @fires Abide#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options = {}) { + this.$element = element; + this.options = $.extend({}, Abide.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Abide'); + } + + /** + * Initializes the Abide plugin and calls functions to get Abide functioning on load. + * @private + */ + _init() { + this.$inputs = this.$element.find('input, textarea, select'); + + this._events(); + } + + /** + * Initializes events for Abide. + * @private + */ + _events() { + this.$element.off('.abide') + .on('reset.zf.abide', () => { + this.resetForm(); + }) + .on('submit.zf.abide', () => { + return this.validateForm(); + }); + + if (this.options.validateOn === 'fieldChange') { + this.$inputs + .off('change.zf.abide') + .on('change.zf.abide', (e) => { + this.validateInput($(e.target)); + }); + } + + if (this.options.liveValidate) { + this.$inputs + .off('input.zf.abide') + .on('input.zf.abide', (e) => { + this.validateInput($(e.target)); + }); + } + } + + /** + * Calls necessary functions to update Abide upon DOM change + * @private + */ + _reflow() { + this._init(); + } + + /** + * Checks whether or not a form element has the required attribute and if it's checked or not + * @param {Object} element - jQuery object to check for required attribute + * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty + */ + requiredCheck($el) { + if (!$el.attr('required')) return true; + + var isGood = true; + + switch ($el[0].type) { + case 'checkbox': + isGood = $el[0].checked; + break; + + case 'select': + case 'select-one': + case 'select-multiple': + var opt = $el.find('option:selected'); + if (!opt.length || !opt.val()) isGood = false; + break; + + default: + if(!$el.val() || !$el.val().length) isGood = false; + } + + return isGood; + } + + /** + * Based on $el, get the first element with selector in this order: + * 1. The element's direct sibling('s). + * 3. The element's parent's children. + * + * This allows for multiple form errors per input, though if none are found, no form errors will be shown. + * + * @param {Object} $el - jQuery object to use as reference to find the form error selector. + * @returns {Object} jQuery object with the selector. + */ + findFormError($el) { + var $error = $el.siblings(this.options.formErrorSelector); + + if (!$error.length) { + $error = $el.parent().find(this.options.formErrorSelector); + } + + return $error; + } + + /** + * Get the first element in this order: + * 2. The <label> with the attribute `[for="someInputId"]` + * 3. The `.closest()` <label> + * + * @param {Object} $el - jQuery object to check for required attribute + * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty + */ + findLabel($el) { + var id = $el[0].id; + var $label = this.$element.find(`label[for="${id}"]`); + + if (!$label.length) { + return $el.closest('label'); + } + + return $label; + } + + /** + * Get the set of labels associated with a set of radio els in this order + * 2. The <label> with the attribute `[for="someInputId"]` + * 3. The `.closest()` <label> + * + * @param {Object} $el - jQuery object to check for required attribute + * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty + */ + findRadioLabels($els) { + var labels = $els.map((i, el) => { + var id = el.id; + var $label = this.$element.find(`label[for="${id}"]`); + + if (!$label.length) { + $label = $(el).closest('label'); + } + return $label[0]; + }); + + return $(labels); + } + + /** + * Adds the CSS error class as specified by the Abide settings to the label, input, and the form + * @param {Object} $el - jQuery object to add the class to + */ + addErrorClasses($el) { + var $label = this.findLabel($el); + var $formError = this.findFormError($el); + + if ($label.length) { + $label.addClass(this.options.labelErrorClass); + } + + if ($formError.length) { + $formError.addClass(this.options.formErrorClass); + } + + $el.addClass(this.options.inputErrorClass).attr('data-invalid', ''); + } + + /** + * Remove CSS error classes etc from an entire radio button group + * @param {String} groupName - A string that specifies the name of a radio button group + * + */ + + removeRadioErrorClasses(groupName) { + var $els = this.$element.find(`:radio[name="${groupName}"]`); + var $labels = this.findRadioLabels($els); + var $formErrors = this.findFormError($els); + + if ($labels.length) { + $labels.removeClass(this.options.labelErrorClass); + } + + if ($formErrors.length) { + $formErrors.removeClass(this.options.formErrorClass); + } + + $els.removeClass(this.options.inputErrorClass).removeAttr('data-invalid'); + + } + + /** + * Removes CSS error class as specified by the Abide settings from the label, input, and the form + * @param {Object} $el - jQuery object to remove the class from + */ + removeErrorClasses($el) { + // radios need to clear all of the els + if($el[0].type == 'radio') { + return this.removeRadioErrorClasses($el.attr('name')); + } + + var $label = this.findLabel($el); + var $formError = this.findFormError($el); + + if ($label.length) { + $label.removeClass(this.options.labelErrorClass); + } + + if ($formError.length) { + $formError.removeClass(this.options.formErrorClass); + } + + $el.removeClass(this.options.inputErrorClass).removeAttr('data-invalid'); + } + + /** + * Goes through a form to find inputs and proceeds to validate them in ways specific to their type + * @fires Abide#invalid + * @fires Abide#valid + * @param {Object} element - jQuery object to validate, should be an HTML input + * @returns {Boolean} goodToGo - If the input is valid or not. + */ + validateInput($el) { + var clearRequire = this.requiredCheck($el), + validated = false, + customValidator = true, + validator = $el.attr('data-validator'), + equalTo = true; + + // don't validate ignored inputs or hidden inputs + if ($el.is('[data-abide-ignore]') || $el.is('[type="hidden"]')) { + return true; + } + + switch ($el[0].type) { + case 'radio': + validated = this.validateRadio($el.attr('name')); + break; + + case 'checkbox': + validated = clearRequire; + break; + + case 'select': + case 'select-one': + case 'select-multiple': + validated = clearRequire; + break; + + default: + validated = this.validateText($el); + } + + if (validator) { + customValidator = this.matchValidation($el, validator, $el.attr('required')); + } + + if ($el.attr('data-equalto')) { + equalTo = this.options.validators.equalTo($el); + } + + + var goodToGo = [clearRequire, validated, customValidator, equalTo].indexOf(false) === -1; + var message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide'; + + this[goodToGo ? 'removeErrorClasses' : 'addErrorClasses']($el); + + /** + * Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide` + * Trigger includes the DOM element of the input. + * @event Abide#valid + * @event Abide#invalid + */ + $el.trigger(message, [$el]); + + return goodToGo; + } + + /** + * Goes through a form and if there are any invalid inputs, it will display the form error element + * @returns {Boolean} noError - true if no errors were detected... + * @fires Abide#formvalid + * @fires Abide#forminvalid + */ + validateForm() { + var acc = []; + var _this = this; + + this.$inputs.each(function() { + acc.push(_this.validateInput($(this))); + }); + + var noError = acc.indexOf(false) === -1; + + this.$element.find('[data-abide-error]').css('display', (noError ? 'none' : 'block')); + + /** + * Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`. + * Trigger includes the element of the form. + * @event Abide#formvalid + * @event Abide#forminvalid + */ + this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]); + + return noError; + } + + /** + * Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true. + * @param {Object} $el - jQuery object to validate, should be a text input HTML element + * @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns + * @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified + */ + validateText($el, pattern) { + // A pattern can be passed to this function, or it will be infered from the input's "pattern" attribute, or it's "type" attribute + pattern = (pattern || $el.attr('pattern') || $el.attr('type')); + var inputText = $el.val(); + var valid = false; + + if (inputText.length) { + // If the pattern attribute on the element is in Abide's list of patterns, then test that regexp + if (this.options.patterns.hasOwnProperty(pattern)) { + valid = this.options.patterns[pattern].test(inputText); + } + // If the pattern name isn't also the type attribute of the field, then test it as a regexp + else if (pattern !== $el.attr('type')) { + valid = new RegExp(pattern).test(inputText); + } + else { + valid = true; + } + } + // An empty field is valid if it's not required + else if (!$el.prop('required')) { + valid = true; + } + + return valid; + } + + /** + * Determines whether or a not a radio input is valid based on whether or not it is required and selected. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all radio buttons in its group. + * @param {String} groupName - A string that specifies the name of a radio button group + * @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required) + */ + validateRadio(groupName) { + // If at least one radio in the group has the `required` attribute, the group is considered required + // Per W3C spec, all radio buttons in a group should have `required`, but we're being nice + var $group = this.$element.find(`:radio[name="${groupName}"]`); + var valid = false, required = false; + + // For the group to be required, at least one radio needs to be required + $group.each((i, e) => { + if ($(e).attr('required')) { + required = true; + } + }); + if(!required) valid=true; + + if (!valid) { + // For the group to be valid, at least one radio needs to be checked + $group.each((i, e) => { + if ($(e).prop('checked')) { + valid = true; + } + }); + }; + + return valid; + } + + /** + * Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator="foo bar baz"` in a space separated listed. + * @param {Object} $el - jQuery input element. + * @param {String} validators - a string of function names matching functions in the Abide.options.validators object. + * @param {Boolean} required - self explanatory? + * @returns {Boolean} - true if validations passed. + */ + matchValidation($el, validators, required) { + required = required ? true : false; + + var clear = validators.split(' ').map((v) => { + return this.options.validators[v]($el, required, $el.parent()); + }); + return clear.indexOf(false) === -1; + } + + /** + * Resets form inputs and styles + * @fires Abide#formreset + */ + resetForm() { + var $form = this.$element, + opts = this.options; + + $(`.${opts.labelErrorClass}`, $form).not('small').removeClass(opts.labelErrorClass); + $(`.${opts.inputErrorClass}`, $form).not('small').removeClass(opts.inputErrorClass); + $(`${opts.formErrorSelector}.${opts.formErrorClass}`).removeClass(opts.formErrorClass); + $form.find('[data-abide-error]').css('display', 'none'); + $(':input', $form).not(':button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]').val('').removeAttr('data-invalid'); + $(':input:radio', $form).not('[data-abide-ignore]').prop('checked',false).removeAttr('data-invalid'); + $(':input:checkbox', $form).not('[data-abide-ignore]').prop('checked',false).removeAttr('data-invalid'); + /** + * Fires when the form has been reset. + * @event Abide#formreset + */ + $form.trigger('formreset.zf.abide', [$form]); + } + + /** + * Destroys an instance of Abide. + * Removes error styles and classes from elements, without resetting their values. + */ + destroy() { + var _this = this; + this.$element + .off('.abide') + .find('[data-abide-error]') + .css('display', 'none'); + + this.$inputs + .off('.abide') + .each(function() { + _this.removeErrorClasses($(this)); + }); + + Foundation.unregisterPlugin(this); + } +} + +/** + * Default settings for plugin + */ +Abide.defaults = { + /** + * The default event to validate inputs. Checkboxes and radios validate immediately. + * Remove or change this value for manual validation. + * @option + * @example 'fieldChange' + */ + validateOn: 'fieldChange', + + /** + * Class to be applied to input labels on failed validation. + * @option + * @example 'is-invalid-label' + */ + labelErrorClass: 'is-invalid-label', + + /** + * Class to be applied to inputs on failed validation. + * @option + * @example 'is-invalid-input' + */ + inputErrorClass: 'is-invalid-input', + + /** + * Class selector to use to target Form Errors for show/hide. + * @option + * @example '.form-error' + */ + formErrorSelector: '.form-error', + + /** + * Class added to Form Errors on failed validation. + * @option + * @example 'is-visible' + */ + formErrorClass: 'is-visible', + + /** + * Set to true to validate text inputs on any value change. + * @option + * @example false + */ + liveValidate: false, + + patterns: { + alpha : /^[a-zA-Z]+$/, + alpha_numeric : /^[a-zA-Z0-9]+$/, + integer : /^[-+]?\d+$/, + number : /^[-+]?\d*(?:[\.\,]\d+)?$/, + + // amex, visa, diners + card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/, + cvv : /^([0-9]){3,4}$/, + + // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address + email : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/, + + url : /^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, + // abc.de + domain : /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/, + + datetime : /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/, + // YYYY-MM-DD + date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/, + // HH:MM:SS + time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/, + dateISO : /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/, + // MM/DD/YYYY + month_day_year : /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/, + // DD/MM/YYYY + day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/, + + // #FFF or #FFFFFF + color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/ + }, + + /** + * Optional validation functions to be used. `equalTo` being the only default included function. + * Functions should return only a boolean if the input is valid or not. Functions are given the following arguments: + * el : The jQuery element to validate. + * required : Boolean value of the required attribute be present or not. + * parent : The direct parent of the input. + * @option + */ + validators: { + equalTo: function (el, required, parent) { + return $(`#${el.attr('data-equalto')}`).val() === el.val(); + } + } +} + +// Window exports +Foundation.plugin(Abide, 'Abide'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.accordion.js b/libraries/foundation-6/js/foundation.accordion.js new file mode 100755 index 00000000..c45172a1 --- /dev/null +++ b/libraries/foundation-6/js/foundation.accordion.js @@ -0,0 +1,237 @@ +'use strict'; + +!function($) { + +/** + * Accordion module. + * @module foundation.accordion + * @requires foundation.util.keyboard + * @requires foundation.util.motion + */ + +class Accordion { + /** + * Creates a new instance of an accordion. + * @class + * @fires Accordion#init + * @param {jQuery} element - jQuery object to make into an accordion. + * @param {Object} options - a plain object with settings to override the default options. + */ + constructor(element, options) { + this.$element = element; + this.options = $.extend({}, Accordion.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Accordion'); + Foundation.Keyboard.register('Accordion', { + 'ENTER': 'toggle', + 'SPACE': 'toggle', + 'ARROW_DOWN': 'next', + 'ARROW_UP': 'previous' + }); + } + + /** + * Initializes the accordion by animating the preset active pane(s). + * @private + */ + _init() { + this.$element.attr('role', 'tablist'); + this.$tabs = this.$element.children('li, [data-accordion-item]'); + + this.$tabs.each(function(idx, el) { + var $el = $(el), + $content = $el.children('[data-tab-content]'), + id = $content[0].id || Foundation.GetYoDigits(6, 'accordion'), + linkId = el.id || `${id}-label`; + + $el.find('a:first').attr({ + 'aria-controls': id, + 'role': 'tab', + 'id': linkId, + 'aria-expanded': false, + 'aria-selected': false + }); + + $content.attr({'role': 'tabpanel', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id}); + }); + var $initActive = this.$element.find('.is-active').children('[data-tab-content]'); + if($initActive.length){ + this.down($initActive, true); + } + this._events(); + } + + /** + * Adds event handlers for items within the accordion. + * @private + */ + _events() { + var _this = this; + + this.$tabs.each(function() { + var $elem = $(this); + var $tabContent = $elem.children('[data-tab-content]'); + if ($tabContent.length) { + $elem.children('a').off('click.zf.accordion keydown.zf.accordion') + .on('click.zf.accordion', function(e) { + // $(this).children('a').on('click.zf.accordion', function(e) { + e.preventDefault(); + if ($elem.hasClass('is-active')) { + if(_this.options.allowAllClosed || $elem.siblings().hasClass('is-active')){ + _this.up($tabContent); + } + } + else { + _this.down($tabContent); + } + }).on('keydown.zf.accordion', function(e){ + Foundation.Keyboard.handleKey(e, 'Accordion', { + toggle: function() { + _this.toggle($tabContent); + }, + next: function() { + var $a = $elem.next().find('a').focus(); + if (!_this.options.multiExpand) { + $a.trigger('click.zf.accordion') + } + }, + previous: function() { + var $a = $elem.prev().find('a').focus(); + if (!_this.options.multiExpand) { + $a.trigger('click.zf.accordion') + } + }, + handled: function() { + e.preventDefault(); + e.stopPropagation(); + } + }); + }); + } + }); + } + + /** + * Toggles the selected content pane's open/close state. + * @param {jQuery} $target - jQuery object of the pane to toggle. + * @function + */ + toggle($target) { + if($target.parent().hasClass('is-active')) { + if(this.options.allowAllClosed || $target.parent().siblings().hasClass('is-active')){ + this.up($target); + } else { return; } + } else { + this.down($target); + } + } + + /** + * Opens the accordion tab defined by `$target`. + * @param {jQuery} $target - Accordion pane to open. + * @param {Boolean} firstTime - flag to determine if reflow should happen. + * @fires Accordion#down + * @function + */ + down($target, firstTime) { + if (!this.options.multiExpand && !firstTime) { + var $currentActive = this.$element.children('.is-active').children('[data-tab-content]'); + if($currentActive.length){ + this.up($currentActive); + } + } + + $target + .attr('aria-hidden', false) + .parent('[data-tab-content]') + .addBack() + .parent().addClass('is-active'); + + $target.slideDown(this.options.slideSpeed, () => { + /** + * Fires when the tab is done opening. + * @event Accordion#down + */ + this.$element.trigger('down.zf.accordion', [$target]); + }); + + $(`#${$target.attr('aria-labelledby')}`).attr({ + 'aria-expanded': true, + 'aria-selected': true + }); + } + + /** + * Closes the tab defined by `$target`. + * @param {jQuery} $target - Accordion tab to close. + * @fires Accordion#up + * @function + */ + up($target) { + var $aunts = $target.parent().siblings(), + _this = this; + var canClose = this.options.multiExpand ? $aunts.hasClass('is-active') : $target.parent().hasClass('is-active'); + + if(!this.options.allowAllClosed && !canClose) { + return; + } + + // Foundation.Move(this.options.slideSpeed, $target, function(){ + $target.slideUp(_this.options.slideSpeed, function () { + /** + * Fires when the tab is done collapsing up. + * @event Accordion#up + */ + _this.$element.trigger('up.zf.accordion', [$target]); + }); + // }); + + $target.attr('aria-hidden', true) + .parent().removeClass('is-active'); + + $(`#${$target.attr('aria-labelledby')}`).attr({ + 'aria-expanded': false, + 'aria-selected': false + }); + } + + /** + * Destroys an instance of an accordion. + * @fires Accordion#destroyed + * @function + */ + destroy() { + this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', ''); + this.$element.find('a').off('.zf.accordion'); + + Foundation.unregisterPlugin(this); + } +} + +Accordion.defaults = { + /** + * Amount of time to animate the opening of an accordion pane. + * @option + * @example 250 + */ + slideSpeed: 250, + /** + * Allow the accordion to have multiple open panes. + * @option + * @example false + */ + multiExpand: false, + /** + * Allow the accordion to close all panes. + * @option + * @example false + */ + allowAllClosed: false +}; + +// Window exports +Foundation.plugin(Accordion, 'Accordion'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.accordionMenu.js b/libraries/foundation-6/js/foundation.accordionMenu.js new file mode 100755 index 00000000..663a9819 --- /dev/null +++ b/libraries/foundation-6/js/foundation.accordionMenu.js @@ -0,0 +1,274 @@ +'use strict'; + +!function($) { + +/** + * AccordionMenu module. + * @module foundation.accordionMenu + * @requires foundation.util.keyboard + * @requires foundation.util.motion + * @requires foundation.util.nest + */ + +class AccordionMenu { + /** + * Creates a new instance of an accordion menu. + * @class + * @fires AccordionMenu#init + * @param {jQuery} element - jQuery object to make into an accordion menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options) { + this.$element = element; + this.options = $.extend({}, AccordionMenu.defaults, this.$element.data(), options); + + Foundation.Nest.Feather(this.$element, 'accordion'); + + this._init(); + + Foundation.registerPlugin(this, 'AccordionMenu'); + Foundation.Keyboard.register('AccordionMenu', { + 'ENTER': 'toggle', + 'SPACE': 'toggle', + 'ARROW_RIGHT': 'open', + 'ARROW_UP': 'up', + 'ARROW_DOWN': 'down', + 'ARROW_LEFT': 'close', + 'ESCAPE': 'closeAll', + 'TAB': 'down', + 'SHIFT_TAB': 'up' + }); + } + + + + /** + * Initializes the accordion menu by hiding all nested menus. + * @private + */ + _init() { + this.$element.find('[data-submenu]').not('.is-active').slideUp(0);//.find('a').css('padding-left', '1rem'); + this.$element.attr({ + 'role': 'tablist', + 'aria-multiselectable': this.options.multiOpen + }); + + this.$menuLinks = this.$element.find('.is-accordion-submenu-parent'); + this.$menuLinks.each(function(){ + var linkId = this.id || Foundation.GetYoDigits(6, 'acc-menu-link'), + $elem = $(this), + $sub = $elem.children('[data-submenu]'), + subId = $sub[0].id || Foundation.GetYoDigits(6, 'acc-menu'), + isActive = $sub.hasClass('is-active'); + $elem.attr({ + 'aria-controls': subId, + 'aria-expanded': isActive, + 'role': 'tab', + 'id': linkId + }); + $sub.attr({ + 'aria-labelledby': linkId, + 'aria-hidden': !isActive, + 'role': 'tabpanel', + 'id': subId + }); + }); + var initPanes = this.$element.find('.is-active'); + if(initPanes.length){ + var _this = this; + initPanes.each(function(){ + _this.down($(this)); + }); + } + this._events(); + } + + /** + * Adds event handlers for items within the menu. + * @private + */ + _events() { + var _this = this; + + this.$element.find('li').each(function() { + var $submenu = $(this).children('[data-submenu]'); + + if ($submenu.length) { + $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) { + e.preventDefault(); + + _this.toggle($submenu); + }); + } + }).on('keydown.zf.accordionmenu', function(e){ + var $element = $(this), + $elements = $element.parent('ul').children('li'), + $prevElement, + $nextElement, + $target = $element.children('[data-submenu]'); + + $elements.each(function(i) { + if ($(this).is($element)) { + $prevElement = $elements.eq(Math.max(0, i-1)).find('a').first(); + $nextElement = $elements.eq(Math.min(i+1, $elements.length-1)).find('a').first(); + + if ($(this).children('[data-submenu]:visible').length) { // has open sub menu + $nextElement = $element.find('li:first-child').find('a').first(); + } + if ($(this).is(':first-child')) { // is first element of sub menu + $prevElement = $element.parents('li').first().find('a').first(); + } else if ($prevElement.children('[data-submenu]:visible').length) { // if previous element has open sub menu + $prevElement = $prevElement.find('li:last-child').find('a').first(); + } + if ($(this).is(':last-child')) { // is last element of sub menu + $nextElement = $element.parents('li').first().next('li').find('a').first(); + } + + return; + } + }); + Foundation.Keyboard.handleKey(e, 'AccordionMenu', { + open: function() { + if ($target.is(':hidden')) { + _this.down($target); + $target.find('li').first().find('a').first().focus(); + } + }, + close: function() { + if ($target.length && !$target.is(':hidden')) { // close active sub of this item + _this.up($target); + } else if ($element.parent('[data-submenu]').length) { // close currently open sub + _this.up($element.parent('[data-submenu]')); + $element.parents('li').first().find('a').first().focus(); + } + }, + up: function() { + $prevElement.attr('tabindex', -1).focus(); + return true; + }, + down: function() { + $nextElement.attr('tabindex', -1).focus(); + return true; + }, + toggle: function() { + if ($element.children('[data-submenu]').length) { + _this.toggle($element.children('[data-submenu]')); + } + }, + closeAll: function() { + _this.hideAll(); + }, + handled: function(preventDefault) { + if (preventDefault) { + e.preventDefault(); + } + e.stopImmediatePropagation(); + } + }); + });//.attr('tabindex', 0); + } + + /** + * Closes all panes of the menu. + * @function + */ + hideAll() { + this.$element.find('[data-submenu]').slideUp(this.options.slideSpeed); + } + + /** + * Toggles the open/close state of a submenu. + * @function + * @param {jQuery} $target - the submenu to toggle + */ + toggle($target){ + if(!$target.is(':animated')) { + if (!$target.is(':hidden')) { + this.up($target); + } + else { + this.down($target); + } + } + } + + /** + * Opens the sub-menu defined by `$target`. + * @param {jQuery} $target - Sub-menu to open. + * @fires AccordionMenu#down + */ + down($target) { + var _this = this; + + if(!this.options.multiOpen) { + this.up(this.$element.find('.is-active').not($target.parentsUntil(this.$element).add($target))); + } + + $target.addClass('is-active').attr({'aria-hidden': false}) + .parent('.is-accordion-submenu-parent').attr({'aria-expanded': true}); + + //Foundation.Move(this.options.slideSpeed, $target, function() { + $target.slideDown(_this.options.slideSpeed, function () { + /** + * Fires when the menu is done opening. + * @event AccordionMenu#down + */ + _this.$element.trigger('down.zf.accordionMenu', [$target]); + }); + //}); + } + + /** + * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well. + * @param {jQuery} $target - Sub-menu to close. + * @fires AccordionMenu#up + */ + up($target) { + var _this = this; + //Foundation.Move(this.options.slideSpeed, $target, function(){ + $target.slideUp(_this.options.slideSpeed, function () { + /** + * Fires when the menu is done collapsing up. + * @event AccordionMenu#up + */ + _this.$element.trigger('up.zf.accordionMenu', [$target]); + }); + //}); + + var $menus = $target.find('[data-submenu]').slideUp(0).addBack().attr('aria-hidden', true); + + $menus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false); + } + + /** + * Destroys an instance of accordion menu. + * @fires AccordionMenu#destroyed + */ + destroy() { + this.$element.find('[data-submenu]').slideDown(0).css('display', ''); + this.$element.find('a').off('click.zf.accordionMenu'); + + Foundation.Nest.Burn(this.$element, 'accordion'); + Foundation.unregisterPlugin(this); + } +} + +AccordionMenu.defaults = { + /** + * Amount of time to animate the opening of a submenu in ms. + * @option + * @example 250 + */ + slideSpeed: 250, + /** + * Allow the menu to have multiple open panes. + * @option + * @example true + */ + multiOpen: true +}; + +// Window exports +Foundation.plugin(AccordionMenu, 'AccordionMenu'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.core.js b/libraries/foundation-6/js/foundation.core.js new file mode 100755 index 00000000..32134963 --- /dev/null +++ b/libraries/foundation-6/js/foundation.core.js @@ -0,0 +1,378 @@ +!function($) { + +"use strict"; + +var FOUNDATION_VERSION = '6.2.3'; + +// Global Foundation object +// This is attached to the window, or used as a module for AMD/Browserify +var Foundation = { + version: FOUNDATION_VERSION, + + /** + * Stores initialized plugins. + */ + _plugins: {}, + + /** + * Stores generated unique ids for plugin instances + */ + _uuids: [], + + /** + * Returns a boolean for RTL support + */ + rtl: function(){ + return $('html').attr('dir') === 'rtl'; + }, + /** + * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing. + * @param {Object} plugin - The constructor of the plugin. + */ + plugin: function(plugin, name) { + // Object key to use when adding to global Foundation object + // Examples: Foundation.Reveal, Foundation.OffCanvas + var className = (name || functionName(plugin)); + // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin + // Examples: data-reveal, data-off-canvas + var attrName = hyphenate(className); + + // Add to the Foundation object and the plugins list (for reflowing) + this._plugins[attrName] = this[className] = plugin; + }, + /** + * @function + * Populates the _uuids array with pointers to each individual plugin instance. + * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls. + * Also fires the initialization event for each plugin, consolidating repetitive code. + * @param {Object} plugin - an instance of a plugin, usually `this` in context. + * @param {String} name - the name of the plugin, passed as a camelCased string. + * @fires Plugin#init + */ + registerPlugin: function(plugin, name){ + var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase(); + plugin.uuid = this.GetYoDigits(6, pluginName); + + if(!plugin.$element.attr(`data-${pluginName}`)){ plugin.$element.attr(`data-${pluginName}`, plugin.uuid); } + if(!plugin.$element.data('zfPlugin')){ plugin.$element.data('zfPlugin', plugin); } + /** + * Fires when the plugin has initialized. + * @event Plugin#init + */ + plugin.$element.trigger(`init.zf.${pluginName}`); + + this._uuids.push(plugin.uuid); + + return; + }, + /** + * @function + * Removes the plugins uuid from the _uuids array. + * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute. + * Also fires the destroyed event for the plugin, consolidating repetitive code. + * @param {Object} plugin - an instance of a plugin, usually `this` in context. + * @fires Plugin#destroyed + */ + unregisterPlugin: function(plugin){ + var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor)); + + this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1); + plugin.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin') + /** + * Fires when the plugin has been destroyed. + * @event Plugin#destroyed + */ + .trigger(`destroyed.zf.${pluginName}`); + for(var prop in plugin){ + plugin[prop] = null;//clean up script to prep for garbage collection. + } + return; + }, + + /** + * @function + * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc. + * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'` + * @default If no argument is passed, reflow all currently active plugins. + */ + reInit: function(plugins){ + var isJQ = plugins instanceof $; + try{ + if(isJQ){ + plugins.each(function(){ + $(this).data('zfPlugin')._init(); + }); + }else{ + var type = typeof plugins, + _this = this, + fns = { + 'object': function(plgs){ + plgs.forEach(function(p){ + p = hyphenate(p); + $('[data-'+ p +']').foundation('_init'); + }); + }, + 'string': function(){ + plugins = hyphenate(plugins); + $('[data-'+ plugins +']').foundation('_init'); + }, + 'undefined': function(){ + this['object'](Object.keys(_this._plugins)); + } + }; + fns[type](plugins); + } + }catch(err){ + console.error(err); + }finally{ + return plugins; + } + }, + + /** + * returns a random base-36 uid with namespacing + * @function + * @param {Number} length - number of random base-36 digits desired. Increase for more random strings. + * @param {String} namespace - name of plugin to be incorporated in uid, optional. + * @default {String} '' - if no plugin name is provided, nothing is appended to the uid. + * @returns {String} - unique id + */ + GetYoDigits: function(length, namespace){ + length = length || 6; + return Math.round((Math.pow(36, length + 1) - Math.random() * Math.pow(36, length))).toString(36).slice(1) + (namespace ? `-${namespace}` : ''); + }, + /** + * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized. + * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object. + * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything. + */ + reflow: function(elem, plugins) { + + // If plugins is undefined, just grab everything + if (typeof plugins === 'undefined') { + plugins = Object.keys(this._plugins); + } + // If plugins is a string, convert it to an array with one item + else if (typeof plugins === 'string') { + plugins = [plugins]; + } + + var _this = this; + + // Iterate through each plugin + $.each(plugins, function(i, name) { + // Get the current plugin + var plugin = _this._plugins[name]; + + // Localize the search to all elements inside elem, as well as elem itself, unless elem === document + var $elem = $(elem).find('[data-'+name+']').addBack('[data-'+name+']'); + + // For each plugin found, initialize it + $elem.each(function() { + var $el = $(this), + opts = {}; + // Don't double-dip on plugins + if ($el.data('zfPlugin')) { + console.warn("Tried to initialize "+name+" on an element that already has a Foundation plugin."); + return; + } + + if($el.attr('data-options')){ + var thing = $el.attr('data-options').split(';').forEach(function(e, i){ + var opt = e.split(':').map(function(el){ return el.trim(); }); + if(opt[0]) opts[opt[0]] = parseValue(opt[1]); + }); + } + try{ + $el.data('zfPlugin', new plugin($(this), opts)); + }catch(er){ + console.error(er); + }finally{ + return; + } + }); + }); + }, + getFnName: functionName, + transitionend: function($elem){ + var transitions = { + 'transition': 'transitionend', + 'WebkitTransition': 'webkitTransitionEnd', + 'MozTransition': 'transitionend', + 'OTransition': 'otransitionend' + }; + var elem = document.createElement('div'), + end; + + for (var t in transitions){ + if (typeof elem.style[t] !== 'undefined'){ + end = transitions[t]; + } + } + if(end){ + return end; + }else{ + end = setTimeout(function(){ + $elem.triggerHandler('transitionend', [$elem]); + }, 1); + return 'transitionend'; + } + } +}; + +Foundation.util = { + /** + * Function for applying a debounce effect to a function call. + * @function + * @param {Function} func - Function to be called at end of timeout. + * @param {Number} delay - Time in ms to delay the call of `func`. + * @returns function + */ + throttle: function (func, delay) { + var timer = null; + + return function () { + var context = this, args = arguments; + + if (timer === null) { + timer = setTimeout(function () { + func.apply(context, args); + timer = null; + }, delay); + } + }; + } +}; + +// TODO: consider not making this a jQuery function +// TODO: need way to reflow vs. re-initialize +/** + * The Foundation jQuery method. + * @param {String|Array} method - An action to perform on the current jQuery object. + */ +var foundation = function(method) { + var type = typeof method, + $meta = $('meta.foundation-mq'), + $noJS = $('.no-js'); + + if(!$meta.length){ + $('<meta class="foundation-mq">').appendTo(document.head); + } + if($noJS.length){ + $noJS.removeClass('no-js'); + } + + if(type === 'undefined'){//needs to initialize the Foundation object, or an individual plugin. + Foundation.MediaQuery._init(); + Foundation.reflow(this); + }else if(type === 'string'){//an individual method to invoke on a plugin or group of plugins + var args = Array.prototype.slice.call(arguments, 1);//collect all the arguments, if necessary + var plugClass = this.data('zfPlugin');//determine the class of plugin + + if(plugClass !== undefined && plugClass[method] !== undefined){//make sure both the class and method exist + if(this.length === 1){//if there's only one, call it directly. + plugClass[method].apply(plugClass, args); + }else{ + this.each(function(i, el){//otherwise loop through the jQuery collection and invoke the method on each + plugClass[method].apply($(el).data('zfPlugin'), args); + }); + } + }else{//error for no class or no method + throw new ReferenceError("We're sorry, '" + method + "' is not an available method for " + (plugClass ? functionName(plugClass) : 'this element') + '.'); + } + }else{//error for invalid argument type + throw new TypeError(`We're sorry, ${type} is not a valid parameter. You must use a string representing the method you wish to invoke.`); + } + return this; +}; + +window.Foundation = Foundation; +$.fn.foundation = foundation; + +// Polyfill for requestAnimationFrame +(function() { + if (!Date.now || !window.Date.now) + window.Date.now = Date.now = function() { return new Date().getTime(); }; + + var vendors = ['webkit', 'moz']; + for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) { + var vp = vendors[i]; + window.requestAnimationFrame = window[vp+'RequestAnimationFrame']; + window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame'] + || window[vp+'CancelRequestAnimationFrame']); + } + if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) + || !window.requestAnimationFrame || !window.cancelAnimationFrame) { + var lastTime = 0; + window.requestAnimationFrame = function(callback) { + var now = Date.now(); + var nextTime = Math.max(lastTime + 16, now); + return setTimeout(function() { callback(lastTime = nextTime); }, + nextTime - now); + }; + window.cancelAnimationFrame = clearTimeout; + } + /** + * Polyfill for performance.now, required by rAF + */ + if(!window.performance || !window.performance.now){ + window.performance = { + start: Date.now(), + now: function(){ return Date.now() - this.start; } + }; + } +})(); +if (!Function.prototype.bind) { + Function.prototype.bind = function(oThis) { + if (typeof this !== 'function') { + // closest thing possible to the ECMAScript 5 + // internal IsCallable function + throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); + } + + var aArgs = Array.prototype.slice.call(arguments, 1), + fToBind = this, + fNOP = function() {}, + fBound = function() { + return fToBind.apply(this instanceof fNOP + ? this + : oThis, + aArgs.concat(Array.prototype.slice.call(arguments))); + }; + + if (this.prototype) { + // native functions don't have a prototype + fNOP.prototype = this.prototype; + } + fBound.prototype = new fNOP(); + + return fBound; + }; +} +// Polyfill to get the name of a function in IE9 +function functionName(fn) { + if (Function.prototype.name === undefined) { + var funcNameRegex = /function\s([^(]{1,})\(/; + var results = (funcNameRegex).exec((fn).toString()); + return (results && results.length > 1) ? results[1].trim() : ""; + } + else if (fn.prototype === undefined) { + return fn.constructor.name; + } + else { + return fn.prototype.constructor.name; + } +} +function parseValue(str){ + if(/true/.test(str)) return true; + else if(/false/.test(str)) return false; + else if(!isNaN(str * 1)) return parseFloat(str); + return str; +} +// Convert PascalCase to kebab-case +// Thank you: http://stackoverflow.com/a/8955580 +function hyphenate(str) { + return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); +} + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.drilldown.js b/libraries/foundation-6/js/foundation.drilldown.js new file mode 100755 index 00000000..ca209de5 --- /dev/null +++ b/libraries/foundation-6/js/foundation.drilldown.js @@ -0,0 +1,369 @@ +'use strict'; + +!function($) { + +/** + * Drilldown module. + * @module foundation.drilldown + * @requires foundation.util.keyboard + * @requires foundation.util.motion + * @requires foundation.util.nest + */ + +class Drilldown { + /** + * Creates a new instance of a drilldown menu. + * @class + * @param {jQuery} element - jQuery object to make into an accordion menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options) { + this.$element = element; + this.options = $.extend({}, Drilldown.defaults, this.$element.data(), options); + + Foundation.Nest.Feather(this.$element, 'drilldown'); + + this._init(); + + Foundation.registerPlugin(this, 'Drilldown'); + Foundation.Keyboard.register('Drilldown', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ARROW_RIGHT': 'next', + 'ARROW_UP': 'up', + 'ARROW_DOWN': 'down', + 'ARROW_LEFT': 'previous', + 'ESCAPE': 'close', + 'TAB': 'down', + 'SHIFT_TAB': 'up' + }); + } + + /** + * Initializes the drilldown by creating jQuery collections of elements + * @private + */ + _init() { + this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a'); + this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]'); + this.$menuItems = this.$element.find('li').not('.js-drilldown-back').attr('role', 'menuitem').find('a'); + + this._prepareMenu(); + + this._keyboardEvents(); + } + + /** + * prepares drilldown menu by setting attributes to links and elements + * sets a min height to prevent content jumping + * wraps the element if not already wrapped + * @private + * @function + */ + _prepareMenu() { + var _this = this; + // if(!this.options.holdOpen){ + // this._menuLinkEvents(); + // } + this.$submenuAnchors.each(function(){ + var $link = $(this); + var $sub = $link.parent(); + if(_this.options.parentLink){ + $link.clone().prependTo($sub.children('[data-submenu]')).wrap('<li class="is-submenu-parent-item is-submenu-item is-drilldown-submenu-item" role="menu-item"></li>'); + } + $link.data('savedHref', $link.attr('href')).removeAttr('href'); + $link.children('[data-submenu]') + .attr({ + 'aria-hidden': true, + 'tabindex': 0, + 'role': 'menu' + }); + _this._events($link); + }); + this.$submenus.each(function(){ + var $menu = $(this), + $back = $menu.find('.js-drilldown-back'); + if(!$back.length){ + $menu.prepend(_this.options.backButton); + } + _this._back($menu); + }); + if(!this.$element.parent().hasClass('is-drilldown')){ + this.$wrapper = $(this.options.wrapper).addClass('is-drilldown'); + this.$wrapper = this.$element.wrap(this.$wrapper).parent().css(this._getMaxDims()); + } + } + + /** + * Adds event handlers to elements in the menu. + * @function + * @private + * @param {jQuery} $elem - the current menu item to add handlers to. + */ + _events($elem) { + var _this = this; + + $elem.off('click.zf.drilldown') + .on('click.zf.drilldown', function(e){ + if($(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')){ + e.stopImmediatePropagation(); + e.preventDefault(); + } + + // if(e.target !== e.currentTarget.firstElementChild){ + // return false; + // } + _this._show($elem.parent('li')); + + if(_this.options.closeOnClick){ + var $body = $('body'); + $body.off('.zf.drilldown').on('click.zf.drilldown', function(e){ + if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)) { return; } + e.preventDefault(); + _this._hideAll(); + $body.off('.zf.drilldown'); + }); + } + }); + } + + /** + * Adds keydown event listener to `li`'s in the menu. + * @private + */ + _keyboardEvents() { + var _this = this; + + this.$menuItems.add(this.$element.find('.js-drilldown-back > a')).on('keydown.zf.drilldown', function(e){ + + var $element = $(this), + $elements = $element.parent('li').parent('ul').children('li').children('a'), + $prevElement, + $nextElement; + + $elements.each(function(i) { + if ($(this).is($element)) { + $prevElement = $elements.eq(Math.max(0, i-1)); + $nextElement = $elements.eq(Math.min(i+1, $elements.length-1)); + return; + } + }); + + Foundation.Keyboard.handleKey(e, 'Drilldown', { + next: function() { + if ($element.is(_this.$submenuAnchors)) { + _this._show($element.parent('li')); + $element.parent('li').one(Foundation.transitionend($element), function(){ + $element.parent('li').find('ul li a').filter(_this.$menuItems).first().focus(); + }); + return true; + } + }, + previous: function() { + _this._hide($element.parent('li').parent('ul')); + $element.parent('li').parent('ul').one(Foundation.transitionend($element), function(){ + setTimeout(function() { + $element.parent('li').parent('ul').parent('li').children('a').first().focus(); + }, 1); + }); + return true; + }, + up: function() { + $prevElement.focus(); + return true; + }, + down: function() { + $nextElement.focus(); + return true; + }, + close: function() { + _this._back(); + //_this.$menuItems.first().focus(); // focus to first element + }, + open: function() { + if (!$element.is(_this.$menuItems)) { // not menu item means back button + _this._hide($element.parent('li').parent('ul')); + $element.parent('li').parent('ul').one(Foundation.transitionend($element), function(){ + setTimeout(function() { + $element.parent('li').parent('ul').parent('li').children('a').first().focus(); + }, 1); + }); + } else if ($element.is(_this.$submenuAnchors)) { + _this._show($element.parent('li')); + $element.parent('li').one(Foundation.transitionend($element), function(){ + $element.parent('li').find('ul li a').filter(_this.$menuItems).first().focus(); + }); + } + return true; + }, + handled: function(preventDefault) { + if (preventDefault) { + e.preventDefault(); + } + e.stopImmediatePropagation(); + } + }); + }); // end keyboardAccess + } + + /** + * Closes all open elements, and returns to root menu. + * @function + * @fires Drilldown#closed + */ + _hideAll() { + var $elem = this.$element.find('.is-drilldown-submenu.is-active').addClass('is-closing'); + $elem.one(Foundation.transitionend($elem), function(e){ + $elem.removeClass('is-active is-closing'); + }); + /** + * Fires when the menu is fully closed. + * @event Drilldown#closed + */ + this.$element.trigger('closed.zf.drilldown'); + } + + /** + * Adds event listener for each `back` button, and closes open menus. + * @function + * @fires Drilldown#back + * @param {jQuery} $elem - the current sub-menu to add `back` event. + */ + _back($elem) { + var _this = this; + $elem.off('click.zf.drilldown'); + $elem.children('.js-drilldown-back') + .on('click.zf.drilldown', function(e){ + e.stopImmediatePropagation(); + // console.log('mouseup on back'); + _this._hide($elem); + }); + } + + /** + * Adds event listener to menu items w/o submenus to close open menus on click. + * @function + * @private + */ + _menuLinkEvents() { + var _this = this; + this.$menuItems.not('.is-drilldown-submenu-parent') + .off('click.zf.drilldown') + .on('click.zf.drilldown', function(e){ + // e.stopImmediatePropagation(); + setTimeout(function(){ + _this._hideAll(); + }, 0); + }); + } + + /** + * Opens a submenu. + * @function + * @fires Drilldown#open + * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag. + */ + _show($elem) { + $elem.children('[data-submenu]').addClass('is-active'); + /** + * Fires when the submenu has opened. + * @event Drilldown#open + */ + this.$element.trigger('open.zf.drilldown', [$elem]); + }; + + /** + * Hides a submenu + * @function + * @fires Drilldown#hide + * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag. + */ + _hide($elem) { + var _this = this; + $elem.addClass('is-closing') + .one(Foundation.transitionend($elem), function(){ + $elem.removeClass('is-active is-closing'); + $elem.blur(); + }); + /** + * Fires when the submenu has closed. + * @event Drilldown#hide + */ + $elem.trigger('hide.zf.drilldown', [$elem]); + } + + /** + * Iterates through the nested menus to calculate the min-height, and max-width for the menu. + * Prevents content jumping. + * @function + * @private + */ + _getMaxDims() { + var max = 0, result = {}; + this.$submenus.add(this.$element).each(function(){ + var numOfElems = $(this).children('li').length; + max = numOfElems > max ? numOfElems : max; + }); + + result['min-height'] = `${max * this.$menuItems[0].getBoundingClientRect().height}px`; + result['max-width'] = `${this.$element[0].getBoundingClientRect().width}px`; + + return result; + } + + /** + * Destroys the Drilldown Menu + * @function + */ + destroy() { + this._hideAll(); + Foundation.Nest.Burn(this.$element, 'drilldown'); + this.$element.unwrap() + .find('.js-drilldown-back, .is-submenu-parent-item').remove() + .end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu') + .end().find('[data-submenu]').removeAttr('aria-hidden tabindex role'); + this.$submenuAnchors.each(function() { + $(this).off('.zf.drilldown'); + }); + this.$element.find('a').each(function(){ + var $link = $(this); + if($link.data('savedHref')){ + $link.attr('href', $link.data('savedHref')).removeData('savedHref'); + }else{ return; } + }); + Foundation.unregisterPlugin(this); + }; +} + +Drilldown.defaults = { + /** + * Markup used for JS generated back button. Prepended to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\`) if copy and pasting. + * @option + * @example '<\li><\a>Back<\/a><\/li>' + */ + backButton: '<li class="js-drilldown-back"><a tabindex="0">Back</a></li>', + /** + * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\`) if copy and pasting. + * @option + * @example '<\div class="is-drilldown"><\/div>' + */ + wrapper: '<div></div>', + /** + * Adds the parent link to the submenu. + * @option + * @example false + */ + parentLink: false, + /** + * Allow the menu to return to root list on body click. + * @option + * @example false + */ + closeOnClick: false + // holdOpen: false +}; + +// Window exports +Foundation.plugin(Drilldown, 'Drilldown'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.dropdown.js b/libraries/foundation-6/js/foundation.dropdown.js new file mode 100755 index 00000000..5e913fb4 --- /dev/null +++ b/libraries/foundation-6/js/foundation.dropdown.js @@ -0,0 +1,409 @@ +'use strict'; + +!function($) { + +/** + * Dropdown module. + * @module foundation.dropdown + * @requires foundation.util.keyboard + * @requires foundation.util.box + * @requires foundation.util.triggers + */ + +class Dropdown { + /** + * Creates a new instance of a dropdown. + * @class + * @param {jQuery} element - jQuery object to make into a dropdown. + * Object should be of the dropdown panel, rather than its anchor. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options) { + this.$element = element; + this.options = $.extend({}, Dropdown.defaults, this.$element.data(), options); + this._init(); + + Foundation.registerPlugin(this, 'Dropdown'); + Foundation.Keyboard.register('Dropdown', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ESCAPE': 'close', + 'TAB': 'tab_forward', + 'SHIFT_TAB': 'tab_backward' + }); + } + + /** + * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor. + * @function + * @private + */ + _init() { + var $id = this.$element.attr('id'); + + this.$anchor = $(`[data-toggle="${$id}"]`) || $(`[data-open="${$id}"]`); + this.$anchor.attr({ + 'aria-controls': $id, + 'data-is-focus': false, + 'data-yeti-box': $id, + 'aria-haspopup': true, + 'aria-expanded': false + + }); + + this.options.positionClass = this.getPositionClass(); + this.counter = 4; + this.usedPositions = []; + this.$element.attr({ + 'aria-hidden': 'true', + 'data-yeti-box': $id, + 'data-resize': $id, + 'aria-labelledby': this.$anchor[0].id || Foundation.GetYoDigits(6, 'dd-anchor') + }); + this._events(); + } + + /** + * Helper function to determine current orientation of dropdown pane. + * @function + * @returns {String} position - string value of a position class. + */ + getPositionClass() { + var verticalPosition = this.$element[0].className.match(/(top|left|right|bottom)/g); + verticalPosition = verticalPosition ? verticalPosition[0] : ''; + var horizontalPosition = /float-(\S+)\s/.exec(this.$anchor[0].className); + horizontalPosition = horizontalPosition ? horizontalPosition[1] : ''; + var position = horizontalPosition ? horizontalPosition + ' ' + verticalPosition : verticalPosition; + return position; + } + + /** + * Adjusts the dropdown panes orientation by adding/removing positioning classes. + * @function + * @private + * @param {String} position - position class to remove. + */ + _reposition(position) { + this.usedPositions.push(position ? position : 'bottom'); + //default, try switching to opposite side + if(!position && (this.usedPositions.indexOf('top') < 0)){ + this.$element.addClass('top'); + }else if(position === 'top' && (this.usedPositions.indexOf('bottom') < 0)){ + this.$element.removeClass(position); + }else if(position === 'left' && (this.usedPositions.indexOf('right') < 0)){ + this.$element.removeClass(position) + .addClass('right'); + }else if(position === 'right' && (this.usedPositions.indexOf('left') < 0)){ + this.$element.removeClass(position) + .addClass('left'); + } + + //if default change didn't work, try bottom or left first + else if(!position && (this.usedPositions.indexOf('top') > -1) && (this.usedPositions.indexOf('left') < 0)){ + this.$element.addClass('left'); + }else if(position === 'top' && (this.usedPositions.indexOf('bottom') > -1) && (this.usedPositions.indexOf('left') < 0)){ + this.$element.removeClass(position) + .addClass('left'); + }else if(position === 'left' && (this.usedPositions.indexOf('right') > -1) && (this.usedPositions.indexOf('bottom') < 0)){ + this.$element.removeClass(position); + }else if(position === 'right' && (this.usedPositions.indexOf('left') > -1) && (this.usedPositions.indexOf('bottom') < 0)){ + this.$element.removeClass(position); + } + //if nothing cleared, set to bottom + else{ + this.$element.removeClass(position); + } + this.classChanged = true; + this.counter--; + } + + /** + * Sets the position and orientation of the dropdown pane, checks for collisions. + * Recursively calls itself if a collision is detected, with a new position class. + * @function + * @private + */ + _setPosition() { + if(this.$anchor.attr('aria-expanded') === 'false'){ return false; } + var position = this.getPositionClass(), + $eleDims = Foundation.Box.GetDimensions(this.$element), + $anchorDims = Foundation.Box.GetDimensions(this.$anchor), + _this = this, + direction = (position === 'left' ? 'left' : ((position === 'right') ? 'left' : 'top')), + param = (direction === 'top') ? 'height' : 'width', + offset = (param === 'height') ? this.options.vOffset : this.options.hOffset; + + + + if(($eleDims.width >= $eleDims.windowDims.width) || (!this.counter && !Foundation.Box.ImNotTouchingYou(this.$element))){ + this.$element.offset(Foundation.Box.GetOffsets(this.$element, this.$anchor, 'center bottom', this.options.vOffset, this.options.hOffset, true)).css({ + 'width': $eleDims.windowDims.width - (this.options.hOffset * 2), + 'height': 'auto' + }); + this.classChanged = true; + return false; + } + + this.$element.offset(Foundation.Box.GetOffsets(this.$element, this.$anchor, position, this.options.vOffset, this.options.hOffset)); + + while(!Foundation.Box.ImNotTouchingYou(this.$element, false, true) && this.counter){ + this._reposition(position); + this._setPosition(); + } + } + + /** + * Adds event listeners to the element utilizing the triggers utility library. + * @function + * @private + */ + _events() { + var _this = this; + this.$element.on({ + 'open.zf.trigger': this.open.bind(this), + 'close.zf.trigger': this.close.bind(this), + 'toggle.zf.trigger': this.toggle.bind(this), + 'resizeme.zf.trigger': this._setPosition.bind(this) + }); + + if(this.options.hover){ + this.$anchor.off('mouseenter.zf.dropdown mouseleave.zf.dropdown') + .on('mouseenter.zf.dropdown', function(){ + clearTimeout(_this.timeout); + _this.timeout = setTimeout(function(){ + _this.open(); + _this.$anchor.data('hover', true); + }, _this.options.hoverDelay); + }).on('mouseleave.zf.dropdown', function(){ + clearTimeout(_this.timeout); + _this.timeout = setTimeout(function(){ + _this.close(); + _this.$anchor.data('hover', false); + }, _this.options.hoverDelay); + }); + if(this.options.hoverPane){ + this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown') + .on('mouseenter.zf.dropdown', function(){ + clearTimeout(_this.timeout); + }).on('mouseleave.zf.dropdown', function(){ + clearTimeout(_this.timeout); + _this.timeout = setTimeout(function(){ + _this.close(); + _this.$anchor.data('hover', false); + }, _this.options.hoverDelay); + }); + } + } + this.$anchor.add(this.$element).on('keydown.zf.dropdown', function(e) { + + var $target = $(this), + visibleFocusableElements = Foundation.Keyboard.findFocusable(_this.$element); + + Foundation.Keyboard.handleKey(e, 'Dropdown', { + tab_forward: function() { + if (_this.$element.find(':focus').is(visibleFocusableElements.eq(-1))) { // left modal downwards, setting focus to first element + if (_this.options.trapFocus) { // if focus shall be trapped + visibleFocusableElements.eq(0).focus(); + e.preventDefault(); + } else { // if focus is not trapped, close dropdown on focus out + _this.close(); + } + } + }, + tab_backward: function() { + if (_this.$element.find(':focus').is(visibleFocusableElements.eq(0)) || _this.$element.is(':focus')) { // left modal upwards, setting focus to last element + if (_this.options.trapFocus) { // if focus shall be trapped + visibleFocusableElements.eq(-1).focus(); + e.preventDefault(); + } else { // if focus is not trapped, close dropdown on focus out + _this.close(); + } + } + }, + open: function() { + if ($target.is(_this.$anchor)) { + _this.open(); + _this.$element.attr('tabindex', -1).focus(); + e.preventDefault(); + } + }, + close: function() { + _this.close(); + _this.$anchor.focus(); + } + }); + }); + } + + /** + * Adds an event handler to the body to close any dropdowns on a click. + * @function + * @private + */ + _addBodyHandler() { + var $body = $(document.body).not(this.$element), + _this = this; + $body.off('click.zf.dropdown') + .on('click.zf.dropdown', function(e){ + if(_this.$anchor.is(e.target) || _this.$anchor.find(e.target).length) { + return; + } + if(_this.$element.find(e.target).length) { + return; + } + _this.close(); + $body.off('click.zf.dropdown'); + }); + } + + /** + * Opens the dropdown pane, and fires a bubbling event to close other dropdowns. + * @function + * @fires Dropdown#closeme + * @fires Dropdown#show + */ + open() { + // var _this = this; + /** + * Fires to close other open dropdowns + * @event Dropdown#closeme + */ + this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id')); + this.$anchor.addClass('hover') + .attr({'aria-expanded': true}); + // this.$element/*.show()*/; + this._setPosition(); + this.$element.addClass('is-open') + .attr({'aria-hidden': false}); + + if(this.options.autoFocus){ + var $focusable = Foundation.Keyboard.findFocusable(this.$element); + if($focusable.length){ + $focusable.eq(0).focus(); + } + } + + if(this.options.closeOnClick){ this._addBodyHandler(); } + + /** + * Fires once the dropdown is visible. + * @event Dropdown#show + */ + this.$element.trigger('show.zf.dropdown', [this.$element]); + } + + /** + * Closes the open dropdown pane. + * @function + * @fires Dropdown#hide + */ + close() { + if(!this.$element.hasClass('is-open')){ + return false; + } + this.$element.removeClass('is-open') + .attr({'aria-hidden': true}); + + this.$anchor.removeClass('hover') + .attr('aria-expanded', false); + + if(this.classChanged){ + var curPositionClass = this.getPositionClass(); + if(curPositionClass){ + this.$element.removeClass(curPositionClass); + } + this.$element.addClass(this.options.positionClass) + /*.hide()*/.css({height: '', width: ''}); + this.classChanged = false; + this.counter = 4; + this.usedPositions.length = 0; + } + this.$element.trigger('hide.zf.dropdown', [this.$element]); + } + + /** + * Toggles the dropdown pane's visibility. + * @function + */ + toggle() { + if(this.$element.hasClass('is-open')){ + if(this.$anchor.data('hover')) return; + this.close(); + }else{ + this.open(); + } + } + + /** + * Destroys the dropdown. + * @function + */ + destroy() { + this.$element.off('.zf.trigger').hide(); + this.$anchor.off('.zf.dropdown'); + + Foundation.unregisterPlugin(this); + } +} + +Dropdown.defaults = { + /** + * Amount of time to delay opening a submenu on hover event. + * @option + * @example 250 + */ + hoverDelay: 250, + /** + * Allow submenus to open on hover events + * @option + * @example false + */ + hover: false, + /** + * Don't close dropdown when hovering over dropdown pane + * @option + * @example true + */ + hoverPane: false, + /** + * Number of pixels between the dropdown pane and the triggering element on open. + * @option + * @example 1 + */ + vOffset: 1, + /** + * Number of pixels between the dropdown pane and the triggering element on open. + * @option + * @example 1 + */ + hOffset: 1, + /** + * Class applied to adjust open position. JS will test and fill this in. + * @option + * @example 'top' + */ + positionClass: '', + /** + * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands. + * @option + * @example false + */ + trapFocus: false, + /** + * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening. + * @option + * @example true + */ + autoFocus: false, + /** + * Allows a click on the body to close the dropdown. + * @option + * @example false + */ + closeOnClick: false +} + +// Window exports +Foundation.plugin(Dropdown, 'Dropdown'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.dropdownMenu.js b/libraries/foundation-6/js/foundation.dropdownMenu.js new file mode 100755 index 00000000..2bd96276 --- /dev/null +++ b/libraries/foundation-6/js/foundation.dropdownMenu.js @@ -0,0 +1,404 @@ +'use strict'; + +!function($) { + +/** + * DropdownMenu module. + * @module foundation.dropdown-menu + * @requires foundation.util.keyboard + * @requires foundation.util.box + * @requires foundation.util.nest + */ + +class DropdownMenu { + /** + * Creates a new instance of DropdownMenu. + * @class + * @fires DropdownMenu#init + * @param {jQuery} element - jQuery object to make into a dropdown menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options) { + this.$element = element; + this.options = $.extend({}, DropdownMenu.defaults, this.$element.data(), options); + + Foundation.Nest.Feather(this.$element, 'dropdown'); + this._init(); + + Foundation.registerPlugin(this, 'DropdownMenu'); + Foundation.Keyboard.register('DropdownMenu', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ARROW_RIGHT': 'next', + 'ARROW_UP': 'up', + 'ARROW_DOWN': 'down', + 'ARROW_LEFT': 'previous', + 'ESCAPE': 'close' + }); + } + + /** + * Initializes the plugin, and calls _prepareMenu + * @private + * @function + */ + _init() { + var subs = this.$element.find('li.is-dropdown-submenu-parent'); + this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub'); + + this.$menuItems = this.$element.find('[role="menuitem"]'); + this.$tabs = this.$element.children('[role="menuitem"]'); + this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass); + + if (this.$element.hasClass(this.options.rightClass) || this.options.alignment === 'right' || Foundation.rtl() || this.$element.parents('.top-bar-right').is('*')) { + this.options.alignment = 'right'; + subs.addClass('opens-left'); + } else { + subs.addClass('opens-right'); + } + this.changed = false; + this._events(); + }; + /** + * Adds event listeners to elements within the menu + * @private + * @function + */ + _events() { + var _this = this, + hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined'), + parClass = 'is-dropdown-submenu-parent'; + + // used for onClick and in the keyboard handlers + var handleClickFn = function(e) { + var $elem = $(e.target).parentsUntil('ul', `.${parClass}`), + hasSub = $elem.hasClass(parClass), + hasClicked = $elem.attr('data-is-click') === 'true', + $sub = $elem.children('.is-dropdown-submenu'); + + if (hasSub) { + if (hasClicked) { + if (!_this.options.closeOnClick || (!_this.options.clickOpen && !hasTouch) || (_this.options.forceFollow && hasTouch)) { return; } + else { + e.stopImmediatePropagation(); + e.preventDefault(); + _this._hide($elem); + } + } else { + e.preventDefault(); + e.stopImmediatePropagation(); + _this._show($elem.children('.is-dropdown-submenu')); + $elem.add($elem.parentsUntil(_this.$element, `.${parClass}`)).attr('data-is-click', true); + } + } else { return; } + }; + + if (this.options.clickOpen || hasTouch) { + this.$menuItems.on('click.zf.dropdownmenu touchstart.zf.dropdownmenu', handleClickFn); + } + + if (!this.options.disableHover) { + this.$menuItems.on('mouseenter.zf.dropdownmenu', function(e) { + var $elem = $(this), + hasSub = $elem.hasClass(parClass); + + if (hasSub) { + clearTimeout(_this.delay); + _this.delay = setTimeout(function() { + _this._show($elem.children('.is-dropdown-submenu')); + }, _this.options.hoverDelay); + } + }).on('mouseleave.zf.dropdownmenu', function(e) { + var $elem = $(this), + hasSub = $elem.hasClass(parClass); + if (hasSub && _this.options.autoclose) { + if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) { return false; } + + clearTimeout(_this.delay); + _this.delay = setTimeout(function() { + _this._hide($elem); + }, _this.options.closingTime); + } + }); + } + this.$menuItems.on('keydown.zf.dropdownmenu', function(e) { + var $element = $(e.target).parentsUntil('ul', '[role="menuitem"]'), + isTab = _this.$tabs.index($element) > -1, + $elements = isTab ? _this.$tabs : $element.siblings('li').add($element), + $prevElement, + $nextElement; + + $elements.each(function(i) { + if ($(this).is($element)) { + $prevElement = $elements.eq(i-1); + $nextElement = $elements.eq(i+1); + return; + } + }); + + var nextSibling = function() { + if (!$element.is(':last-child')) { + $nextElement.children('a:first').focus(); + e.preventDefault(); + } + }, prevSibling = function() { + $prevElement.children('a:first').focus(); + e.preventDefault(); + }, openSub = function() { + var $sub = $element.children('ul.is-dropdown-submenu'); + if ($sub.length) { + _this._show($sub); + $element.find('li > a:first').focus(); + e.preventDefault(); + } else { return; } + }, closeSub = function() { + //if ($element.is(':first-child')) { + var close = $element.parent('ul').parent('li'); + close.children('a:first').focus(); + _this._hide(close); + e.preventDefault(); + //} + }; + var functions = { + open: openSub, + close: function() { + _this._hide(_this.$element); + _this.$menuItems.find('a:first').focus(); // focus to first element + e.preventDefault(); + }, + handled: function() { + e.stopImmediatePropagation(); + } + }; + + if (isTab) { + if (_this.$element.hasClass(_this.options.verticalClass)) { // vertical menu + if (_this.options.alignment === 'left') { // left aligned + $.extend(functions, { + down: nextSibling, + up: prevSibling, + next: openSub, + previous: closeSub + }); + } else { // right aligned + $.extend(functions, { + down: nextSibling, + up: prevSibling, + next: closeSub, + previous: openSub + }); + } + } else { // horizontal menu + $.extend(functions, { + next: nextSibling, + previous: prevSibling, + down: openSub, + up: closeSub + }); + } + } else { // not tabs -> one sub + if (_this.options.alignment === 'left') { // left aligned + $.extend(functions, { + next: openSub, + previous: closeSub, + down: nextSibling, + up: prevSibling + }); + } else { // right aligned + $.extend(functions, { + next: closeSub, + previous: openSub, + down: nextSibling, + up: prevSibling + }); + } + } + Foundation.Keyboard.handleKey(e, 'DropdownMenu', functions); + + }); + } + + /** + * Adds an event handler to the body to close any dropdowns on a click. + * @function + * @private + */ + _addBodyHandler() { + var $body = $(document.body), + _this = this; + $body.off('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu') + .on('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu', function(e) { + var $link = _this.$element.find(e.target); + if ($link.length) { return; } + + _this._hide(); + $body.off('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu'); + }); + } + + /** + * Opens a dropdown pane, and checks for collisions first. + * @param {jQuery} $sub - ul element that is a submenu to show + * @function + * @private + * @fires DropdownMenu#show + */ + _show($sub) { + var idx = this.$tabs.index(this.$tabs.filter(function(i, el) { + return $(el).find($sub).length > 0; + })); + var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent'); + this._hide($sibs, idx); + $sub.css('visibility', 'hidden').addClass('js-dropdown-active').attr({'aria-hidden': false}) + .parent('li.is-dropdown-submenu-parent').addClass('is-active') + .attr({'aria-expanded': true}); + var clear = Foundation.Box.ImNotTouchingYou($sub, null, true); + if (!clear) { + var oldClass = this.options.alignment === 'left' ? '-right' : '-left', + $parentLi = $sub.parent('.is-dropdown-submenu-parent'); + $parentLi.removeClass(`opens${oldClass}`).addClass(`opens-${this.options.alignment}`); + clear = Foundation.Box.ImNotTouchingYou($sub, null, true); + if (!clear) { + $parentLi.removeClass(`opens-${this.options.alignment}`).addClass('opens-inner'); + } + this.changed = true; + } + $sub.css('visibility', ''); + if (this.options.closeOnClick) { this._addBodyHandler(); } + /** + * Fires when the new dropdown pane is visible. + * @event DropdownMenu#show + */ + this.$element.trigger('show.zf.dropdownmenu', [$sub]); + } + + /** + * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything. + * @function + * @param {jQuery} $elem - element with a submenu to hide + * @param {Number} idx - index of the $tabs collection to hide + * @private + */ + _hide($elem, idx) { + var $toClose; + if ($elem && $elem.length) { + $toClose = $elem; + } else if (idx !== undefined) { + $toClose = this.$tabs.not(function(i, el) { + return i === idx; + }); + } + else { + $toClose = this.$element; + } + var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0; + + if (somethingToClose) { + $toClose.find('li.is-active').add($toClose).attr({ + 'aria-expanded': false, + 'data-is-click': false + }).removeClass('is-active'); + + $toClose.find('ul.js-dropdown-active').attr({ + 'aria-hidden': true + }).removeClass('js-dropdown-active'); + + if (this.changed || $toClose.find('opens-inner').length) { + var oldClass = this.options.alignment === 'left' ? 'right' : 'left'; + $toClose.find('li.is-dropdown-submenu-parent').add($toClose) + .removeClass(`opens-inner opens-${this.options.alignment}`) + .addClass(`opens-${oldClass}`); + this.changed = false; + } + /** + * Fires when the open menus are closed. + * @event DropdownMenu#hide + */ + this.$element.trigger('hide.zf.dropdownmenu', [$toClose]); + } + } + + /** + * Destroys the plugin. + * @function + */ + destroy() { + this.$menuItems.off('.zf.dropdownmenu').removeAttr('data-is-click') + .removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner'); + $(document.body).off('.zf.dropdownmenu'); + Foundation.Nest.Burn(this.$element, 'dropdown'); + Foundation.unregisterPlugin(this); + } +} + +/** + * Default settings for plugin + */ +DropdownMenu.defaults = { + /** + * Disallows hover events from opening submenus + * @option + * @example false + */ + disableHover: false, + /** + * Allow a submenu to automatically close on a mouseleave event, if not clicked open. + * @option + * @example true + */ + autoclose: true, + /** + * Amount of time to delay opening a submenu on hover event. + * @option + * @example 50 + */ + hoverDelay: 50, + /** + * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu. + * @option + * @example true + */ + clickOpen: false, + /** + * Amount of time to delay closing a submenu on a mouseleave event. + * @option + * @example 500 + */ + + closingTime: 500, + /** + * Position of the menu relative to what direction the submenus should open. Handled by JS. + * @option + * @example 'left' + */ + alignment: 'left', + /** + * Allow clicks on the body to close any open submenus. + * @option + * @example true + */ + closeOnClick: true, + /** + * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class. + * @option + * @example 'vertical' + */ + verticalClass: 'vertical', + /** + * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class. + * @option + * @example 'align-right' + */ + rightClass: 'align-right', + /** + * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile. + * @option + * @example false + */ + forceFollow: true +}; + +// Window exports +Foundation.plugin(DropdownMenu, 'DropdownMenu'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.equalizer.js b/libraries/foundation-6/js/foundation.equalizer.js new file mode 100755 index 00000000..eead23af --- /dev/null +++ b/libraries/foundation-6/js/foundation.equalizer.js @@ -0,0 +1,306 @@ +'use strict'; + +!function($) { + +/** + * Equalizer module. + * @module foundation.equalizer + */ + +class Equalizer { + /** + * Creates a new instance of Equalizer. + * @class + * @fires Equalizer#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options){ + this.$element = element; + this.options = $.extend({}, Equalizer.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Equalizer'); + } + + /** + * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load. + * @private + */ + _init() { + var eqId = this.$element.attr('data-equalizer') || ''; + var $watched = this.$element.find(`[data-equalizer-watch="${eqId}"]`); + + this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]'); + this.$element.attr('data-resize', (eqId || Foundation.GetYoDigits(6, 'eq'))); + + this.hasNested = this.$element.find('[data-equalizer]').length > 0; + this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0; + this.isOn = false; + this._bindHandler = { + onResizeMeBound: this._onResizeMe.bind(this), + onPostEqualizedBound: this._onPostEqualized.bind(this) + }; + + var imgs = this.$element.find('img'); + var tooSmall; + if(this.options.equalizeOn){ + tooSmall = this._checkMQ(); + $(window).on('changed.zf.mediaquery', this._checkMQ.bind(this)); + }else{ + this._events(); + } + if((tooSmall !== undefined && tooSmall === false) || tooSmall === undefined){ + if(imgs.length){ + Foundation.onImagesLoaded(imgs, this._reflow.bind(this)); + }else{ + this._reflow(); + } + } + } + + /** + * Removes event listeners if the breakpoint is too small. + * @private + */ + _pauseEvents() { + this.isOn = false; + this.$element.off({ + '.zf.equalizer': this._bindHandler.onPostEqualizedBound, + 'resizeme.zf.trigger': this._bindHandler.onResizeMeBound + }); + } + + /** + * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound + * @private + */ + _onResizeMe(e) { + this._reflow(); + } + + /** + * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound + * @private + */ + _onPostEqualized(e) { + if(e.target !== this.$element[0]){ this._reflow(); } + } + + /** + * Initializes events for Equalizer. + * @private + */ + _events() { + var _this = this; + this._pauseEvents(); + if(this.hasNested){ + this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound); + }else{ + this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound); + } + this.isOn = true; + } + + /** + * Checks the current breakpoint to the minimum required size. + * @private + */ + _checkMQ() { + var tooSmall = !Foundation.MediaQuery.atLeast(this.options.equalizeOn); + if(tooSmall){ + if(this.isOn){ + this._pauseEvents(); + this.$watched.css('height', 'auto'); + } + }else{ + if(!this.isOn){ + this._events(); + } + } + return tooSmall; + } + + /** + * A noop version for the plugin + * @private + */ + _killswitch() { + return; + } + + /** + * Calls necessary functions to update Equalizer upon DOM change + * @private + */ + _reflow() { + if(!this.options.equalizeOnStack){ + if(this._isStacked()){ + this.$watched.css('height', 'auto'); + return false; + } + } + if (this.options.equalizeByRow) { + this.getHeightsByRow(this.applyHeightByRow.bind(this)); + }else{ + this.getHeights(this.applyHeight.bind(this)); + } + } + + /** + * Manually determines if the first 2 elements are *NOT* stacked. + * @private + */ + _isStacked() { + return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top; + } + + /** + * Finds the outer heights of children contained within an Equalizer parent and returns them in an array + * @param {Function} cb - A non-optional callback to return the heights array to. + * @returns {Array} heights - An array of heights of children within Equalizer container + */ + getHeights(cb) { + var heights = []; + for(var i = 0, len = this.$watched.length; i < len; i++){ + this.$watched[i].style.height = 'auto'; + heights.push(this.$watched[i].offsetHeight); + } + cb(heights); + } + + /** + * Finds the outer heights of children contained within an Equalizer parent and returns them in an array + * @param {Function} cb - A non-optional callback to return the heights array to. + * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child + */ + getHeightsByRow(cb) { + var lastElTopOffset = (this.$watched.length ? this.$watched.first().offset().top : 0), + groups = [], + group = 0; + //group by Row + groups[group] = []; + for(var i = 0, len = this.$watched.length; i < len; i++){ + this.$watched[i].style.height = 'auto'; + //maybe could use this.$watched[i].offsetTop + var elOffsetTop = $(this.$watched[i]).offset().top; + if (elOffsetTop!=lastElTopOffset) { + group++; + groups[group] = []; + lastElTopOffset=elOffsetTop; + } + groups[group].push([this.$watched[i],this.$watched[i].offsetHeight]); + } + + for (var j = 0, ln = groups.length; j < ln; j++) { + var heights = $(groups[j]).map(function(){ return this[1]; }).get(); + var max = Math.max.apply(null, heights); + groups[j].push(max); + } + cb(groups); + } + + /** + * Changes the CSS height property of each child in an Equalizer parent to match the tallest + * @param {array} heights - An array of heights of children within Equalizer container + * @fires Equalizer#preequalized + * @fires Equalizer#postequalized + */ + applyHeight(heights) { + var max = Math.max.apply(null, heights); + /** + * Fires before the heights are applied + * @event Equalizer#preequalized + */ + this.$element.trigger('preequalized.zf.equalizer'); + + this.$watched.css('height', max); + + /** + * Fires when the heights have been applied + * @event Equalizer#postequalized + */ + this.$element.trigger('postequalized.zf.equalizer'); + } + + /** + * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row + * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child + * @fires Equalizer#preequalized + * @fires Equalizer#preequalizedRow + * @fires Equalizer#postequalizedRow + * @fires Equalizer#postequalized + */ + applyHeightByRow(groups) { + /** + * Fires before the heights are applied + */ + this.$element.trigger('preequalized.zf.equalizer'); + for (var i = 0, len = groups.length; i < len ; i++) { + var groupsILength = groups[i].length, + max = groups[i][groupsILength - 1]; + if (groupsILength<=2) { + $(groups[i][0][0]).css({'height':'auto'}); + continue; + } + /** + * Fires before the heights per row are applied + * @event Equalizer#preequalizedRow + */ + this.$element.trigger('preequalizedrow.zf.equalizer'); + for (var j = 0, lenJ = (groupsILength-1); j < lenJ ; j++) { + $(groups[i][j][0]).css({'height':max}); + } + /** + * Fires when the heights per row have been applied + * @event Equalizer#postequalizedRow + */ + this.$element.trigger('postequalizedrow.zf.equalizer'); + } + /** + * Fires when the heights have been applied + */ + this.$element.trigger('postequalized.zf.equalizer'); + } + + /** + * Destroys an instance of Equalizer. + * @function + */ + destroy() { + this._pauseEvents(); + this.$watched.css('height', 'auto'); + + Foundation.unregisterPlugin(this); + } +} + +/** + * Default settings for plugin + */ +Equalizer.defaults = { + /** + * Enable height equalization when stacked on smaller screens. + * @option + * @example true + */ + equalizeOnStack: false, + /** + * Enable height equalization row by row. + * @option + * @example false + */ + equalizeByRow: false, + /** + * String representing the minimum breakpoint size the plugin should equalize heights on. + * @option + * @example 'medium' + */ + equalizeOn: '' +}; + +// Window exports +Foundation.plugin(Equalizer, 'Equalizer'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.interchange.js b/libraries/foundation-6/js/foundation.interchange.js new file mode 100755 index 00000000..1a15ff01 --- /dev/null +++ b/libraries/foundation-6/js/foundation.interchange.js @@ -0,0 +1,198 @@ +'use strict'; + +!function($) { + +/** + * Interchange module. + * @module foundation.interchange + * @requires foundation.util.mediaQuery + * @requires foundation.util.timerAndImageLoader + */ + +class Interchange { + /** + * Creates a new instance of Interchange. + * @class + * @fires Interchange#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options) { + this.$element = element; + this.options = $.extend({}, Interchange.defaults, options); + this.rules = []; + this.currentPath = ''; + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'Interchange'); + } + + /** + * Initializes the Interchange plugin and calls functions to get interchange functioning on load. + * @function + * @private + */ + _init() { + this._addBreakpoints(); + this._generateRules(); + this._reflow(); + } + + /** + * Initializes events for Interchange. + * @function + * @private + */ + _events() { + $(window).on('resize.zf.interchange', Foundation.util.throttle(this._reflow.bind(this), 50)); + } + + /** + * Calls necessary functions to update Interchange upon DOM change + * @function + * @private + */ + _reflow() { + var match; + + // Iterate through each rule, but only save the last match + for (var i in this.rules) { + if(this.rules.hasOwnProperty(i)) { + var rule = this.rules[i]; + + if (window.matchMedia(rule.query).matches) { + match = rule; + } + } + } + + if (match) { + this.replace(match.path); + } + } + + /** + * Gets the Foundation breakpoints and adds them to the Interchange.SPECIAL_QUERIES object. + * @function + * @private + */ + _addBreakpoints() { + for (var i in Foundation.MediaQuery.queries) { + if (Foundation.MediaQuery.queries.hasOwnProperty(i)) { + var query = Foundation.MediaQuery.queries[i]; + Interchange.SPECIAL_QUERIES[query.name] = query.value; + } + } + } + + /** + * Checks the Interchange element for the provided media query + content pairings + * @function + * @private + * @param {Object} element - jQuery object that is an Interchange instance + * @returns {Array} scenarios - Array of objects that have 'mq' and 'path' keys with corresponding keys + */ + _generateRules(element) { + var rulesList = []; + var rules; + + if (this.options.rules) { + rules = this.options.rules; + } + else { + rules = this.$element.data('interchange').match(/\[.*?\]/g); + } + + for (var i in rules) { + if(rules.hasOwnProperty(i)) { + var rule = rules[i].slice(1, -1).split(', '); + var path = rule.slice(0, -1).join(''); + var query = rule[rule.length - 1]; + + if (Interchange.SPECIAL_QUERIES[query]) { + query = Interchange.SPECIAL_QUERIES[query]; + } + + rulesList.push({ + path: path, + query: query + }); + } + } + + this.rules = rulesList; + } + + /** + * Update the `src` property of an image, or change the HTML of a container, to the specified path. + * @function + * @param {String} path - Path to the image or HTML partial. + * @fires Interchange#replaced + */ + replace(path) { + if (this.currentPath === path) return; + + var _this = this, + trigger = 'replaced.zf.interchange'; + + // Replacing images + if (this.$element[0].nodeName === 'IMG') { + this.$element.attr('src', path).load(function() { + _this.currentPath = path; + }) + .trigger(trigger); + } + // Replacing background images + else if (path.match(/\.(gif|jpg|jpeg|png|svg|tiff)([?#].*)?/i)) { + this.$element.css({ 'background-image': 'url('+path+')' }) + .trigger(trigger); + } + // Replacing HTML + else { + $.get(path, function(response) { + _this.$element.html(response) + .trigger(trigger); + $(response).foundation(); + _this.currentPath = path; + }); + } + + /** + * Fires when content in an Interchange element is done being loaded. + * @event Interchange#replaced + */ + // this.$element.trigger('replaced.zf.interchange'); + } + + /** + * Destroys an instance of interchange. + * @function + */ + destroy() { + //TODO this. + } +} + +/** + * Default settings for plugin + */ +Interchange.defaults = { + /** + * Rules to be applied to Interchange elements. Set with the `data-interchange` array notation. + * @option + */ + rules: null +}; + +Interchange.SPECIAL_QUERIES = { + 'landscape': 'screen and (orientation: landscape)', + 'portrait': 'screen and (orientation: portrait)', + 'retina': 'only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)' +}; + +// Window exports +Foundation.plugin(Interchange, 'Interchange'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.js b/libraries/foundation-6/js/foundation.js index 87e04589..63b04ace 100644 --- a/libraries/foundation-6/js/foundation.js +++ b/libraries/foundation-6/js/foundation.js @@ -2,7 +2,7 @@ "use strict"; - var FOUNDATION_VERSION = '6.2.2'; + var FOUNDATION_VERSION = '6.2.3'; // Global Foundation object // This is attached to the window, or used as a module for AMD/Browserify @@ -388,217 +388,197 @@ !function ($) { - // Default set of media queries - var defaultQueries = { - 'default': 'only screen', - landscape: 'only screen and (orientation: landscape)', - portrait: 'only screen and (orientation: portrait)', - retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)' + Foundation.Box = { + ImNotTouchingYou: ImNotTouchingYou, + GetDimensions: GetDimensions, + GetOffsets: GetOffsets }; - var MediaQuery = { - queries: [], - - current: '', - - /** - * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher. - * @function - * @private - */ - _init: function () { - var self = this; - var extractedStyles = $('.foundation-mq').css('font-family'); - var namedQueries; + /** + * Compares the dimensions of an element to a container and determines collision events with container. + * @function + * @param {jQuery} element - jQuery object to test for collisions. + * @param {jQuery} parent - jQuery object to use as bounding container. + * @param {Boolean} lrOnly - set to true to check left and right values only. + * @param {Boolean} tbOnly - set to true to check top and bottom values only. + * @default if no parent object passed, detects collisions with `window`. + * @returns {Boolean} - true if collision free, false if a collision in any direction. + */ + function ImNotTouchingYou(element, parent, lrOnly, tbOnly) { + var eleDims = GetDimensions(element), + top, + bottom, + left, + right; - namedQueries = parseStyleToObject(extractedStyles); + if (parent) { + var parDims = GetDimensions(parent); - for (var key in namedQueries) { - if (namedQueries.hasOwnProperty(key)) { - self.queries.push({ - name: key, - value: 'only screen and (min-width: ' + namedQueries[key] + ')' - }); - } - } + bottom = eleDims.offset.top + eleDims.height <= parDims.height + parDims.offset.top; + top = eleDims.offset.top >= parDims.offset.top; + left = eleDims.offset.left >= parDims.offset.left; + right = eleDims.offset.left + eleDims.width <= parDims.width + parDims.offset.left; + } else { + bottom = eleDims.offset.top + eleDims.height <= eleDims.windowDims.height + eleDims.windowDims.offset.top; + top = eleDims.offset.top >= eleDims.windowDims.offset.top; + left = eleDims.offset.left >= eleDims.windowDims.offset.left; + right = eleDims.offset.left + eleDims.width <= eleDims.windowDims.width; + } - this.current = this._getCurrentSize(); + var allDirs = [bottom, top, left, right]; - this._watcher(); - }, + if (lrOnly) { + return left === right === true; + } + if (tbOnly) { + return top === bottom === true; + } - /** - * Checks if the screen is at least as wide as a breakpoint. - * @function - * @param {String} size - Name of the breakpoint to check. - * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller. - */ - atLeast: function (size) { - var query = this.get(size); + return allDirs.indexOf(false) === -1; + }; - if (query) { - return window.matchMedia(query).matches; - } + /** + * Uses native methods to return an object of dimension values. + * @function + * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window. + * @returns {Object} - nested object of integer pixel values + * TODO - if element is window, return only those values. + */ + function GetDimensions(elem, test) { + elem = elem.length ? elem[0] : elem; - return false; - }, + if (elem === window || elem === document) { + throw new Error("I'm sorry, Dave. I'm afraid I can't do that."); + } + var rect = elem.getBoundingClientRect(), + parRect = elem.parentNode.getBoundingClientRect(), + winRect = document.body.getBoundingClientRect(), + winY = window.pageYOffset, + winX = window.pageXOffset; - /** - * Gets the media query of a breakpoint. - * @function - * @param {String} size - Name of the breakpoint to get. - * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist. - */ - get: function (size) { - for (var i in this.queries) { - if (this.queries.hasOwnProperty(i)) { - var query = this.queries[i]; - if (size === query.name) return query.value; + return { + width: rect.width, + height: rect.height, + offset: { + top: rect.top + winY, + left: rect.left + winX + }, + parentDims: { + width: parRect.width, + height: parRect.height, + offset: { + top: parRect.top + winY, + left: parRect.left + winX } - } - - return null; - }, - - - /** - * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one). - * @function - * @private - * @returns {String} Name of the current breakpoint. - */ - _getCurrentSize: function () { - var matched; - - for (var i = 0; i < this.queries.length; i++) { - var query = this.queries[i]; - - if (window.matchMedia(query.value).matches) { - matched = query; + }, + windowDims: { + width: winRect.width, + height: winRect.height, + offset: { + top: winY, + left: winX } } - - if (typeof matched === 'object') { - return matched.name; - } else { - return matched; - } - }, - - - /** - * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes. - * @function - * @private - */ - _watcher: function () { - var _this = this; - - $(window).on('resize.zf.mediaquery', function () { - var newSize = _this._getCurrentSize(), - currentSize = _this.current; - - if (newSize !== currentSize) { - // Change the current media query - _this.current = newSize; - - // Broadcast the media query change on the window - $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]); - } - }); - } - }; - - Foundation.MediaQuery = MediaQuery; - - // matchMedia() polyfill - Test a CSS media type/query in JS. - // Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license - window.matchMedia || (window.matchMedia = function () { - 'use strict'; - - // For browsers that support matchMedium api such as IE 9 and webkit - - var styleMedia = window.styleMedia || window.media; - - // For those that don't support matchMedium - if (!styleMedia) { - var style = document.createElement('style'), - script = document.getElementsByTagName('script')[0], - info = null; - - style.type = 'text/css'; - style.id = 'matchmediajs-test'; - - script.parentNode.insertBefore(style, script); - - // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers - info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle; - - styleMedia = { - matchMedium: function (media) { - var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; - - // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers - if (style.styleSheet) { - style.styleSheet.cssText = text; - } else { - style.textContent = text; - } - - // Test if media query is true or false - return info.width === '1px'; - } - }; - } - - return function (media) { - return { - matches: styleMedia.matchMedium(media || 'all'), - media: media || 'all' - }; }; - }()); - - // Thank you: https://github.com/sindresorhus/query-string - function parseStyleToObject(str) { - var styleObject = {}; - - if (typeof str !== 'string') { - return styleObject; - } + } - str = str.trim().slice(1, -1); // browsers re-quote string style values + /** + * Returns an object of top and left integer pixel values for dynamically rendered elements, + * such as: Tooltip, Reveal, and Dropdown + * @function + * @param {jQuery} element - jQuery object for the element being positioned. + * @param {jQuery} anchor - jQuery object for the element's anchor point. + * @param {String} position - a string relating to the desired position of the element, relative to it's anchor + * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element. + * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element. + * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset. + * TODO alter/rewrite to work with `em` values as well/instead of pixels + */ + function GetOffsets(element, anchor, position, vOffset, hOffset, isOverflow) { + var $eleDims = GetDimensions(element), + $anchorDims = anchor ? GetDimensions(anchor) : null; - if (!str) { - return styleObject; + switch (position) { + case 'top': + return { + left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left, + top: $anchorDims.offset.top - ($eleDims.height + vOffset) + }; + break; + case 'left': + return { + left: $anchorDims.offset.left - ($eleDims.width + hOffset), + top: $anchorDims.offset.top + }; + break; + case 'right': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset, + top: $anchorDims.offset.top + }; + break; + case 'center top': + return { + left: $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2, + top: $anchorDims.offset.top - ($eleDims.height + vOffset) + }; + break; + case 'center bottom': + return { + left: isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2, + top: $anchorDims.offset.top + $anchorDims.height + vOffset + }; + break; + case 'center left': + return { + left: $anchorDims.offset.left - ($eleDims.width + hOffset), + top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2 + }; + break; + case 'center right': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset + 1, + top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2 + }; + break; + case 'center': + return { + left: $eleDims.windowDims.offset.left + $eleDims.windowDims.width / 2 - $eleDims.width / 2, + top: $eleDims.windowDims.offset.top + $eleDims.windowDims.height / 2 - $eleDims.height / 2 + }; + break; + case 'reveal': + return { + left: ($eleDims.windowDims.width - $eleDims.width) / 2, + top: $eleDims.windowDims.offset.top + vOffset + }; + case 'reveal full': + return { + left: $eleDims.windowDims.offset.left, + top: $eleDims.windowDims.offset.top + }; + break; + case 'left bottom': + return { + left: $anchorDims.offset.left - ($eleDims.width + hOffset), + top: $anchorDims.offset.top + $anchorDims.height + }; + break; + case 'right bottom': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset - $eleDims.width, + top: $anchorDims.offset.top + $anchorDims.height + }; + break; + default: + return { + left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left, + top: $anchorDims.offset.top + $anchorDims.height + vOffset + }; } - - styleObject = str.split('&').reduce(function (ret, param) { - var parts = param.replace(/\+/g, ' ').split('='); - var key = parts[0]; - var val = parts[1]; - key = decodeURIComponent(key); - - // missing `=` should be `null`: - // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters - val = val === undefined ? null : decodeURIComponent(val); - - if (!ret.hasOwnProperty(key)) { - ret[key] = val; - } else if (Array.isArray(ret[key])) { - ret[key].push(val); - } else { - ret[key] = [ret[key], val]; - } - return ret; - }, {}); - - return styleObject; } - - Foundation.MediaQuery = MediaQuery; }(jQuery); /******************************************* * * @@ -694,640 +674,417 @@ if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { return false; } //only have visible elements and those that have a tabindex greater or equal 0 - return true; - }); - }, - - - /** - * Returns the component name name - * @param {Object} component - Foundation component, e.g. Slider or Reveal - * @return String componentName - */ - - register: function (componentName, cmds) { - commands[componentName] = cmds; - } - }; - - /* - * Constants for easier comparing. - * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE - */ - function getKeyCodes(kcs) { - var k = {}; - for (var kc in kcs) { - k[kcs[kc]] = kcs[kc]; - }return k; - } - - Foundation.Keyboard = Keyboard; -}(jQuery); -'use strict'; - -!function ($) { - - /** - * Motion module. - * @module foundation.motion - */ - - var initClasses = ['mui-enter', 'mui-leave']; - var activeClasses = ['mui-enter-active', 'mui-leave-active']; - - var Motion = { - animateIn: function (element, animation, cb) { - animate(true, element, animation, cb); - }, - - animateOut: function (element, animation, cb) { - animate(false, element, animation, cb); - } - }; - - function Move(duration, elem, fn) { - var anim, - prog, - start = null; - // console.log('called'); - - function move(ts) { - if (!start) start = window.performance.now(); - // console.log(start, ts); - prog = ts - start; - fn.apply(elem); - - if (prog < duration) { - anim = window.requestAnimationFrame(move, elem); - } else { - window.cancelAnimationFrame(anim); - elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]); - } - } - anim = window.requestAnimationFrame(move); - } - - /** - * Animates an element in or out using a CSS transition class. - * @function - * @private - * @param {Boolean} isIn - Defines if the animation is in or out. - * @param {Object} element - jQuery or HTML object to animate. - * @param {String} animation - CSS class to use. - * @param {Function} cb - Callback to run when animation is finished. - */ - function animate(isIn, element, animation, cb) { - element = $(element).eq(0); - - if (!element.length) return; - - var initClass = isIn ? initClasses[0] : initClasses[1]; - var activeClass = isIn ? activeClasses[0] : activeClasses[1]; - - // Set up the animation - reset(); - - element.addClass(animation).css('transition', 'none'); - - requestAnimationFrame(function () { - element.addClass(initClass); - if (isIn) element.show(); - }); + return true; + }); + }, - // Start the animation - requestAnimationFrame(function () { - element[0].offsetWidth; - element.css('transition', '').addClass(activeClass); - }); - // Clean up the animation when it finishes - element.one(Foundation.transitionend(element), finish); + /** + * Returns the component name name + * @param {Object} component - Foundation component, e.g. Slider or Reveal + * @return String componentName + */ - // Hides the element (for out animations), resets the element, and runs a callback - function finish() { - if (!isIn) element.hide(); - reset(); - if (cb) cb.apply(element); + register: function (componentName, cmds) { + commands[componentName] = cmds; } + }; - // Resets transitions and removes motion-specific classes - function reset() { - element[0].style.transitionDuration = 0; - element.removeClass(initClass + ' ' + activeClass + ' ' + animation); - } + /* + * Constants for easier comparing. + * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE + */ + function getKeyCodes(kcs) { + var k = {}; + for (var kc in kcs) { + k[kcs[kc]] = kcs[kc]; + }return k; } - Foundation.Move = Move; - Foundation.Motion = Motion; + Foundation.Keyboard = Keyboard; }(jQuery); 'use strict'; !function ($) { - var Nest = { - Feather: function (menu) { - var type = arguments.length <= 1 || arguments[1] === undefined ? 'zf' : arguments[1]; + // Default set of media queries + var defaultQueries = { + 'default': 'only screen', + landscape: 'only screen and (orientation: landscape)', + portrait: 'only screen and (orientation: portrait)', + retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)' + }; - menu.attr('role', 'menubar'); + var MediaQuery = { + queries: [], - var items = menu.find('li').attr({ 'role': 'menuitem' }), - subMenuClass = 'is-' + type + '-submenu', - subItemClass = subMenuClass + '-item', - hasSubClass = 'is-' + type + '-submenu-parent'; + current: '', - menu.find('a:first').attr('tabindex', 0); + /** + * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher. + * @function + * @private + */ + _init: function () { + var self = this; + var extractedStyles = $('.foundation-mq').css('font-family'); + var namedQueries; - items.each(function () { - var $item = $(this), - $sub = $item.children('ul'); + namedQueries = parseStyleToObject(extractedStyles); - if ($sub.length) { - $item.addClass(hasSubClass).attr({ - 'aria-haspopup': true, - 'aria-expanded': false, - 'aria-label': $item.children('a:first').text() + for (var key in namedQueries) { + if (namedQueries.hasOwnProperty(key)) { + self.queries.push({ + name: key, + value: 'only screen and (min-width: ' + namedQueries[key] + ')' }); + } + } - $sub.addClass('submenu ' + subMenuClass).attr({ - 'data-submenu': '', - 'aria-hidden': true, - 'role': 'menu' - }); + this.current = this._getCurrentSize(); + + this._watcher(); + }, + + + /** + * Checks if the screen is at least as wide as a breakpoint. + * @function + * @param {String} size - Name of the breakpoint to check. + * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller. + */ + atLeast: function (size) { + var query = this.get(size); + + if (query) { + return window.matchMedia(query).matches; + } + + return false; + }, + + + /** + * Gets the media query of a breakpoint. + * @function + * @param {String} size - Name of the breakpoint to get. + * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist. + */ + get: function (size) { + for (var i in this.queries) { + if (this.queries.hasOwnProperty(i)) { + var query = this.queries[i]; + if (size === query.name) return query.value; } + } - if ($item.parent('[data-submenu]').length) { - $item.addClass('is-submenu-item ' + subItemClass); + return null; + }, + + + /** + * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one). + * @function + * @private + * @returns {String} Name of the current breakpoint. + */ + _getCurrentSize: function () { + var matched; + + for (var i = 0; i < this.queries.length; i++) { + var query = this.queries[i]; + + if (window.matchMedia(query.value).matches) { + matched = query; } - }); + } - return; + if (typeof matched === 'object') { + return matched.name; + } else { + return matched; + } }, - Burn: function (menu, type) { - var items = menu.find('li').removeAttr('tabindex'), - subMenuClass = 'is-' + type + '-submenu', - subItemClass = subMenuClass + '-item', - hasSubClass = 'is-' + type + '-submenu-parent'; - menu.find('*').removeClass(subMenuClass + ' ' + subItemClass + ' ' + hasSubClass + ' is-submenu-item submenu is-active').removeAttr('data-submenu').css('display', ''); - // console.log( menu.find('.' + subMenuClass + ', .' + subItemClass + ', .has-submenu, .is-submenu-item, .submenu, [data-submenu]') - // .removeClass(subMenuClass + ' ' + subItemClass + ' has-submenu is-submenu-item submenu') - // .removeAttr('data-submenu')); - // items.each(function(){ - // var $item = $(this), - // $sub = $item.children('ul'); - // if($item.parent('[data-submenu]').length){ - // $item.removeClass('is-submenu-item ' + subItemClass); - // } - // if($sub.length){ - // $item.removeClass('has-submenu'); - // $sub.removeClass('submenu ' + subMenuClass).removeAttr('data-submenu'); - // } - // }); + /** + * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes. + * @function + * @private + */ + _watcher: function () { + var _this = this; + + $(window).on('resize.zf.mediaquery', function () { + var newSize = _this._getCurrentSize(), + currentSize = _this.current; + + if (newSize !== currentSize) { + // Change the current media query + _this.current = newSize; + + // Broadcast the media query change on the window + $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]); + } + }); } }; - Foundation.Nest = Nest; -}(jQuery); -'use strict'; + Foundation.MediaQuery = MediaQuery; -!function ($) { + // matchMedia() polyfill - Test a CSS media type/query in JS. + // Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license + window.matchMedia || (window.matchMedia = function () { + 'use strict'; - Foundation.Box = { - ImNotTouchingYou: ImNotTouchingYou, - GetDimensions: GetDimensions, - GetOffsets: GetOffsets - }; + // For browsers that support matchMedium api such as IE 9 and webkit - /** - * Compares the dimensions of an element to a container and determines collision events with container. - * @function - * @param {jQuery} element - jQuery object to test for collisions. - * @param {jQuery} parent - jQuery object to use as bounding container. - * @param {Boolean} lrOnly - set to true to check left and right values only. - * @param {Boolean} tbOnly - set to true to check top and bottom values only. - * @default if no parent object passed, detects collisions with `window`. - * @returns {Boolean} - true if collision free, false if a collision in any direction. - */ - function ImNotTouchingYou(element, parent, lrOnly, tbOnly) { - var eleDims = GetDimensions(element), - top, - bottom, - left, - right; + var styleMedia = window.styleMedia || window.media; - if (parent) { - var parDims = GetDimensions(parent); + // For those that don't support matchMedium + if (!styleMedia) { + var style = document.createElement('style'), + script = document.getElementsByTagName('script')[0], + info = null; - bottom = eleDims.offset.top + eleDims.height <= parDims.height + parDims.offset.top; - top = eleDims.offset.top >= parDims.offset.top; - left = eleDims.offset.left >= parDims.offset.left; - right = eleDims.offset.left + eleDims.width <= parDims.width + parDims.offset.left; - } else { - bottom = eleDims.offset.top + eleDims.height <= eleDims.windowDims.height + eleDims.windowDims.offset.top; - top = eleDims.offset.top >= eleDims.windowDims.offset.top; - left = eleDims.offset.left >= eleDims.windowDims.offset.left; - right = eleDims.offset.left + eleDims.width <= eleDims.windowDims.width; + style.type = 'text/css'; + style.id = 'matchmediajs-test'; + + script.parentNode.insertBefore(style, script); + + // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers + info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle; + + styleMedia = { + matchMedium: function (media) { + var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; + + // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers + if (style.styleSheet) { + style.styleSheet.cssText = text; + } else { + style.textContent = text; + } + + // Test if media query is true or false + return info.width === '1px'; + } + }; } - var allDirs = [bottom, top, left, right]; + return function (media) { + return { + matches: styleMedia.matchMedium(media || 'all'), + media: media || 'all' + }; + }; + }()); - if (lrOnly) { - return left === right === true; - } + // Thank you: https://github.com/sindresorhus/query-string + function parseStyleToObject(str) { + var styleObject = {}; - if (tbOnly) { - return top === bottom === true; + if (typeof str !== 'string') { + return styleObject; } - return allDirs.indexOf(false) === -1; - }; - - /** - * Uses native methods to return an object of dimension values. - * @function - * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window. - * @returns {Object} - nested object of integer pixel values - * TODO - if element is window, return only those values. - */ - function GetDimensions(elem, test) { - elem = elem.length ? elem[0] : elem; + str = str.trim().slice(1, -1); // browsers re-quote string style values - if (elem === window || elem === document) { - throw new Error("I'm sorry, Dave. I'm afraid I can't do that."); + if (!str) { + return styleObject; } - var rect = elem.getBoundingClientRect(), - parRect = elem.parentNode.getBoundingClientRect(), - winRect = document.body.getBoundingClientRect(), - winY = window.pageYOffset, - winX = window.pageXOffset; + styleObject = str.split('&').reduce(function (ret, param) { + var parts = param.replace(/\+/g, ' ').split('='); + var key = parts[0]; + var val = parts[1]; + key = decodeURIComponent(key); - return { - width: rect.width, - height: rect.height, - offset: { - top: rect.top + winY, - left: rect.left + winX - }, - parentDims: { - width: parRect.width, - height: parRect.height, - offset: { - top: parRect.top + winY, - left: parRect.left + winX - } - }, - windowDims: { - width: winRect.width, - height: winRect.height, - offset: { - top: winY, - left: winX - } - } - }; - } + // missing `=` should be `null`: + // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters + val = val === undefined ? null : decodeURIComponent(val); - /** - * Returns an object of top and left integer pixel values for dynamically rendered elements, - * such as: Tooltip, Reveal, and Dropdown - * @function - * @param {jQuery} element - jQuery object for the element being positioned. - * @param {jQuery} anchor - jQuery object for the element's anchor point. - * @param {String} position - a string relating to the desired position of the element, relative to it's anchor - * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element. - * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element. - * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset. - * TODO alter/rewrite to work with `em` values as well/instead of pixels - */ - function GetOffsets(element, anchor, position, vOffset, hOffset, isOverflow) { - var $eleDims = GetDimensions(element), - $anchorDims = anchor ? GetDimensions(anchor) : null; + if (!ret.hasOwnProperty(key)) { + ret[key] = val; + } else if (Array.isArray(ret[key])) { + ret[key].push(val); + } else { + ret[key] = [ret[key], val]; + } + return ret; + }, {}); - switch (position) { - case 'top': - return { - left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left, - top: $anchorDims.offset.top - ($eleDims.height + vOffset) - }; - break; - case 'left': - return { - left: $anchorDims.offset.left - ($eleDims.width + hOffset), - top: $anchorDims.offset.top - }; - break; - case 'right': - return { - left: $anchorDims.offset.left + $anchorDims.width + hOffset, - top: $anchorDims.offset.top - }; - break; - case 'center top': - return { - left: $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2, - top: $anchorDims.offset.top - ($eleDims.height + vOffset) - }; - break; - case 'center bottom': - return { - left: isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2, - top: $anchorDims.offset.top + $anchorDims.height + vOffset - }; - break; - case 'center left': - return { - left: $anchorDims.offset.left - ($eleDims.width + hOffset), - top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2 - }; - break; - case 'center right': - return { - left: $anchorDims.offset.left + $anchorDims.width + hOffset + 1, - top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2 - }; - break; - case 'center': - return { - left: $eleDims.windowDims.offset.left + $eleDims.windowDims.width / 2 - $eleDims.width / 2, - top: $eleDims.windowDims.offset.top + $eleDims.windowDims.height / 2 - $eleDims.height / 2 - }; - break; - case 'reveal': - return { - left: ($eleDims.windowDims.width - $eleDims.width) / 2, - top: $eleDims.windowDims.offset.top + vOffset - }; - case 'reveal full': - return { - left: $eleDims.windowDims.offset.left, - top: $eleDims.windowDims.offset.top - }; - break; - case 'left bottom': - return { - left: $anchorDims.offset.left - ($eleDims.width + hOffset), - top: $anchorDims.offset.top + $anchorDims.height - }; - break; - case 'right bottom': - return { - left: $anchorDims.offset.left + $anchorDims.width + hOffset - $eleDims.width, - top: $anchorDims.offset.top + $anchorDims.height - }; - break; - default: - return { - left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left, - top: $anchorDims.offset.top + $anchorDims.height + vOffset - }; - } + return styleObject; } + + Foundation.MediaQuery = MediaQuery; }(jQuery); 'use strict'; !function ($) { - var MutationObserver = function () { - var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; - for (var i = 0; i < prefixes.length; i++) { - if (prefixes[i] + 'MutationObserver' in window) { - return window[prefixes[i] + 'MutationObserver']; - } - } - return false; - }(); - - var triggers = function (el, type) { - el.data(type).split(' ').forEach(function (id) { - $('#' + id)[type === 'close' ? 'trigger' : 'triggerHandler'](type + '.zf.trigger', [el]); - }); - }; - // Elements with [data-open] will reveal a plugin that supports it when clicked. - $(document).on('click.zf.trigger', '[data-open]', function () { - triggers($(this), 'open'); - }); - - // Elements with [data-close] will close a plugin that supports it when clicked. - // If used without a value on [data-close], the event will bubble, allowing it to close a parent component. - $(document).on('click.zf.trigger', '[data-close]', function () { - var id = $(this).data('close'); - if (id) { - triggers($(this), 'close'); - } else { - $(this).trigger('close.zf.trigger'); - } - }); + /** + * Motion module. + * @module foundation.motion + */ - // Elements with [data-toggle] will toggle a plugin that supports it when clicked. - $(document).on('click.zf.trigger', '[data-toggle]', function () { - triggers($(this), 'toggle'); - }); + var initClasses = ['mui-enter', 'mui-leave']; + var activeClasses = ['mui-enter-active', 'mui-leave-active']; - // Elements with [data-closable] will respond to close.zf.trigger events. - $(document).on('close.zf.trigger', '[data-closable]', function (e) { - e.stopPropagation(); - var animation = $(this).data('closable'); + var Motion = { + animateIn: function (element, animation, cb) { + animate(true, element, animation, cb); + }, - if (animation !== '') { - Foundation.Motion.animateOut($(this), animation, function () { - $(this).trigger('closed.zf'); - }); - } else { - $(this).fadeOut().trigger('closed.zf'); + animateOut: function (element, animation, cb) { + animate(false, element, animation, cb); } - }); - - $(document).on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', function () { - var id = $(this).data('toggle-focus'); - $('#' + id).triggerHandler('toggle.zf.trigger', [$(this)]); - }); - - /** - * Fires once after all other scripts have loaded - * @function - * @private - */ - $(window).load(function () { - checkListeners(); - }); + }; - function checkListeners() { - eventsListener(); - resizeListener(); - scrollListener(); - closemeListener(); - } + function Move(duration, elem, fn) { + var anim, + prog, + start = null; + // console.log('called'); - //******** only fires this function once on load, if there's something to watch ******** - function closemeListener(pluginName) { - var yetiBoxes = $('[data-yeti-box]'), - plugNames = ['dropdown', 'tooltip', 'reveal']; + function move(ts) { + if (!start) start = window.performance.now(); + // console.log(start, ts); + prog = ts - start; + fn.apply(elem); - if (pluginName) { - if (typeof pluginName === 'string') { - plugNames.push(pluginName); - } else if (typeof pluginName === 'object' && typeof pluginName[0] === 'string') { - plugNames.concat(pluginName); + if (prog < duration) { + anim = window.requestAnimationFrame(move, elem); } else { - console.error('Plugin names must be strings'); + window.cancelAnimationFrame(anim); + elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]); } } - if (yetiBoxes.length) { - var listeners = plugNames.map(function (name) { - return 'closeme.zf.' + name; - }).join(' '); + anim = window.requestAnimationFrame(move); + } - $(window).off(listeners).on(listeners, function (e, pluginId) { - var plugin = e.namespace.split('.')[0]; - var plugins = $('[data-' + plugin + ']').not('[data-yeti-box="' + pluginId + '"]'); + /** + * Animates an element in or out using a CSS transition class. + * @function + * @private + * @param {Boolean} isIn - Defines if the animation is in or out. + * @param {Object} element - jQuery or HTML object to animate. + * @param {String} animation - CSS class to use. + * @param {Function} cb - Callback to run when animation is finished. + */ + function animate(isIn, element, animation, cb) { + element = $(element).eq(0); - plugins.each(function () { - var _this = $(this); + if (!element.length) return; - _this.triggerHandler('close.zf.trigger', [_this]); - }); - }); - } - } + var initClass = isIn ? initClasses[0] : initClasses[1]; + var activeClass = isIn ? activeClasses[0] : activeClasses[1]; - function resizeListener(debounce) { - var timer = void 0, - $nodes = $('[data-resize]'); - if ($nodes.length) { - $(window).off('resize.zf.trigger').on('resize.zf.trigger', function (e) { - if (timer) { - clearTimeout(timer); - } + // Set up the animation + reset(); - timer = setTimeout(function () { + element.addClass(animation).css('transition', 'none'); - if (!MutationObserver) { - //fallback for IE 9 - $nodes.each(function () { - $(this).triggerHandler('resizeme.zf.trigger'); - }); - } - //trigger all listening elements and signal a resize event - $nodes.attr('data-events', "resize"); - }, debounce || 10); //default time to emit resize event - }); - } - } + requestAnimationFrame(function () { + element.addClass(initClass); + if (isIn) element.show(); + }); - function scrollListener(debounce) { - var timer = void 0, - $nodes = $('[data-scroll]'); - if ($nodes.length) { - $(window).off('scroll.zf.trigger').on('scroll.zf.trigger', function (e) { - if (timer) { - clearTimeout(timer); - } + // Start the animation + requestAnimationFrame(function () { + element[0].offsetWidth; + element.css('transition', '').addClass(activeClass); + }); - timer = setTimeout(function () { + // Clean up the animation when it finishes + element.one(Foundation.transitionend(element), finish); - if (!MutationObserver) { - //fallback for IE 9 - $nodes.each(function () { - $(this).triggerHandler('scrollme.zf.trigger'); - }); - } - //trigger all listening elements and signal a scroll event - $nodes.attr('data-events', "scroll"); - }, debounce || 10); //default time to emit scroll event - }); + // Hides the element (for out animations), resets the element, and runs a callback + function finish() { + if (!isIn) element.hide(); + reset(); + if (cb) cb.apply(element); } - } - function eventsListener() { - if (!MutationObserver) { - return false; + // Resets transitions and removes motion-specific classes + function reset() { + element[0].style.transitionDuration = 0; + element.removeClass(initClass + ' ' + activeClass + ' ' + animation); } - var nodes = document.querySelectorAll('[data-resize], [data-scroll], [data-mutate]'); + } - //element callback - var listeningElementsMutation = function (mutationRecordsList) { - var $target = $(mutationRecordsList[0].target); - //trigger the event handler for the element depending on type - switch ($target.attr("data-events")) { + Foundation.Move = Move; + Foundation.Motion = Motion; +}(jQuery); +'use strict'; - case "resize": - $target.triggerHandler('resizeme.zf.trigger', [$target]); - break; +!function ($) { - case "scroll": - $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); - break; + var Nest = { + Feather: function (menu) { + var type = arguments.length <= 1 || arguments[1] === undefined ? 'zf' : arguments[1]; - // case "mutate" : - // console.log('mutate', $target); - // $target.triggerHandler('mutate.zf.trigger'); - // - // //make sure we don't get stuck in an infinite loop from sloppy codeing - // if ($target.index('[data-mutate]') == $("[data-mutate]").length-1) { - // domMutationObserver(); - // } - // break; + menu.attr('role', 'menubar'); - default: - return false; - //nothing - } - }; + var items = menu.find('li').attr({ 'role': 'menuitem' }), + subMenuClass = 'is-' + type + '-submenu', + subItemClass = subMenuClass + '-item', + hasSubClass = 'is-' + type + '-submenu-parent'; - if (nodes.length) { - //for each element that needs to listen for resizing, scrolling, (or coming soon mutation) add a single observer - for (var i = 0; i <= nodes.length - 1; i++) { - var elementObserver = new MutationObserver(listeningElementsMutation); - elementObserver.observe(nodes[i], { attributes: true, childList: false, characterData: false, subtree: false, attributeFilter: ["data-events"] }); - } - } - } + menu.find('a:first').attr('tabindex', 0); - // ------------------------------------ + items.each(function () { + var $item = $(this), + $sub = $item.children('ul'); - // [PH] - // Foundation.CheckWatchers = checkWatchers; - Foundation.IHearYou = checkListeners; - // Foundation.ISeeYou = scrollListener; - // Foundation.IFeelYou = closemeListener; -}(jQuery); + if ($sub.length) { + $item.addClass(hasSubClass).attr({ + 'aria-haspopup': true, + 'aria-expanded': false, + 'aria-label': $item.children('a:first').text() + }); -// function domMutationObserver(debounce) { -// // !!! This is coming soon and needs more work; not active !!! // -// var timer, -// nodes = document.querySelectorAll('[data-mutate]'); -// // -// if (nodes.length) { -// // var MutationObserver = (function () { -// // var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; -// // for (var i=0; i < prefixes.length; i++) { -// // if (prefixes[i] + 'MutationObserver' in window) { -// // return window[prefixes[i] + 'MutationObserver']; -// // } -// // } -// // return false; -// // }()); -// -// -// //for the body, we need to listen for all changes effecting the style and class attributes -// var bodyObserver = new MutationObserver(bodyMutation); -// bodyObserver.observe(document.body, { attributes: true, childList: true, characterData: false, subtree:true, attributeFilter:["style", "class"]}); -// -// -// //body callback -// function bodyMutation(mutate) { -// //trigger all listening elements and signal a mutation event -// if (timer) { clearTimeout(timer); } -// -// timer = setTimeout(function() { -// bodyObserver.disconnect(); -// $('[data-mutate]').attr('data-events',"mutate"); -// }, debounce || 150); -// } -// } -// } + $sub.addClass('submenu ' + subMenuClass).attr({ + 'data-submenu': '', + 'aria-hidden': true, + 'role': 'menu' + }); + } + + if ($item.parent('[data-submenu]').length) { + $item.addClass('is-submenu-item ' + subItemClass); + } + }); + + return; + }, + Burn: function (menu, type) { + var items = menu.find('li').removeAttr('tabindex'), + subMenuClass = 'is-' + type + '-submenu', + subItemClass = subMenuClass + '-item', + hasSubClass = 'is-' + type + '-submenu-parent'; + + menu.find('*').removeClass(subMenuClass + ' ' + subItemClass + ' ' + hasSubClass + ' is-submenu-item submenu is-active').removeAttr('data-submenu').css('display', ''); + + // console.log( menu.find('.' + subMenuClass + ', .' + subItemClass + ', .has-submenu, .is-submenu-item, .submenu, [data-submenu]') + // .removeClass(subMenuClass + ' ' + subItemClass + ' has-submenu is-submenu-item submenu') + // .removeAttr('data-submenu')); + // items.each(function(){ + // var $item = $(this), + // $sub = $item.children('ul'); + // if($item.parent('[data-submenu]').length){ + // $item.removeClass('is-submenu-item ' + subItemClass); + // } + // if($sub.length){ + // $item.removeClass('has-submenu'); + // $sub.removeClass('submenu ' + subMenuClass).removeAttr('data-submenu'); + // } + // }); + } + }; + + Foundation.Nest = Nest; +}(jQuery); 'use strict'; !function ($) { @@ -1766,6 +1523,249 @@ */ 'use strict'; +!function ($) { + + var MutationObserver = function () { + var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; + for (var i = 0; i < prefixes.length; i++) { + if (prefixes[i] + 'MutationObserver' in window) { + return window[prefixes[i] + 'MutationObserver']; + } + } + return false; + }(); + + var triggers = function (el, type) { + el.data(type).split(' ').forEach(function (id) { + $('#' + id)[type === 'close' ? 'trigger' : 'triggerHandler'](type + '.zf.trigger', [el]); + }); + }; + // Elements with [data-open] will reveal a plugin that supports it when clicked. + $(document).on('click.zf.trigger', '[data-open]', function () { + triggers($(this), 'open'); + }); + + // Elements with [data-close] will close a plugin that supports it when clicked. + // If used without a value on [data-close], the event will bubble, allowing it to close a parent component. + $(document).on('click.zf.trigger', '[data-close]', function () { + var id = $(this).data('close'); + if (id) { + triggers($(this), 'close'); + } else { + $(this).trigger('close.zf.trigger'); + } + }); + + // Elements with [data-toggle] will toggle a plugin that supports it when clicked. + $(document).on('click.zf.trigger', '[data-toggle]', function () { + triggers($(this), 'toggle'); + }); + + // Elements with [data-closable] will respond to close.zf.trigger events. + $(document).on('close.zf.trigger', '[data-closable]', function (e) { + e.stopPropagation(); + var animation = $(this).data('closable'); + + if (animation !== '') { + Foundation.Motion.animateOut($(this), animation, function () { + $(this).trigger('closed.zf'); + }); + } else { + $(this).fadeOut().trigger('closed.zf'); + } + }); + + $(document).on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', function () { + var id = $(this).data('toggle-focus'); + $('#' + id).triggerHandler('toggle.zf.trigger', [$(this)]); + }); + + /** + * Fires once after all other scripts have loaded + * @function + * @private + */ + $(window).load(function () { + checkListeners(); + }); + + function checkListeners() { + eventsListener(); + resizeListener(); + scrollListener(); + closemeListener(); + } + + //******** only fires this function once on load, if there's something to watch ******** + function closemeListener(pluginName) { + var yetiBoxes = $('[data-yeti-box]'), + plugNames = ['dropdown', 'tooltip', 'reveal']; + + if (pluginName) { + if (typeof pluginName === 'string') { + plugNames.push(pluginName); + } else if (typeof pluginName === 'object' && typeof pluginName[0] === 'string') { + plugNames.concat(pluginName); + } else { + console.error('Plugin names must be strings'); + } + } + if (yetiBoxes.length) { + var listeners = plugNames.map(function (name) { + return 'closeme.zf.' + name; + }).join(' '); + + $(window).off(listeners).on(listeners, function (e, pluginId) { + var plugin = e.namespace.split('.')[0]; + var plugins = $('[data-' + plugin + ']').not('[data-yeti-box="' + pluginId + '"]'); + + plugins.each(function () { + var _this = $(this); + + _this.triggerHandler('close.zf.trigger', [_this]); + }); + }); + } + } + + function resizeListener(debounce) { + var timer = void 0, + $nodes = $('[data-resize]'); + if ($nodes.length) { + $(window).off('resize.zf.trigger').on('resize.zf.trigger', function (e) { + if (timer) { + clearTimeout(timer); + } + + timer = setTimeout(function () { + + if (!MutationObserver) { + //fallback for IE 9 + $nodes.each(function () { + $(this).triggerHandler('resizeme.zf.trigger'); + }); + } + //trigger all listening elements and signal a resize event + $nodes.attr('data-events', "resize"); + }, debounce || 10); //default time to emit resize event + }); + } + } + + function scrollListener(debounce) { + var timer = void 0, + $nodes = $('[data-scroll]'); + if ($nodes.length) { + $(window).off('scroll.zf.trigger').on('scroll.zf.trigger', function (e) { + if (timer) { + clearTimeout(timer); + } + + timer = setTimeout(function () { + + if (!MutationObserver) { + //fallback for IE 9 + $nodes.each(function () { + $(this).triggerHandler('scrollme.zf.trigger'); + }); + } + //trigger all listening elements and signal a scroll event + $nodes.attr('data-events', "scroll"); + }, debounce || 10); //default time to emit scroll event + }); + } + } + + function eventsListener() { + if (!MutationObserver) { + return false; + } + var nodes = document.querySelectorAll('[data-resize], [data-scroll], [data-mutate]'); + + //element callback + var listeningElementsMutation = function (mutationRecordsList) { + var $target = $(mutationRecordsList[0].target); + //trigger the event handler for the element depending on type + switch ($target.attr("data-events")) { + + case "resize": + $target.triggerHandler('resizeme.zf.trigger', [$target]); + break; + + case "scroll": + $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); + break; + + // case "mutate" : + // console.log('mutate', $target); + // $target.triggerHandler('mutate.zf.trigger'); + // + // //make sure we don't get stuck in an infinite loop from sloppy codeing + // if ($target.index('[data-mutate]') == $("[data-mutate]").length-1) { + // domMutationObserver(); + // } + // break; + + default: + return false; + //nothing + } + }; + + if (nodes.length) { + //for each element that needs to listen for resizing, scrolling, (or coming soon mutation) add a single observer + for (var i = 0; i <= nodes.length - 1; i++) { + var elementObserver = new MutationObserver(listeningElementsMutation); + elementObserver.observe(nodes[i], { attributes: true, childList: false, characterData: false, subtree: false, attributeFilter: ["data-events"] }); + } + } + } + + // ------------------------------------ + + // [PH] + // Foundation.CheckWatchers = checkWatchers; + Foundation.IHearYou = checkListeners; + // Foundation.ISeeYou = scrollListener; + // Foundation.IFeelYou = closemeListener; +}(jQuery); + +// function domMutationObserver(debounce) { +// // !!! This is coming soon and needs more work; not active !!! // +// var timer, +// nodes = document.querySelectorAll('[data-mutate]'); +// // +// if (nodes.length) { +// // var MutationObserver = (function () { +// // var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; +// // for (var i=0; i < prefixes.length; i++) { +// // if (prefixes[i] + 'MutationObserver' in window) { +// // return window[prefixes[i] + 'MutationObserver']; +// // } +// // } +// // return false; +// // }()); +// +// +// //for the body, we need to listen for all changes effecting the style and class attributes +// var bodyObserver = new MutationObserver(bodyMutation); +// bodyObserver.observe(document.body, { attributes: true, childList: true, characterData: false, subtree:true, attributeFilter:["style", "class"]}); +// +// +// //body callback +// function bodyMutation(mutate) { +// //trigger all listening elements and signal a mutation event +// if (timer) { clearTimeout(timer); } +// +// timer = setTimeout(function() { +// bodyObserver.disconnect(); +// $('[data-mutate]').attr('data-events',"mutate"); +// }, debounce || 150); +// } +// } +// } +'use strict'; + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -9066,4 +9066,4 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons // Window exports Foundation.plugin(Tooltip, 'Tooltip'); -}(jQuery); \ No newline at end of file +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.magellan.js b/libraries/foundation-6/js/foundation.magellan.js new file mode 100755 index 00000000..64b264c7 --- /dev/null +++ b/libraries/foundation-6/js/foundation.magellan.js @@ -0,0 +1,223 @@ +'use strict'; + +!function($) { + +/** + * Magellan module. + * @module foundation.magellan + */ + +class Magellan { + /** + * Creates a new instance of Magellan. + * @class + * @fires Magellan#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options) { + this.$element = element; + this.options = $.extend({}, Magellan.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Magellan'); + } + + /** + * Initializes the Magellan plugin and calls functions to get equalizer functioning on load. + * @private + */ + _init() { + var id = this.$element[0].id || Foundation.GetYoDigits(6, 'magellan'); + var _this = this; + this.$targets = $('[data-magellan-target]'); + this.$links = this.$element.find('a'); + this.$element.attr({ + 'data-resize': id, + 'data-scroll': id, + 'id': id + }); + this.$active = $(); + this.scrollPos = parseInt(window.pageYOffset, 10); + + this._events(); + } + + /** + * Calculates an array of pixel values that are the demarcation lines between locations on the page. + * Can be invoked if new elements are added or the size of a location changes. + * @function + */ + calcPoints() { + var _this = this, + body = document.body, + html = document.documentElement; + + this.points = []; + this.winHeight = Math.round(Math.max(window.innerHeight, html.clientHeight)); + this.docHeight = Math.round(Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight)); + + this.$targets.each(function(){ + var $tar = $(this), + pt = Math.round($tar.offset().top - _this.options.threshold); + $tar.targetPoint = pt; + _this.points.push(pt); + }); + } + + /** + * Initializes events for Magellan. + * @private + */ + _events() { + var _this = this, + $body = $('html, body'), + opts = { + duration: _this.options.animationDuration, + easing: _this.options.animationEasing + }; + $(window).one('load', function(){ + if(_this.options.deepLinking){ + if(location.hash){ + _this.scrollToLoc(location.hash); + } + } + _this.calcPoints(); + _this._updateActive(); + }); + + this.$element.on({ + 'resizeme.zf.trigger': this.reflow.bind(this), + 'scrollme.zf.trigger': this._updateActive.bind(this) + }).on('click.zf.magellan', 'a[href^="#"]', function(e) { + e.preventDefault(); + var arrival = this.getAttribute('href'); + _this.scrollToLoc(arrival); + }); + } + + /** + * Function to scroll to a given location on the page. + * @param {String} loc - a properly formatted jQuery id selector. Example: '#foo' + * @function + */ + scrollToLoc(loc) { + var scrollPos = Math.round($(loc).offset().top - this.options.threshold / 2 - this.options.barOffset); + + $('html, body').stop(true).animate({ scrollTop: scrollPos }, this.options.animationDuration, this.options.animationEasing); + } + + /** + * Calls necessary functions to update Magellan upon DOM change + * @function + */ + reflow() { + this.calcPoints(); + this._updateActive(); + } + + /** + * Updates the visibility of an active location link, and updates the url hash for the page, if deepLinking enabled. + * @private + * @function + * @fires Magellan#update + */ + _updateActive(/*evt, elem, scrollPos*/) { + var winPos = /*scrollPos ||*/ parseInt(window.pageYOffset, 10), + curIdx; + + if(winPos + this.winHeight === this.docHeight){ curIdx = this.points.length - 1; } + else if(winPos < this.points[0]){ curIdx = 0; } + else{ + var isDown = this.scrollPos < winPos, + _this = this, + curVisible = this.points.filter(function(p, i){ + return isDown ? p - _this.options.barOffset <= winPos : p - _this.options.barOffset - _this.options.threshold <= winPos; + }); + curIdx = curVisible.length ? curVisible.length - 1 : 0; + } + + this.$active.removeClass(this.options.activeClass); + this.$active = this.$links.eq(curIdx).addClass(this.options.activeClass); + + if(this.options.deepLinking){ + var hash = this.$active[0].getAttribute('href'); + if(window.history.pushState){ + window.history.pushState(null, null, hash); + }else{ + window.location.hash = hash; + } + } + + this.scrollPos = winPos; + /** + * Fires when magellan is finished updating to the new active element. + * @event Magellan#update + */ + this.$element.trigger('update.zf.magellan', [this.$active]); + } + + /** + * Destroys an instance of Magellan and resets the url of the window. + * @function + */ + destroy() { + this.$element.off('.zf.trigger .zf.magellan') + .find(`.${this.options.activeClass}`).removeClass(this.options.activeClass); + + if(this.options.deepLinking){ + var hash = this.$active[0].getAttribute('href'); + window.location.hash.replace(hash, ''); + } + + Foundation.unregisterPlugin(this); + } +} + +/** + * Default settings for plugin + */ +Magellan.defaults = { + /** + * Amount of time, in ms, the animated scrolling should take between locations. + * @option + * @example 500 + */ + animationDuration: 500, + /** + * Animation style to use when scrolling between locations. + * @option + * @example 'ease-in-out' + */ + animationEasing: 'linear', + /** + * Number of pixels to use as a marker for location changes. + * @option + * @example 50 + */ + threshold: 50, + /** + * Class applied to the active locations link on the magellan container. + * @option + * @example 'active' + */ + activeClass: 'active', + /** + * Allows the script to manipulate the url of the current page, and if supported, alter the history. + * @option + * @example true + */ + deepLinking: false, + /** + * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar. + * @option + * @example 25 + */ + barOffset: 0 +} + +// Window exports +Foundation.plugin(Magellan, 'Magellan'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.min.js b/libraries/foundation-6/js/foundation.min.js index d4812cc9..02b9150a 100644 --- a/libraries/foundation-6/js/foundation.min.js +++ b/libraries/foundation-6/js/foundation.min.js @@ -1,4 +1,4 @@ -function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}!function(t){"use strict";function e(t){if(void 0===Function.prototype.name){var e=/function\s([^(]{1,})\(/,i=e.exec(t.toString());return i&&i.length>1?i[1].trim():""}return void 0===t.prototype?t.constructor.name:t.prototype.constructor.name}function i(t){return/true/.test(t)?!0:/false/.test(t)?!1:isNaN(1*t)?t:parseFloat(t)}function n(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}var s="6.2.2",o={version:s,_plugins:{},_uuids:[],rtl:function(){return"rtl"===t("html").attr("dir")},plugin:function(t,i){var s=i||e(t),o=n(s);this._plugins[o]=this[s]=t},registerPlugin:function(t,i){var s=i?n(i):e(t.constructor).toLowerCase();t.uuid=this.GetYoDigits(6,s),t.$element.attr("data-"+s)||t.$element.attr("data-"+s,t.uuid),t.$element.data("zfPlugin")||t.$element.data("zfPlugin",t),t.$element.trigger("init.zf."+s),this._uuids.push(t.uuid)},unregisterPlugin:function(t){var i=n(e(t.$element.data("zfPlugin").constructor));this._uuids.splice(this._uuids.indexOf(t.uuid),1),t.$element.removeAttr("data-"+i).removeData("zfPlugin").trigger("destroyed.zf."+i);for(var s in t)t[s]=null},reInit:function(e){var i=e instanceof t;try{if(i)e.each(function(){t(this).data("zfPlugin")._init()});else{var s=typeof e,o=this,a={object:function(e){e.forEach(function(e){e=n(e),t("[data-"+e+"]").foundation("_init")})},string:function(){e=n(e),t("[data-"+e+"]").foundation("_init")},undefined:function(){this.object(Object.keys(o._plugins))}};a[s](e)}}catch(r){console.error(r)}finally{return e}},GetYoDigits:function(t,e){return t=t||6,Math.round(Math.pow(36,t+1)-Math.random()*Math.pow(36,t)).toString(36).slice(1)+(e?"-"+e:"")},reflow:function(e,n){"undefined"==typeof n?n=Object.keys(this._plugins):"string"==typeof n&&(n=[n]);var s=this;t.each(n,function(n,o){var a=s._plugins[o],r=t(e).find("[data-"+o+"]").addBack("[data-"+o+"]");r.each(function(){var e=t(this),n={};if(e.data("zfPlugin"))return void console.warn("Tried to initialize "+o+" on an element that already has a Foundation plugin.");if(e.attr("data-options")){e.attr("data-options").split(";").forEach(function(t,e){var s=t.split(":").map(function(t){return t.trim()});s[0]&&(n[s[0]]=i(s[1]))})}try{e.data("zfPlugin",new a(t(this),n))}catch(s){console.error(s)}finally{return}})})},getFnName:e,transitionend:function(t){var e,i={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend"},n=document.createElement("div");for(var s in i)"undefined"!=typeof n.style[s]&&(e=i[s]);return e?e:(e=setTimeout(function(){t.triggerHandler("transitionend",[t])},1),"transitionend")}};o.util={throttle:function(t,e){var i=null;return function(){var n=this,s=arguments;null===i&&(i=setTimeout(function(){t.apply(n,s),i=null},e))}}};var a=function(i){var n=typeof i,s=t("meta.foundation-mq"),a=t(".no-js");if(s.length||t('<meta class="foundation-mq">').appendTo(document.head),a.length&&a.removeClass("no-js"),"undefined"===n)o.MediaQuery._init(),o.reflow(this);else{if("string"!==n)throw new TypeError("We're sorry, "+n+" is not a valid parameter. You must use a string representing the method you wish to invoke.");var r=Array.prototype.slice.call(arguments,1),l=this.data("zfPlugin");if(void 0===l||void 0===l[i])throw new ReferenceError("We're sorry, '"+i+"' is not an available method for "+(l?e(l):"this element")+".");1===this.length?l[i].apply(l,r):this.each(function(e,n){l[i].apply(t(n).data("zfPlugin"),r)})}return this};window.Foundation=o,t.fn.foundation=a,function(){Date.now&&window.Date.now||(window.Date.now=Date.now=function(){return(new Date).getTime()});for(var t=["webkit","moz"],e=0;e<t.length&&!window.requestAnimationFrame;++e){var i=t[e];window.requestAnimationFrame=window[i+"RequestAnimationFrame"],window.cancelAnimationFrame=window[i+"CancelAnimationFrame"]||window[i+"CancelRequestAnimationFrame"]}if(/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)||!window.requestAnimationFrame||!window.cancelAnimationFrame){var n=0;window.requestAnimationFrame=function(t){var e=Date.now(),i=Math.max(n+16,e);return setTimeout(function(){t(n=i)},i-e)},window.cancelAnimationFrame=clearTimeout}window.performance&&window.performance.now||(window.performance={start:Date.now(),now:function(){return Date.now()-this.start}})}(),Function.prototype.bind||(Function.prototype.bind=function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var e=Array.prototype.slice.call(arguments,1),i=this,n=function(){},s=function(){return i.apply(this instanceof n?this:t,e.concat(Array.prototype.slice.call(arguments)))};return this.prototype&&(n.prototype=this.prototype),s.prototype=new n,s})}(jQuery),!function(t){function e(t){var e={};return"string"!=typeof t?e:(t=t.trim().slice(1,-1))?e=t.split("&").reduce(function(t,e){var i=e.replace(/\+/g," ").split("="),n=i[0],s=i[1];return n=decodeURIComponent(n),s=void 0===s?null:decodeURIComponent(s),t.hasOwnProperty(n)?Array.isArray(t[n])?t[n].push(s):t[n]=[t[n],s]:t[n]=s,t},{}):e}var i={queries:[],current:"",_init:function(){var i,n=this,s=t(".foundation-mq").css("font-family");i=e(s);for(var o in i)i.hasOwnProperty(o)&&n.queries.push({name:o,value:"only screen and (min-width: "+i[o]+")"});this.current=this._getCurrentSize(),this._watcher()},atLeast:function(t){var e=this.get(t);return e?window.matchMedia(e).matches:!1},get:function(t){for(var e in this.queries)if(this.queries.hasOwnProperty(e)){var i=this.queries[e];if(t===i.name)return i.value}return null},_getCurrentSize:function(){for(var t,e=0;e<this.queries.length;e++){var i=this.queries[e];window.matchMedia(i.value).matches&&(t=i)}return"object"==typeof t?t.name:t},_watcher:function(){var e=this;t(window).on("resize.zf.mediaquery",function(){var i=e._getCurrentSize(),n=e.current;i!==n&&(e.current=i,t(window).trigger("changed.zf.mediaquery",[i,n]))})}};Foundation.MediaQuery=i,window.matchMedia||(window.matchMedia=function(){"use strict";var t=window.styleMedia||window.media;if(!t){var e=document.createElement("style"),i=document.getElementsByTagName("script")[0],n=null;e.type="text/css",e.id="matchmediajs-test",i.parentNode.insertBefore(e,i),n="getComputedStyle"in window&&window.getComputedStyle(e,null)||e.currentStyle,t={matchMedium:function(t){var i="@media "+t+"{ #matchmediajs-test { width: 1px; } }";return e.styleSheet?e.styleSheet.cssText=i:e.textContent=i,"1px"===n.width}}}return function(e){return{matches:t.matchMedium(e||"all"),media:e||"all"}}}()),Foundation.MediaQuery=i}(jQuery),!function(t){function e(t){var e={};for(var i in t)e[t[i]]=t[i];return e}var i={9:"TAB",13:"ENTER",27:"ESCAPE",32:"SPACE",37:"ARROW_LEFT",38:"ARROW_UP",39:"ARROW_RIGHT",40:"ARROW_DOWN"},n={},s={keys:e(i),parseKey:function(t){var e=i[t.which||t.keyCode]||String.fromCharCode(t.which).toUpperCase();return t.shiftKey&&(e="SHIFT_"+e),t.ctrlKey&&(e="CTRL_"+e),t.altKey&&(e="ALT_"+e),e},handleKey:function(e,i,s){var o,a,r,l=n[i],u=this.parseKey(e);if(!l)return console.warn("Component not defined!");if(o="undefined"==typeof l.ltr?l:Foundation.rtl()?t.extend({},l.ltr,l.rtl):t.extend({},l.rtl,l.ltr),a=o[u],r=s[a],r&&"function"==typeof r){var d=r.apply();(s.handled||"function"==typeof s.handled)&&s.handled(d)}else(s.unhandled||"function"==typeof s.unhandled)&&s.unhandled()},findFocusable:function(e){return e.find("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]").filter(function(){return t(this).is(":visible")&&!(t(this).attr("tabindex")<0)})},register:function(t,e){n[t]=e}};Foundation.Keyboard=s}(jQuery),!function(t){function e(t,e,i){function n(r){a||(a=window.performance.now()),o=r-a,i.apply(e),t>o?s=window.requestAnimationFrame(n,e):(window.cancelAnimationFrame(s),e.trigger("finished.zf.animate",[e]).triggerHandler("finished.zf.animate",[e]))}var s,o,a=null;s=window.requestAnimationFrame(n)}function i(e,i,o,a){function r(){e||i.hide(),l(),a&&a.apply(i)}function l(){i[0].style.transitionDuration=0,i.removeClass(u+" "+d+" "+o)}if(i=t(i).eq(0),i.length){var u=e?n[0]:n[1],d=e?s[0]:s[1];l(),i.addClass(o).css("transition","none"),requestAnimationFrame(function(){i.addClass(u),e&&i.show()}),requestAnimationFrame(function(){i[0].offsetWidth,i.css("transition","").addClass(d)}),i.one(Foundation.transitionend(i),r)}}var n=["mui-enter","mui-leave"],s=["mui-enter-active","mui-leave-active"],o={animateIn:function(t,e,n){i(!0,t,e,n)},animateOut:function(t,e,n){i(!1,t,e,n)}};Foundation.Move=e,Foundation.Motion=o}(jQuery),!function(t){var e={Feather:function(e){var i=arguments.length<=1||void 0===arguments[1]?"zf":arguments[1];e.attr("role","menubar");var n=e.find("li").attr({role:"menuitem"}),s="is-"+i+"-submenu",o=s+"-item",a="is-"+i+"-submenu-parent";e.find("a:first").attr("tabindex",0),n.each(function(){var e=t(this),i=e.children("ul");i.length&&(e.addClass(a).attr({"aria-haspopup":!0,"aria-expanded":!1,"aria-label":e.children("a:first").text()}),i.addClass("submenu "+s).attr({"data-submenu":"","aria-hidden":!0,role:"menu"})),e.parent("[data-submenu]").length&&e.addClass("is-submenu-item "+o)})},Burn:function(t,e){var i=(t.find("li").removeAttr("tabindex"),"is-"+e+"-submenu"),n=i+"-item",s="is-"+e+"-submenu-parent";t.find("*").removeClass(i+" "+n+" "+s+" is-submenu-item submenu is-active").removeAttr("data-submenu").css("display","")}};Foundation.Nest=e}(jQuery),!function(t){function e(t,e,n,s){var o,a,r,l,u=i(t);if(e){var d=i(e);a=u.offset.top+u.height<=d.height+d.offset.top,o=u.offset.top>=d.offset.top,r=u.offset.left>=d.offset.left,l=u.offset.left+u.width<=d.width+d.offset.left}else a=u.offset.top+u.height<=u.windowDims.height+u.windowDims.offset.top,o=u.offset.top>=u.windowDims.offset.top,r=u.offset.left>=u.windowDims.offset.left,l=u.offset.left+u.width<=u.windowDims.width;var h=[a,o,r,l];return n?r===l==!0:s?o===a==!0:-1===h.indexOf(!1)}function i(t,e){if(t=t.length?t[0]:t,t===window||t===document)throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");var i=t.getBoundingClientRect(),n=t.parentNode.getBoundingClientRect(),s=document.body.getBoundingClientRect(),o=window.pageYOffset,a=window.pageXOffset;return{width:i.width,height:i.height,offset:{top:i.top+o,left:i.left+a},parentDims:{width:n.width,height:n.height,offset:{top:n.top+o,left:n.left+a}},windowDims:{width:s.width,height:s.height,offset:{top:o,left:a}}}}function n(t,e,n,s,o,a){var r=i(t),l=e?i(e):null;switch(n){case"top":return{left:Foundation.rtl()?l.offset.left-r.width+l.width:l.offset.left,top:l.offset.top-(r.height+s)};case"left":return{left:l.offset.left-(r.width+o),top:l.offset.top};case"right":return{left:l.offset.left+l.width+o,top:l.offset.top};case"center top":return{left:l.offset.left+l.width/2-r.width/2,top:l.offset.top-(r.height+s)};case"center bottom":return{left:a?o:l.offset.left+l.width/2-r.width/2,top:l.offset.top+l.height+s};case"center left":return{left:l.offset.left-(r.width+o),top:l.offset.top+l.height/2-r.height/2};case"center right":return{left:l.offset.left+l.width+o+1,top:l.offset.top+l.height/2-r.height/2};case"center":return{left:r.windowDims.offset.left+r.windowDims.width/2-r.width/2,top:r.windowDims.offset.top+r.windowDims.height/2-r.height/2};case"reveal":return{left:(r.windowDims.width-r.width)/2,top:r.windowDims.offset.top+s};case"reveal full":return{left:r.windowDims.offset.left,top:r.windowDims.offset.top};case"left bottom":return{left:l.offset.left-(r.width+o),top:l.offset.top+l.height};case"right bottom":return{left:l.offset.left+l.width+o-r.width,top:l.offset.top+l.height};default:return{left:Foundation.rtl()?l.offset.left-r.width+l.width:l.offset.left,top:l.offset.top+l.height+s}}}Foundation.Box={ImNotTouchingYou:e,GetDimensions:i,GetOffsets:n}}(jQuery),!function(t){function e(){o(),n(),s(),i()}function i(e){var i=t("[data-yeti-box]"),n=["dropdown","tooltip","reveal"];if(e&&("string"==typeof e?n.push(e):"object"==typeof e&&"string"==typeof e[0]?n.concat(e):console.error("Plugin names must be strings")),i.length){var s=n.map(function(t){return"closeme.zf."+t}).join(" ");t(window).off(s).on(s,function(e,i){var n=e.namespace.split(".")[0],s=t("[data-"+n+"]").not('[data-yeti-box="'+i+'"]');s.each(function(){var e=t(this);e.triggerHandler("close.zf.trigger",[e])})})}}function n(e){var i=void 0,n=t("[data-resize]");n.length&&t(window).off("resize.zf.trigger").on("resize.zf.trigger",function(s){i&&clearTimeout(i),i=setTimeout(function(){a||n.each(function(){t(this).triggerHandler("resizeme.zf.trigger")}),n.attr("data-events","resize")},e||10)})}function s(e){var i=void 0,n=t("[data-scroll]");n.length&&t(window).off("scroll.zf.trigger").on("scroll.zf.trigger",function(s){i&&clearTimeout(i),i=setTimeout(function(){a||n.each(function(){t(this).triggerHandler("scrollme.zf.trigger")}),n.attr("data-events","scroll")},e||10)})}function o(){if(!a)return!1;var e=document.querySelectorAll("[data-resize], [data-scroll], [data-mutate]"),i=function(e){var i=t(e[0].target);switch(i.attr("data-events")){case"resize":i.triggerHandler("resizeme.zf.trigger",[i]);break;case"scroll":i.triggerHandler("scrollme.zf.trigger",[i,window.pageYOffset]);break;default:return!1}};if(e.length)for(var n=0;n<=e.length-1;n++){var s=new a(i);s.observe(e[n],{attributes:!0,childList:!1,characterData:!1,subtree:!1,attributeFilter:["data-events"]})}}var a=function(){for(var t=["WebKit","Moz","O","Ms",""],e=0;e<t.length;e++)if(t[e]+"MutationObserver"in window)return window[t[e]+"MutationObserver"];return!1}(),r=function(e,i){e.data(i).split(" ").forEach(function(n){t("#"+n)["close"===i?"trigger":"triggerHandler"](i+".zf.trigger",[e])})};t(document).on("click.zf.trigger","[data-open]",function(){r(t(this),"open")}),t(document).on("click.zf.trigger","[data-close]",function(){var e=t(this).data("close");e?r(t(this),"close"):t(this).trigger("close.zf.trigger")}),t(document).on("click.zf.trigger","[data-toggle]",function(){r(t(this),"toggle")}),t(document).on("close.zf.trigger","[data-closable]",function(e){e.stopPropagation();var i=t(this).data("closable");""!==i?Foundation.Motion.animateOut(t(this),i,function(){t(this).trigger("closed.zf")}):t(this).fadeOut().trigger("closed.zf")}),t(document).on("focus.zf.trigger blur.zf.trigger","[data-toggle-focus]",function(){var e=t(this).data("toggle-focus");t("#"+e).triggerHandler("toggle.zf.trigger",[t(this)])}),t(window).load(function(){e()}),Foundation.IHearYou=e}(jQuery),!function(t){function e(t,e,i){var n,s,o=this,a=e.duration,r=Object.keys(t.data())[0]||"timer",l=-1;this.isPaused=!1,this.restart=function(){l=-1,clearTimeout(s),this.start()},this.start=function(){this.isPaused=!1,clearTimeout(s),l=0>=l?a:l,t.data("paused",!1),n=Date.now(),s=setTimeout(function(){e.infinite&&o.restart(),i()},l),t.trigger("timerstart.zf."+r)},this.pause=function(){this.isPaused=!0,clearTimeout(s),t.data("paused",!0);var e=Date.now();l-=e-n,t.trigger("timerpaused.zf."+r)}}function i(e,i){function n(){s--,0===s&&i()}var s=e.length;0===s&&i(),e.each(function(){this.complete?n():"undefined"!=typeof this.naturalWidth&&this.naturalWidth>0?n():t(this).one("load",function(){n()})})}Foundation.Timer=e,Foundation.onImagesLoaded=i}(jQuery),function(t){function e(){this.removeEventListener("touchmove",i),this.removeEventListener("touchend",e),u=!1}function i(i){if(t.spotSwipe.preventDefault&&i.preventDefault(),u){var n,s=i.touches[0].pageX,a=(i.touches[0].pageY,o-s);l=(new Date).getTime()-r,Math.abs(a)>=t.spotSwipe.moveThreshold&&l<=t.spotSwipe.timeThreshold&&(n=a>0?"left":"right"),n&&(i.preventDefault(),e.call(this),t(this).trigger("swipe",n).trigger("swipe"+n))}}function n(t){1==t.touches.length&&(o=t.touches[0].pageX,a=t.touches[0].pageY,u=!0,r=(new Date).getTime(),this.addEventListener("touchmove",i,!1),this.addEventListener("touchend",e,!1))}function s(){this.addEventListener&&this.addEventListener("touchstart",n,!1)}t.spotSwipe={version:"1.0.0",enabled:"ontouchstart"in document.documentElement,preventDefault:!1,moveThreshold:75,timeThreshold:200};var o,a,r,l,u=!1;t.event.special.swipe={setup:s},t.each(["left","up","down","right"],function(){t.event.special["swipe"+this]={setup:function(){t(this).on("swipe",t.noop)}}})}(jQuery),!function(t){t.fn.addTouch=function(){this.each(function(i,n){t(n).bind("touchstart touchmove touchend touchcancel",function(){e(event)})});var e=function(t){var e,i=t.changedTouches,n=i[0],s={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup"},o=s[t.type];"MouseEvent"in window&&"function"==typeof window.MouseEvent?e=new window.MouseEvent(o,{bubbles:!0,cancelable:!0,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY}):(e=document.createEvent("MouseEvent"),e.initMouseEvent(o,!0,!0,window,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null)),n.target.dispatchEvent(e)}}}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Abide")}return _createClass(e,[{key:"_init",value:function(){this.$inputs=this.$element.find("input, textarea, select"),this._events()}},{key:"_events",value:function(){var e=this;this.$element.off(".abide").on("reset.zf.abide",function(){e.resetForm()}).on("submit.zf.abide",function(){return e.validateForm()}),"fieldChange"===this.options.validateOn&&this.$inputs.off("change.zf.abide").on("change.zf.abide",function(i){e.validateInput(t(i.target))}),this.options.liveValidate&&this.$inputs.off("input.zf.abide").on("input.zf.abide",function(i){e.validateInput(t(i.target))})}},{key:"_reflow",value:function(){this._init()}},{key:"requiredCheck",value:function(t){if(!t.attr("required"))return!0;var e=!0;switch(t[0].type){case"checkbox":e=t[0].checked;break;case"select":case"select-one":case"select-multiple":var i=t.find("option:selected");i.length&&i.val()||(e=!1);break;default:t.val()&&t.val().length||(e=!1)}return e}},{key:"findFormError",value:function(t){var e=t.siblings(this.options.formErrorSelector);return e.length||(e=t.parent().find(this.options.formErrorSelector)),e}},{key:"findLabel",value:function(t){var e=t[0].id,i=this.$element.find('label[for="'+e+'"]');return i.length?i:t.closest("label")}},{key:"findRadioLabels",value:function(e){var i=this,n=e.map(function(e,n){var s=n.id,o=i.$element.find('label[for="'+s+'"]');return o.length||(o=t(n).closest("label")),o[0]});return t(n)}},{key:"addErrorClasses",value:function(t){var e=this.findLabel(t),i=this.findFormError(t);e.length&&e.addClass(this.options.labelErrorClass),i.length&&i.addClass(this.options.formErrorClass),t.addClass(this.options.inputErrorClass).attr("data-invalid","")}},{key:"removeRadioErrorClasses",value:function(t){var e=this.$element.find(':radio[name="'+t+'"]'),i=this.findRadioLabels(e),n=this.findFormError(e);i.length&&i.removeClass(this.options.labelErrorClass),n.length&&n.removeClass(this.options.formErrorClass),e.removeClass(this.options.inputErrorClass).removeAttr("data-invalid")}},{key:"removeErrorClasses",value:function(t){if("radio"==t[0].type)return this.removeRadioErrorClasses(t.attr("name"));var e=this.findLabel(t),i=this.findFormError(t);e.length&&e.removeClass(this.options.labelErrorClass),i.length&&i.removeClass(this.options.formErrorClass),t.removeClass(this.options.inputErrorClass).removeAttr("data-invalid")}},{key:"validateInput",value:function(t){var e=this.requiredCheck(t),i=!1,n=!0,s=t.attr("data-validator"),o=!0;if(t.is("[data-abide-ignore]")||t.is('[type="hidden"]'))return!0;switch(t[0].type){case"radio":i=this.validateRadio(t.attr("name"));break;case"checkbox":i=e;break;case"select":case"select-one":case"select-multiple":i=e;break;default:i=this.validateText(t)}s&&(n=this.matchValidation(t,s,t.attr("required"))),t.attr("data-equalto")&&(o=this.options.validators.equalTo(t));var a=-1===[e,i,n,o].indexOf(!1),r=(a?"valid":"invalid")+".zf.abide";return this[a?"removeErrorClasses":"addErrorClasses"](t),t.trigger(r,[t]),a}},{key:"validateForm",value:function(){var e=[],i=this;this.$inputs.each(function(){e.push(i.validateInput(t(this)))});var n=-1===e.indexOf(!1);return this.$element.find("[data-abide-error]").css("display",n?"none":"block"),this.$element.trigger((n?"formvalid":"forminvalid")+".zf.abide",[this.$element]),n}},{key:"validateText",value:function(t,e){e=e||t.attr("pattern")||t.attr("type");var i=t.val(),n=!1;return i.length?n=this.options.patterns.hasOwnProperty(e)?this.options.patterns[e].test(i):e!==t.attr("type")?new RegExp(e).test(i):!0:t.prop("required")||(n=!0),n}},{key:"validateRadio",value:function(e){var i=this.$element.find(':radio[name="'+e+'"]'),n=!1,s=!1;return i.each(function(e,i){t(i).attr("required")&&(s=!0)}),s||(n=!0),n||i.each(function(e,i){t(i).prop("checked")&&(n=!0)}),n}},{key:"matchValidation",value:function(t,e,i){var n=this;i=!!i;var s=e.split(" ").map(function(e){return n.options.validators[e](t,i,t.parent())});return-1===s.indexOf(!1)}},{key:"resetForm",value:function(){var e=this.$element,i=this.options;t("."+i.labelErrorClass,e).not("small").removeClass(i.labelErrorClass),t("."+i.inputErrorClass,e).not("small").removeClass(i.inputErrorClass),t(i.formErrorSelector+"."+i.formErrorClass).removeClass(i.formErrorClass),e.find("[data-abide-error]").css("display","none"),t(":input",e).not(":button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]").val("").removeAttr("data-invalid"),t(":input:radio",e).not("[data-abide-ignore]").prop("checked",!1).removeAttr("data-invalid"),t(":input:checkbox",e).not("[data-abide-ignore]").prop("checked",!1).removeAttr("data-invalid"),e.trigger("formreset.zf.abide",[e])}},{key:"destroy",value:function(){var e=this;this.$element.off(".abide").find("[data-abide-error]").css("display","none"),this.$inputs.off(".abide").each(function(){e.removeErrorClasses(t(this))}),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={validateOn:"fieldChange",labelErrorClass:"is-invalid-label",inputErrorClass:"is-invalid-input",formErrorSelector:".form-error",formErrorClass:"is-visible",liveValidate:!1,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/},validators:{equalTo:function(e,i,n){return t("#"+e.attr("data-equalto")).val()===e.val()}}},Foundation.plugin(e,"Abide")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Accordion"),Foundation.Keyboard.register("Accordion",{ENTER:"toggle",SPACE:"toggle",ARROW_DOWN:"next",ARROW_UP:"previous"})}return _createClass(e,[{key:"_init",value:function(){this.$element.attr("role","tablist"),this.$tabs=this.$element.children("li, [data-accordion-item]"),this.$tabs.each(function(e,i){var n=t(i),s=n.children("[data-tab-content]"),o=s[0].id||Foundation.GetYoDigits(6,"accordion"),a=i.id||o+"-label";n.find("a:first").attr({"aria-controls":o,role:"tab",id:a,"aria-expanded":!1,"aria-selected":!1}),s.attr({role:"tabpanel","aria-labelledby":a,"aria-hidden":!0,id:o})});var e=this.$element.find(".is-active").children("[data-tab-content]");e.length&&this.down(e,!0),this._events()}},{key:"_events",value:function(){var e=this;this.$tabs.each(function(){var i=t(this),n=i.children("[data-tab-content]");n.length&&i.children("a").off("click.zf.accordion keydown.zf.accordion").on("click.zf.accordion",function(t){t.preventDefault(),i.hasClass("is-active")?(e.options.allowAllClosed||i.siblings().hasClass("is-active"))&&e.up(n):e.down(n)}).on("keydown.zf.accordion",function(t){Foundation.Keyboard.handleKey(t,"Accordion",{toggle:function(){e.toggle(n)},next:function(){var t=i.next().find("a").focus();e.options.multiExpand||t.trigger("click.zf.accordion")},previous:function(){var t=i.prev().find("a").focus();e.options.multiExpand||t.trigger("click.zf.accordion")},handled:function(){t.preventDefault(),t.stopPropagation()}})})})}},{key:"toggle",value:function(t){if(t.parent().hasClass("is-active")){if(!this.options.allowAllClosed&&!t.parent().siblings().hasClass("is-active"))return;this.up(t)}else this.down(t)}},{key:"down",value:function(e,i){var n=this;if(!this.options.multiExpand&&!i){var s=this.$element.children(".is-active").children("[data-tab-content]");s.length&&this.up(s)}e.attr("aria-hidden",!1).parent("[data-tab-content]").addBack().parent().addClass("is-active"),e.slideDown(this.options.slideSpeed,function(){n.$element.trigger("down.zf.accordion",[e])}),t("#"+e.attr("aria-labelledby")).attr({"aria-expanded":!0,"aria-selected":!0})}},{key:"up",value:function(e){var i=e.parent().siblings(),n=this,s=this.options.multiExpand?i.hasClass("is-active"):e.parent().hasClass("is-active");(this.options.allowAllClosed||s)&&(e.slideUp(n.options.slideSpeed,function(){n.$element.trigger("up.zf.accordion",[e])}),e.attr("aria-hidden",!0).parent().removeClass("is-active"),t("#"+e.attr("aria-labelledby")).attr({"aria-expanded":!1,"aria-selected":!1}))}},{key:"destroy",value:function(){this.$element.find("[data-tab-content]").stop(!0).slideUp(0).css("display",""),this.$element.find("a").off(".zf.accordion"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={slideSpeed:250,multiExpand:!1,allowAllClosed:!1},Foundation.plugin(e,"Accordion")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),Foundation.Nest.Feather(this.$element,"accordion"),this._init(),Foundation.registerPlugin(this,"AccordionMenu"),Foundation.Keyboard.register("AccordionMenu",{ENTER:"toggle",SPACE:"toggle",ARROW_RIGHT:"open",ARROW_UP:"up",ARROW_DOWN:"down",ARROW_LEFT:"close",ESCAPE:"closeAll",TAB:"down",SHIFT_TAB:"up"})}return _createClass(e,[{key:"_init",value:function(){this.$element.find("[data-submenu]").not(".is-active").slideUp(0),this.$element.attr({role:"tablist","aria-multiselectable":this.options.multiOpen}),this.$menuLinks=this.$element.find(".is-accordion-submenu-parent"),this.$menuLinks.each(function(){var e=this.id||Foundation.GetYoDigits(6,"acc-menu-link"),i=t(this),n=i.children("[data-submenu]"),s=n[0].id||Foundation.GetYoDigits(6,"acc-menu"),o=n.hasClass("is-active");i.attr({"aria-controls":s,"aria-expanded":o,role:"tab",id:e}),n.attr({"aria-labelledby":e,"aria-hidden":!o,role:"tabpanel",id:s})});var e=this.$element.find(".is-active");if(e.length){var i=this;e.each(function(){i.down(t(this))})}this._events()}},{key:"_events",value:function(){var e=this;this.$element.find("li").each(function(){var i=t(this).children("[data-submenu]");i.length&&t(this).children("a").off("click.zf.accordionMenu").on("click.zf.accordionMenu",function(t){t.preventDefault(),e.toggle(i)})}).on("keydown.zf.accordionmenu",function(i){var n,s,o=t(this),a=o.parent("ul").children("li"),r=o.children("[data-submenu]");a.each(function(e){return t(this).is(o)?(n=a.eq(Math.max(0,e-1)).find("a").first(), +function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}!function(t){"use strict";function e(t){if(void 0===Function.prototype.name){var e=/function\s([^(]{1,})\(/,i=e.exec(t.toString());return i&&i.length>1?i[1].trim():""}return void 0===t.prototype?t.constructor.name:t.prototype.constructor.name}function i(t){return/true/.test(t)?!0:/false/.test(t)?!1:isNaN(1*t)?t:parseFloat(t)}function n(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}var s="6.2.3",o={version:s,_plugins:{},_uuids:[],rtl:function(){return"rtl"===t("html").attr("dir")},plugin:function(t,i){var s=i||e(t),o=n(s);this._plugins[o]=this[s]=t},registerPlugin:function(t,i){var s=i?n(i):e(t.constructor).toLowerCase();t.uuid=this.GetYoDigits(6,s),t.$element.attr("data-"+s)||t.$element.attr("data-"+s,t.uuid),t.$element.data("zfPlugin")||t.$element.data("zfPlugin",t),t.$element.trigger("init.zf."+s),this._uuids.push(t.uuid)},unregisterPlugin:function(t){var i=n(e(t.$element.data("zfPlugin").constructor));this._uuids.splice(this._uuids.indexOf(t.uuid),1),t.$element.removeAttr("data-"+i).removeData("zfPlugin").trigger("destroyed.zf."+i);for(var s in t)t[s]=null},reInit:function(e){var i=e instanceof t;try{if(i)e.each(function(){t(this).data("zfPlugin")._init()});else{var s=typeof e,o=this,a={object:function(e){e.forEach(function(e){e=n(e),t("[data-"+e+"]").foundation("_init")})},string:function(){e=n(e),t("[data-"+e+"]").foundation("_init")},undefined:function(){this.object(Object.keys(o._plugins))}};a[s](e)}}catch(r){console.error(r)}finally{return e}},GetYoDigits:function(t,e){return t=t||6,Math.round(Math.pow(36,t+1)-Math.random()*Math.pow(36,t)).toString(36).slice(1)+(e?"-"+e:"")},reflow:function(e,n){"undefined"==typeof n?n=Object.keys(this._plugins):"string"==typeof n&&(n=[n]);var s=this;t.each(n,function(n,o){var a=s._plugins[o],r=t(e).find("[data-"+o+"]").addBack("[data-"+o+"]");r.each(function(){var e=t(this),n={};if(e.data("zfPlugin"))return void console.warn("Tried to initialize "+o+" on an element that already has a Foundation plugin.");if(e.attr("data-options")){e.attr("data-options").split(";").forEach(function(t,e){var s=t.split(":").map(function(t){return t.trim()});s[0]&&(n[s[0]]=i(s[1]))})}try{e.data("zfPlugin",new a(t(this),n))}catch(s){console.error(s)}finally{return}})})},getFnName:e,transitionend:function(t){var e,i={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend"},n=document.createElement("div");for(var s in i)"undefined"!=typeof n.style[s]&&(e=i[s]);return e?e:(e=setTimeout(function(){t.triggerHandler("transitionend",[t])},1),"transitionend")}};o.util={throttle:function(t,e){var i=null;return function(){var n=this,s=arguments;null===i&&(i=setTimeout(function(){t.apply(n,s),i=null},e))}}};var a=function(i){var n=typeof i,s=t("meta.foundation-mq"),a=t(".no-js");if(s.length||t('<meta class="foundation-mq">').appendTo(document.head),a.length&&a.removeClass("no-js"),"undefined"===n)o.MediaQuery._init(),o.reflow(this);else{if("string"!==n)throw new TypeError("We're sorry, "+n+" is not a valid parameter. You must use a string representing the method you wish to invoke.");var r=Array.prototype.slice.call(arguments,1),l=this.data("zfPlugin");if(void 0===l||void 0===l[i])throw new ReferenceError("We're sorry, '"+i+"' is not an available method for "+(l?e(l):"this element")+".");1===this.length?l[i].apply(l,r):this.each(function(e,n){l[i].apply(t(n).data("zfPlugin"),r)})}return this};window.Foundation=o,t.fn.foundation=a,function(){Date.now&&window.Date.now||(window.Date.now=Date.now=function(){return(new Date).getTime()});for(var t=["webkit","moz"],e=0;e<t.length&&!window.requestAnimationFrame;++e){var i=t[e];window.requestAnimationFrame=window[i+"RequestAnimationFrame"],window.cancelAnimationFrame=window[i+"CancelAnimationFrame"]||window[i+"CancelRequestAnimationFrame"]}if(/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)||!window.requestAnimationFrame||!window.cancelAnimationFrame){var n=0;window.requestAnimationFrame=function(t){var e=Date.now(),i=Math.max(n+16,e);return setTimeout(function(){t(n=i)},i-e)},window.cancelAnimationFrame=clearTimeout}window.performance&&window.performance.now||(window.performance={start:Date.now(),now:function(){return Date.now()-this.start}})}(),Function.prototype.bind||(Function.prototype.bind=function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var e=Array.prototype.slice.call(arguments,1),i=this,n=function(){},s=function(){return i.apply(this instanceof n?this:t,e.concat(Array.prototype.slice.call(arguments)))};return this.prototype&&(n.prototype=this.prototype),s.prototype=new n,s})}(jQuery),!function(t){function e(t,e,n,s){var o,a,r,l,u=i(t);if(e){var d=i(e);a=u.offset.top+u.height<=d.height+d.offset.top,o=u.offset.top>=d.offset.top,r=u.offset.left>=d.offset.left,l=u.offset.left+u.width<=d.width+d.offset.left}else a=u.offset.top+u.height<=u.windowDims.height+u.windowDims.offset.top,o=u.offset.top>=u.windowDims.offset.top,r=u.offset.left>=u.windowDims.offset.left,l=u.offset.left+u.width<=u.windowDims.width;var h=[a,o,r,l];return n?r===l==!0:s?o===a==!0:-1===h.indexOf(!1)}function i(t,e){if(t=t.length?t[0]:t,t===window||t===document)throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");var i=t.getBoundingClientRect(),n=t.parentNode.getBoundingClientRect(),s=document.body.getBoundingClientRect(),o=window.pageYOffset,a=window.pageXOffset;return{width:i.width,height:i.height,offset:{top:i.top+o,left:i.left+a},parentDims:{width:n.width,height:n.height,offset:{top:n.top+o,left:n.left+a}},windowDims:{width:s.width,height:s.height,offset:{top:o,left:a}}}}function n(t,e,n,s,o,a){var r=i(t),l=e?i(e):null;switch(n){case"top":return{left:Foundation.rtl()?l.offset.left-r.width+l.width:l.offset.left,top:l.offset.top-(r.height+s)};case"left":return{left:l.offset.left-(r.width+o),top:l.offset.top};case"right":return{left:l.offset.left+l.width+o,top:l.offset.top};case"center top":return{left:l.offset.left+l.width/2-r.width/2,top:l.offset.top-(r.height+s)};case"center bottom":return{left:a?o:l.offset.left+l.width/2-r.width/2,top:l.offset.top+l.height+s};case"center left":return{left:l.offset.left-(r.width+o),top:l.offset.top+l.height/2-r.height/2};case"center right":return{left:l.offset.left+l.width+o+1,top:l.offset.top+l.height/2-r.height/2};case"center":return{left:r.windowDims.offset.left+r.windowDims.width/2-r.width/2,top:r.windowDims.offset.top+r.windowDims.height/2-r.height/2};case"reveal":return{left:(r.windowDims.width-r.width)/2,top:r.windowDims.offset.top+s};case"reveal full":return{left:r.windowDims.offset.left,top:r.windowDims.offset.top};case"left bottom":return{left:l.offset.left-(r.width+o),top:l.offset.top+l.height};case"right bottom":return{left:l.offset.left+l.width+o-r.width,top:l.offset.top+l.height};default:return{left:Foundation.rtl()?l.offset.left-r.width+l.width:l.offset.left,top:l.offset.top+l.height+s}}}Foundation.Box={ImNotTouchingYou:e,GetDimensions:i,GetOffsets:n}}(jQuery),!function(t){function e(t){var e={};for(var i in t)e[t[i]]=t[i];return e}var i={9:"TAB",13:"ENTER",27:"ESCAPE",32:"SPACE",37:"ARROW_LEFT",38:"ARROW_UP",39:"ARROW_RIGHT",40:"ARROW_DOWN"},n={},s={keys:e(i),parseKey:function(t){var e=i[t.which||t.keyCode]||String.fromCharCode(t.which).toUpperCase();return t.shiftKey&&(e="SHIFT_"+e),t.ctrlKey&&(e="CTRL_"+e),t.altKey&&(e="ALT_"+e),e},handleKey:function(e,i,s){var o,a,r,l=n[i],u=this.parseKey(e);if(!l)return console.warn("Component not defined!");if(o="undefined"==typeof l.ltr?l:Foundation.rtl()?t.extend({},l.ltr,l.rtl):t.extend({},l.rtl,l.ltr),a=o[u],r=s[a],r&&"function"==typeof r){var d=r.apply();(s.handled||"function"==typeof s.handled)&&s.handled(d)}else(s.unhandled||"function"==typeof s.unhandled)&&s.unhandled()},findFocusable:function(e){return e.find("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]").filter(function(){return t(this).is(":visible")&&!(t(this).attr("tabindex")<0)})},register:function(t,e){n[t]=e}};Foundation.Keyboard=s}(jQuery),!function(t){function e(t){var e={};return"string"!=typeof t?e:(t=t.trim().slice(1,-1))?e=t.split("&").reduce(function(t,e){var i=e.replace(/\+/g," ").split("="),n=i[0],s=i[1];return n=decodeURIComponent(n),s=void 0===s?null:decodeURIComponent(s),t.hasOwnProperty(n)?Array.isArray(t[n])?t[n].push(s):t[n]=[t[n],s]:t[n]=s,t},{}):e}var i={queries:[],current:"",_init:function(){var i,n=this,s=t(".foundation-mq").css("font-family");i=e(s);for(var o in i)i.hasOwnProperty(o)&&n.queries.push({name:o,value:"only screen and (min-width: "+i[o]+")"});this.current=this._getCurrentSize(),this._watcher()},atLeast:function(t){var e=this.get(t);return e?window.matchMedia(e).matches:!1},get:function(t){for(var e in this.queries)if(this.queries.hasOwnProperty(e)){var i=this.queries[e];if(t===i.name)return i.value}return null},_getCurrentSize:function(){for(var t,e=0;e<this.queries.length;e++){var i=this.queries[e];window.matchMedia(i.value).matches&&(t=i)}return"object"==typeof t?t.name:t},_watcher:function(){var e=this;t(window).on("resize.zf.mediaquery",function(){var i=e._getCurrentSize(),n=e.current;i!==n&&(e.current=i,t(window).trigger("changed.zf.mediaquery",[i,n]))})}};Foundation.MediaQuery=i,window.matchMedia||(window.matchMedia=function(){"use strict";var t=window.styleMedia||window.media;if(!t){var e=document.createElement("style"),i=document.getElementsByTagName("script")[0],n=null;e.type="text/css",e.id="matchmediajs-test",i.parentNode.insertBefore(e,i),n="getComputedStyle"in window&&window.getComputedStyle(e,null)||e.currentStyle,t={matchMedium:function(t){var i="@media "+t+"{ #matchmediajs-test { width: 1px; } }";return e.styleSheet?e.styleSheet.cssText=i:e.textContent=i,"1px"===n.width}}}return function(e){return{matches:t.matchMedium(e||"all"),media:e||"all"}}}()),Foundation.MediaQuery=i}(jQuery),!function(t){function e(t,e,i){function n(r){a||(a=window.performance.now()),o=r-a,i.apply(e),t>o?s=window.requestAnimationFrame(n,e):(window.cancelAnimationFrame(s),e.trigger("finished.zf.animate",[e]).triggerHandler("finished.zf.animate",[e]))}var s,o,a=null;s=window.requestAnimationFrame(n)}function i(e,i,o,a){function r(){e||i.hide(),l(),a&&a.apply(i)}function l(){i[0].style.transitionDuration=0,i.removeClass(u+" "+d+" "+o)}if(i=t(i).eq(0),i.length){var u=e?n[0]:n[1],d=e?s[0]:s[1];l(),i.addClass(o).css("transition","none"),requestAnimationFrame(function(){i.addClass(u),e&&i.show()}),requestAnimationFrame(function(){i[0].offsetWidth,i.css("transition","").addClass(d)}),i.one(Foundation.transitionend(i),r)}}var n=["mui-enter","mui-leave"],s=["mui-enter-active","mui-leave-active"],o={animateIn:function(t,e,n){i(!0,t,e,n)},animateOut:function(t,e,n){i(!1,t,e,n)}};Foundation.Move=e,Foundation.Motion=o}(jQuery),!function(t){var e={Feather:function(e){var i=arguments.length<=1||void 0===arguments[1]?"zf":arguments[1];e.attr("role","menubar");var n=e.find("li").attr({role:"menuitem"}),s="is-"+i+"-submenu",o=s+"-item",a="is-"+i+"-submenu-parent";e.find("a:first").attr("tabindex",0),n.each(function(){var e=t(this),i=e.children("ul");i.length&&(e.addClass(a).attr({"aria-haspopup":!0,"aria-expanded":!1,"aria-label":e.children("a:first").text()}),i.addClass("submenu "+s).attr({"data-submenu":"","aria-hidden":!0,role:"menu"})),e.parent("[data-submenu]").length&&e.addClass("is-submenu-item "+o)})},Burn:function(t,e){var i=(t.find("li").removeAttr("tabindex"),"is-"+e+"-submenu"),n=i+"-item",s="is-"+e+"-submenu-parent";t.find("*").removeClass(i+" "+n+" "+s+" is-submenu-item submenu is-active").removeAttr("data-submenu").css("display","")}};Foundation.Nest=e}(jQuery),!function(t){function e(t,e,i){var n,s,o=this,a=e.duration,r=Object.keys(t.data())[0]||"timer",l=-1;this.isPaused=!1,this.restart=function(){l=-1,clearTimeout(s),this.start()},this.start=function(){this.isPaused=!1,clearTimeout(s),l=0>=l?a:l,t.data("paused",!1),n=Date.now(),s=setTimeout(function(){e.infinite&&o.restart(),i()},l),t.trigger("timerstart.zf."+r)},this.pause=function(){this.isPaused=!0,clearTimeout(s),t.data("paused",!0);var e=Date.now();l-=e-n,t.trigger("timerpaused.zf."+r)}}function i(e,i){function n(){s--,0===s&&i()}var s=e.length;0===s&&i(),e.each(function(){this.complete?n():"undefined"!=typeof this.naturalWidth&&this.naturalWidth>0?n():t(this).one("load",function(){n()})})}Foundation.Timer=e,Foundation.onImagesLoaded=i}(jQuery),function(t){function e(){this.removeEventListener("touchmove",i),this.removeEventListener("touchend",e),u=!1}function i(i){if(t.spotSwipe.preventDefault&&i.preventDefault(),u){var n,s=i.touches[0].pageX,a=(i.touches[0].pageY,o-s);l=(new Date).getTime()-r,Math.abs(a)>=t.spotSwipe.moveThreshold&&l<=t.spotSwipe.timeThreshold&&(n=a>0?"left":"right"),n&&(i.preventDefault(),e.call(this),t(this).trigger("swipe",n).trigger("swipe"+n))}}function n(t){1==t.touches.length&&(o=t.touches[0].pageX,a=t.touches[0].pageY,u=!0,r=(new Date).getTime(),this.addEventListener("touchmove",i,!1),this.addEventListener("touchend",e,!1))}function s(){this.addEventListener&&this.addEventListener("touchstart",n,!1)}t.spotSwipe={version:"1.0.0",enabled:"ontouchstart"in document.documentElement,preventDefault:!1,moveThreshold:75,timeThreshold:200};var o,a,r,l,u=!1;t.event.special.swipe={setup:s},t.each(["left","up","down","right"],function(){t.event.special["swipe"+this]={setup:function(){t(this).on("swipe",t.noop)}}})}(jQuery),!function(t){t.fn.addTouch=function(){this.each(function(i,n){t(n).bind("touchstart touchmove touchend touchcancel",function(){e(event)})});var e=function(t){var e,i=t.changedTouches,n=i[0],s={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup"},o=s[t.type];"MouseEvent"in window&&"function"==typeof window.MouseEvent?e=new window.MouseEvent(o,{bubbles:!0,cancelable:!0,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY}):(e=document.createEvent("MouseEvent"),e.initMouseEvent(o,!0,!0,window,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null)),n.target.dispatchEvent(e)}}}(jQuery),!function(t){function e(){o(),n(),s(),i()}function i(e){var i=t("[data-yeti-box]"),n=["dropdown","tooltip","reveal"];if(e&&("string"==typeof e?n.push(e):"object"==typeof e&&"string"==typeof e[0]?n.concat(e):console.error("Plugin names must be strings")),i.length){var s=n.map(function(t){return"closeme.zf."+t}).join(" ");t(window).off(s).on(s,function(e,i){var n=e.namespace.split(".")[0],s=t("[data-"+n+"]").not('[data-yeti-box="'+i+'"]');s.each(function(){var e=t(this);e.triggerHandler("close.zf.trigger",[e])})})}}function n(e){var i=void 0,n=t("[data-resize]");n.length&&t(window).off("resize.zf.trigger").on("resize.zf.trigger",function(s){i&&clearTimeout(i),i=setTimeout(function(){a||n.each(function(){t(this).triggerHandler("resizeme.zf.trigger")}),n.attr("data-events","resize")},e||10)})}function s(e){var i=void 0,n=t("[data-scroll]");n.length&&t(window).off("scroll.zf.trigger").on("scroll.zf.trigger",function(s){i&&clearTimeout(i),i=setTimeout(function(){a||n.each(function(){t(this).triggerHandler("scrollme.zf.trigger")}),n.attr("data-events","scroll")},e||10)})}function o(){if(!a)return!1;var e=document.querySelectorAll("[data-resize], [data-scroll], [data-mutate]"),i=function(e){var i=t(e[0].target);switch(i.attr("data-events")){case"resize":i.triggerHandler("resizeme.zf.trigger",[i]);break;case"scroll":i.triggerHandler("scrollme.zf.trigger",[i,window.pageYOffset]);break;default:return!1}};if(e.length)for(var n=0;n<=e.length-1;n++){var s=new a(i);s.observe(e[n],{attributes:!0,childList:!1,characterData:!1,subtree:!1,attributeFilter:["data-events"]})}}var a=function(){for(var t=["WebKit","Moz","O","Ms",""],e=0;e<t.length;e++)if(t[e]+"MutationObserver"in window)return window[t[e]+"MutationObserver"];return!1}(),r=function(e,i){e.data(i).split(" ").forEach(function(n){t("#"+n)["close"===i?"trigger":"triggerHandler"](i+".zf.trigger",[e])})};t(document).on("click.zf.trigger","[data-open]",function(){r(t(this),"open")}),t(document).on("click.zf.trigger","[data-close]",function(){var e=t(this).data("close");e?r(t(this),"close"):t(this).trigger("close.zf.trigger")}),t(document).on("click.zf.trigger","[data-toggle]",function(){r(t(this),"toggle")}),t(document).on("close.zf.trigger","[data-closable]",function(e){e.stopPropagation();var i=t(this).data("closable");""!==i?Foundation.Motion.animateOut(t(this),i,function(){t(this).trigger("closed.zf")}):t(this).fadeOut().trigger("closed.zf")}),t(document).on("focus.zf.trigger blur.zf.trigger","[data-toggle-focus]",function(){var e=t(this).data("toggle-focus");t("#"+e).triggerHandler("toggle.zf.trigger",[t(this)])}),t(window).load(function(){e()}),Foundation.IHearYou=e}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Abide")}return _createClass(e,[{key:"_init",value:function(){this.$inputs=this.$element.find("input, textarea, select"),this._events()}},{key:"_events",value:function(){var e=this;this.$element.off(".abide").on("reset.zf.abide",function(){e.resetForm()}).on("submit.zf.abide",function(){return e.validateForm()}),"fieldChange"===this.options.validateOn&&this.$inputs.off("change.zf.abide").on("change.zf.abide",function(i){e.validateInput(t(i.target))}),this.options.liveValidate&&this.$inputs.off("input.zf.abide").on("input.zf.abide",function(i){e.validateInput(t(i.target))})}},{key:"_reflow",value:function(){this._init()}},{key:"requiredCheck",value:function(t){if(!t.attr("required"))return!0;var e=!0;switch(t[0].type){case"checkbox":e=t[0].checked;break;case"select":case"select-one":case"select-multiple":var i=t.find("option:selected");i.length&&i.val()||(e=!1);break;default:t.val()&&t.val().length||(e=!1)}return e}},{key:"findFormError",value:function(t){var e=t.siblings(this.options.formErrorSelector);return e.length||(e=t.parent().find(this.options.formErrorSelector)),e}},{key:"findLabel",value:function(t){var e=t[0].id,i=this.$element.find('label[for="'+e+'"]');return i.length?i:t.closest("label")}},{key:"findRadioLabels",value:function(e){var i=this,n=e.map(function(e,n){var s=n.id,o=i.$element.find('label[for="'+s+'"]');return o.length||(o=t(n).closest("label")),o[0]});return t(n)}},{key:"addErrorClasses",value:function(t){var e=this.findLabel(t),i=this.findFormError(t);e.length&&e.addClass(this.options.labelErrorClass),i.length&&i.addClass(this.options.formErrorClass),t.addClass(this.options.inputErrorClass).attr("data-invalid","")}},{key:"removeRadioErrorClasses",value:function(t){var e=this.$element.find(':radio[name="'+t+'"]'),i=this.findRadioLabels(e),n=this.findFormError(e);i.length&&i.removeClass(this.options.labelErrorClass),n.length&&n.removeClass(this.options.formErrorClass),e.removeClass(this.options.inputErrorClass).removeAttr("data-invalid")}},{key:"removeErrorClasses",value:function(t){if("radio"==t[0].type)return this.removeRadioErrorClasses(t.attr("name"));var e=this.findLabel(t),i=this.findFormError(t);e.length&&e.removeClass(this.options.labelErrorClass),i.length&&i.removeClass(this.options.formErrorClass),t.removeClass(this.options.inputErrorClass).removeAttr("data-invalid")}},{key:"validateInput",value:function(t){var e=this.requiredCheck(t),i=!1,n=!0,s=t.attr("data-validator"),o=!0;if(t.is("[data-abide-ignore]")||t.is('[type="hidden"]'))return!0;switch(t[0].type){case"radio":i=this.validateRadio(t.attr("name"));break;case"checkbox":i=e;break;case"select":case"select-one":case"select-multiple":i=e;break;default:i=this.validateText(t)}s&&(n=this.matchValidation(t,s,t.attr("required"))),t.attr("data-equalto")&&(o=this.options.validators.equalTo(t));var a=-1===[e,i,n,o].indexOf(!1),r=(a?"valid":"invalid")+".zf.abide";return this[a?"removeErrorClasses":"addErrorClasses"](t),t.trigger(r,[t]),a}},{key:"validateForm",value:function(){var e=[],i=this;this.$inputs.each(function(){e.push(i.validateInput(t(this)))});var n=-1===e.indexOf(!1);return this.$element.find("[data-abide-error]").css("display",n?"none":"block"),this.$element.trigger((n?"formvalid":"forminvalid")+".zf.abide",[this.$element]),n}},{key:"validateText",value:function(t,e){e=e||t.attr("pattern")||t.attr("type");var i=t.val(),n=!1;return i.length?n=this.options.patterns.hasOwnProperty(e)?this.options.patterns[e].test(i):e!==t.attr("type")?new RegExp(e).test(i):!0:t.prop("required")||(n=!0),n}},{key:"validateRadio",value:function(e){var i=this.$element.find(':radio[name="'+e+'"]'),n=!1,s=!1;return i.each(function(e,i){t(i).attr("required")&&(s=!0)}),s||(n=!0),n||i.each(function(e,i){t(i).prop("checked")&&(n=!0)}),n}},{key:"matchValidation",value:function(t,e,i){var n=this;i=!!i;var s=e.split(" ").map(function(e){return n.options.validators[e](t,i,t.parent())});return-1===s.indexOf(!1)}},{key:"resetForm",value:function(){var e=this.$element,i=this.options;t("."+i.labelErrorClass,e).not("small").removeClass(i.labelErrorClass),t("."+i.inputErrorClass,e).not("small").removeClass(i.inputErrorClass),t(i.formErrorSelector+"."+i.formErrorClass).removeClass(i.formErrorClass),e.find("[data-abide-error]").css("display","none"),t(":input",e).not(":button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]").val("").removeAttr("data-invalid"),t(":input:radio",e).not("[data-abide-ignore]").prop("checked",!1).removeAttr("data-invalid"),t(":input:checkbox",e).not("[data-abide-ignore]").prop("checked",!1).removeAttr("data-invalid"),e.trigger("formreset.zf.abide",[e])}},{key:"destroy",value:function(){var e=this;this.$element.off(".abide").find("[data-abide-error]").css("display","none"),this.$inputs.off(".abide").each(function(){e.removeErrorClasses(t(this))}),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={validateOn:"fieldChange",labelErrorClass:"is-invalid-label",inputErrorClass:"is-invalid-input",formErrorSelector:".form-error",formErrorClass:"is-visible",liveValidate:!1,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/},validators:{equalTo:function(e,i,n){return t("#"+e.attr("data-equalto")).val()===e.val()}}},Foundation.plugin(e,"Abide")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Accordion"),Foundation.Keyboard.register("Accordion",{ENTER:"toggle",SPACE:"toggle",ARROW_DOWN:"next",ARROW_UP:"previous"})}return _createClass(e,[{key:"_init",value:function(){this.$element.attr("role","tablist"),this.$tabs=this.$element.children("li, [data-accordion-item]"),this.$tabs.each(function(e,i){var n=t(i),s=n.children("[data-tab-content]"),o=s[0].id||Foundation.GetYoDigits(6,"accordion"),a=i.id||o+"-label";n.find("a:first").attr({"aria-controls":o,role:"tab",id:a,"aria-expanded":!1,"aria-selected":!1}),s.attr({role:"tabpanel","aria-labelledby":a,"aria-hidden":!0,id:o})});var e=this.$element.find(".is-active").children("[data-tab-content]");e.length&&this.down(e,!0),this._events()}},{key:"_events",value:function(){var e=this;this.$tabs.each(function(){var i=t(this),n=i.children("[data-tab-content]");n.length&&i.children("a").off("click.zf.accordion keydown.zf.accordion").on("click.zf.accordion",function(t){t.preventDefault(),i.hasClass("is-active")?(e.options.allowAllClosed||i.siblings().hasClass("is-active"))&&e.up(n):e.down(n)}).on("keydown.zf.accordion",function(t){Foundation.Keyboard.handleKey(t,"Accordion",{toggle:function(){e.toggle(n)},next:function(){var t=i.next().find("a").focus();e.options.multiExpand||t.trigger("click.zf.accordion")},previous:function(){var t=i.prev().find("a").focus();e.options.multiExpand||t.trigger("click.zf.accordion")},handled:function(){t.preventDefault(),t.stopPropagation()}})})})}},{key:"toggle",value:function(t){if(t.parent().hasClass("is-active")){if(!this.options.allowAllClosed&&!t.parent().siblings().hasClass("is-active"))return;this.up(t)}else this.down(t)}},{key:"down",value:function(e,i){var n=this;if(!this.options.multiExpand&&!i){var s=this.$element.children(".is-active").children("[data-tab-content]");s.length&&this.up(s)}e.attr("aria-hidden",!1).parent("[data-tab-content]").addBack().parent().addClass("is-active"),e.slideDown(this.options.slideSpeed,function(){n.$element.trigger("down.zf.accordion",[e])}),t("#"+e.attr("aria-labelledby")).attr({"aria-expanded":!0,"aria-selected":!0})}},{key:"up",value:function(e){var i=e.parent().siblings(),n=this,s=this.options.multiExpand?i.hasClass("is-active"):e.parent().hasClass("is-active");(this.options.allowAllClosed||s)&&(e.slideUp(n.options.slideSpeed,function(){n.$element.trigger("up.zf.accordion",[e])}),e.attr("aria-hidden",!0).parent().removeClass("is-active"),t("#"+e.attr("aria-labelledby")).attr({"aria-expanded":!1,"aria-selected":!1}))}},{key:"destroy",value:function(){this.$element.find("[data-tab-content]").stop(!0).slideUp(0).css("display",""),this.$element.find("a").off(".zf.accordion"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={slideSpeed:250,multiExpand:!1,allowAllClosed:!1},Foundation.plugin(e,"Accordion")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),Foundation.Nest.Feather(this.$element,"accordion"),this._init(),Foundation.registerPlugin(this,"AccordionMenu"),Foundation.Keyboard.register("AccordionMenu",{ENTER:"toggle",SPACE:"toggle",ARROW_RIGHT:"open",ARROW_UP:"up",ARROW_DOWN:"down",ARROW_LEFT:"close",ESCAPE:"closeAll",TAB:"down",SHIFT_TAB:"up"})}return _createClass(e,[{key:"_init",value:function(){this.$element.find("[data-submenu]").not(".is-active").slideUp(0),this.$element.attr({role:"tablist","aria-multiselectable":this.options.multiOpen}),this.$menuLinks=this.$element.find(".is-accordion-submenu-parent"),this.$menuLinks.each(function(){var e=this.id||Foundation.GetYoDigits(6,"acc-menu-link"),i=t(this),n=i.children("[data-submenu]"),s=n[0].id||Foundation.GetYoDigits(6,"acc-menu"),o=n.hasClass("is-active");i.attr({"aria-controls":s,"aria-expanded":o,role:"tab",id:e}),n.attr({"aria-labelledby":e,"aria-hidden":!o,role:"tabpanel",id:s})});var e=this.$element.find(".is-active");if(e.length){var i=this;e.each(function(){i.down(t(this))})}this._events()}},{key:"_events",value:function(){var e=this;this.$element.find("li").each(function(){var i=t(this).children("[data-submenu]");i.length&&t(this).children("a").off("click.zf.accordionMenu").on("click.zf.accordionMenu",function(t){t.preventDefault(),e.toggle(i)})}).on("keydown.zf.accordionmenu",function(i){var n,s,o=t(this),a=o.parent("ul").children("li"),r=o.children("[data-submenu]");a.each(function(e){return t(this).is(o)?(n=a.eq(Math.max(0,e-1)).find("a").first(), s=a.eq(Math.min(e+1,a.length-1)).find("a").first(),t(this).children("[data-submenu]:visible").length&&(s=o.find("li:first-child").find("a").first()),t(this).is(":first-child")?n=o.parents("li").first().find("a").first():n.children("[data-submenu]:visible").length&&(n=n.find("li:last-child").find("a").first()),void(t(this).is(":last-child")&&(s=o.parents("li").first().next("li").find("a").first()))):void 0}),Foundation.Keyboard.handleKey(i,"AccordionMenu",{open:function(){r.is(":hidden")&&(e.down(r),r.find("li").first().find("a").first().focus())},close:function(){r.length&&!r.is(":hidden")?e.up(r):o.parent("[data-submenu]").length&&(e.up(o.parent("[data-submenu]")),o.parents("li").first().find("a").first().focus())},up:function(){return n.attr("tabindex",-1).focus(),!0},down:function(){return s.attr("tabindex",-1).focus(),!0},toggle:function(){o.children("[data-submenu]").length&&e.toggle(o.children("[data-submenu]"))},closeAll:function(){e.hideAll()},handled:function(t){t&&i.preventDefault(),i.stopImmediatePropagation()}})})}},{key:"hideAll",value:function(){this.$element.find("[data-submenu]").slideUp(this.options.slideSpeed)}},{key:"toggle",value:function(t){t.is(":animated")||(t.is(":hidden")?this.down(t):this.up(t))}},{key:"down",value:function(t){var e=this;this.options.multiOpen||this.up(this.$element.find(".is-active").not(t.parentsUntil(this.$element).add(t))),t.addClass("is-active").attr({"aria-hidden":!1}).parent(".is-accordion-submenu-parent").attr({"aria-expanded":!0}),t.slideDown(e.options.slideSpeed,function(){e.$element.trigger("down.zf.accordionMenu",[t])})}},{key:"up",value:function(t){var e=this;t.slideUp(e.options.slideSpeed,function(){e.$element.trigger("up.zf.accordionMenu",[t])});var i=t.find("[data-submenu]").slideUp(0).addBack().attr("aria-hidden",!0);i.parent(".is-accordion-submenu-parent").attr("aria-expanded",!1)}},{key:"destroy",value:function(){this.$element.find("[data-submenu]").slideDown(0).css("display",""),this.$element.find("a").off("click.zf.accordionMenu"),Foundation.Nest.Burn(this.$element,"accordion"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={slideSpeed:250,multiOpen:!0},Foundation.plugin(e,"AccordionMenu")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),Foundation.Nest.Feather(this.$element,"drilldown"),this._init(),Foundation.registerPlugin(this,"Drilldown"),Foundation.Keyboard.register("Drilldown",{ENTER:"open",SPACE:"open",ARROW_RIGHT:"next",ARROW_UP:"up",ARROW_DOWN:"down",ARROW_LEFT:"previous",ESCAPE:"close",TAB:"down",SHIFT_TAB:"up"})}return _createClass(e,[{key:"_init",value:function(){this.$submenuAnchors=this.$element.find("li.is-drilldown-submenu-parent").children("a"),this.$submenus=this.$submenuAnchors.parent("li").children("[data-submenu]"),this.$menuItems=this.$element.find("li").not(".js-drilldown-back").attr("role","menuitem").find("a"),this._prepareMenu(),this._keyboardEvents()}},{key:"_prepareMenu",value:function(){var e=this;this.$submenuAnchors.each(function(){var i=t(this),n=i.parent();e.options.parentLink&&i.clone().prependTo(n.children("[data-submenu]")).wrap('<li class="is-submenu-parent-item is-submenu-item is-drilldown-submenu-item" role="menu-item"></li>'),i.data("savedHref",i.attr("href")).removeAttr("href"),i.children("[data-submenu]").attr({"aria-hidden":!0,tabindex:0,role:"menu"}),e._events(i)}),this.$submenus.each(function(){var i=t(this),n=i.find(".js-drilldown-back");n.length||i.prepend(e.options.backButton),e._back(i)}),this.$element.parent().hasClass("is-drilldown")||(this.$wrapper=t(this.options.wrapper).addClass("is-drilldown"),this.$wrapper=this.$element.wrap(this.$wrapper).parent().css(this._getMaxDims()))}},{key:"_events",value:function(e){var i=this;e.off("click.zf.drilldown").on("click.zf.drilldown",function(n){if(t(n.target).parentsUntil("ul","li").hasClass("is-drilldown-submenu-parent")&&(n.stopImmediatePropagation(),n.preventDefault()),i._show(e.parent("li")),i.options.closeOnClick){var s=t("body");s.off(".zf.drilldown").on("click.zf.drilldown",function(e){e.target===i.$element[0]||t.contains(i.$element[0],e.target)||(e.preventDefault(),i._hideAll(),s.off(".zf.drilldown"))})}})}},{key:"_keyboardEvents",value:function(){var e=this;this.$menuItems.add(this.$element.find(".js-drilldown-back > a")).on("keydown.zf.drilldown",function(i){var n,s,o=t(this),a=o.parent("li").parent("ul").children("li").children("a");a.each(function(e){return t(this).is(o)?(n=a.eq(Math.max(0,e-1)),void(s=a.eq(Math.min(e+1,a.length-1)))):void 0}),Foundation.Keyboard.handleKey(i,"Drilldown",{next:function(){return o.is(e.$submenuAnchors)?(e._show(o.parent("li")),o.parent("li").one(Foundation.transitionend(o),function(){o.parent("li").find("ul li a").filter(e.$menuItems).first().focus()}),!0):void 0},previous:function(){return e._hide(o.parent("li").parent("ul")),o.parent("li").parent("ul").one(Foundation.transitionend(o),function(){setTimeout(function(){o.parent("li").parent("ul").parent("li").children("a").first().focus()},1)}),!0},up:function(){return n.focus(),!0},down:function(){return s.focus(),!0},close:function(){e._back()},open:function(){return o.is(e.$menuItems)?o.is(e.$submenuAnchors)&&(e._show(o.parent("li")),o.parent("li").one(Foundation.transitionend(o),function(){o.parent("li").find("ul li a").filter(e.$menuItems).first().focus()})):(e._hide(o.parent("li").parent("ul")),o.parent("li").parent("ul").one(Foundation.transitionend(o),function(){setTimeout(function(){o.parent("li").parent("ul").parent("li").children("a").first().focus()},1)})),!0},handled:function(t){t&&i.preventDefault(),i.stopImmediatePropagation()}})})}},{key:"_hideAll",value:function(){var t=this.$element.find(".is-drilldown-submenu.is-active").addClass("is-closing");t.one(Foundation.transitionend(t),function(e){t.removeClass("is-active is-closing")}),this.$element.trigger("closed.zf.drilldown")}},{key:"_back",value:function(t){var e=this;t.off("click.zf.drilldown"),t.children(".js-drilldown-back").on("click.zf.drilldown",function(i){i.stopImmediatePropagation(),e._hide(t)})}},{key:"_menuLinkEvents",value:function(){var t=this;this.$menuItems.not(".is-drilldown-submenu-parent").off("click.zf.drilldown").on("click.zf.drilldown",function(e){setTimeout(function(){t._hideAll()},0)})}},{key:"_show",value:function(t){t.children("[data-submenu]").addClass("is-active"),this.$element.trigger("open.zf.drilldown",[t])}},{key:"_hide",value:function(t){t.addClass("is-closing").one(Foundation.transitionend(t),function(){t.removeClass("is-active is-closing"),t.blur()}),t.trigger("hide.zf.drilldown",[t])}},{key:"_getMaxDims",value:function(){var e=0,i={};return this.$submenus.add(this.$element).each(function(){var i=t(this).children("li").length;e=i>e?i:e}),i["min-height"]=e*this.$menuItems[0].getBoundingClientRect().height+"px",i["max-width"]=this.$element[0].getBoundingClientRect().width+"px",i}},{key:"destroy",value:function(){this._hideAll(),Foundation.Nest.Burn(this.$element,"drilldown"),this.$element.unwrap().find(".js-drilldown-back, .is-submenu-parent-item").remove().end().find(".is-active, .is-closing, .is-drilldown-submenu").removeClass("is-active is-closing is-drilldown-submenu").end().find("[data-submenu]").removeAttr("aria-hidden tabindex role"),this.$submenuAnchors.each(function(){t(this).off(".zf.drilldown")}),this.$element.find("a").each(function(){var e=t(this);e.data("savedHref")&&e.attr("href",e.data("savedHref")).removeData("savedHref")}),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={backButton:'<li class="js-drilldown-back"><a tabindex="0">Back</a></li>',wrapper:"<div></div>",parentLink:!1,closeOnClick:!1},Foundation.plugin(e,"Drilldown")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Dropdown"),Foundation.Keyboard.register("Dropdown",{ENTER:"open",SPACE:"open",ESCAPE:"close",TAB:"tab_forward",SHIFT_TAB:"tab_backward"})}return _createClass(e,[{key:"_init",value:function(){var e=this.$element.attr("id");this.$anchor=t('[data-toggle="'+e+'"]')||t('[data-open="'+e+'"]'),this.$anchor.attr({"aria-controls":e,"data-is-focus":!1,"data-yeti-box":e,"aria-haspopup":!0,"aria-expanded":!1}),this.options.positionClass=this.getPositionClass(),this.counter=4,this.usedPositions=[],this.$element.attr({"aria-hidden":"true","data-yeti-box":e,"data-resize":e,"aria-labelledby":this.$anchor[0].id||Foundation.GetYoDigits(6,"dd-anchor")}),this._events()}},{key:"getPositionClass",value:function(){var t=this.$element[0].className.match(/(top|left|right|bottom)/g);t=t?t[0]:"";var e=/float-(\S+)\s/.exec(this.$anchor[0].className);e=e?e[1]:"";var i=e?e+" "+t:t;return i}},{key:"_reposition",value:function(t){this.usedPositions.push(t?t:"bottom"),!t&&this.usedPositions.indexOf("top")<0?this.$element.addClass("top"):"top"===t&&this.usedPositions.indexOf("bottom")<0?this.$element.removeClass(t):"left"===t&&this.usedPositions.indexOf("right")<0?this.$element.removeClass(t).addClass("right"):"right"===t&&this.usedPositions.indexOf("left")<0?this.$element.removeClass(t).addClass("left"):!t&&this.usedPositions.indexOf("top")>-1&&this.usedPositions.indexOf("left")<0?this.$element.addClass("left"):"top"===t&&this.usedPositions.indexOf("bottom")>-1&&this.usedPositions.indexOf("left")<0?this.$element.removeClass(t).addClass("left"):"left"===t&&this.usedPositions.indexOf("right")>-1&&this.usedPositions.indexOf("bottom")<0?this.$element.removeClass(t):"right"===t&&this.usedPositions.indexOf("left")>-1&&this.usedPositions.indexOf("bottom")<0?this.$element.removeClass(t):this.$element.removeClass(t),this.classChanged=!0,this.counter--}},{key:"_setPosition",value:function(){if("false"===this.$anchor.attr("aria-expanded"))return!1;var t=this.getPositionClass(),e=Foundation.Box.GetDimensions(this.$element),i=(Foundation.Box.GetDimensions(this.$anchor),"left"===t?"left":"right"===t?"left":"top"),n="top"===i?"height":"width";"height"===n?this.options.vOffset:this.options.hOffset;if(e.width>=e.windowDims.width||!this.counter&&!Foundation.Box.ImNotTouchingYou(this.$element))return this.$element.offset(Foundation.Box.GetOffsets(this.$element,this.$anchor,"center bottom",this.options.vOffset,this.options.hOffset,!0)).css({width:e.windowDims.width-2*this.options.hOffset,height:"auto"}),this.classChanged=!0,!1;for(this.$element.offset(Foundation.Box.GetOffsets(this.$element,this.$anchor,t,this.options.vOffset,this.options.hOffset));!Foundation.Box.ImNotTouchingYou(this.$element,!1,!0)&&this.counter;)this._reposition(t),this._setPosition()}},{key:"_events",value:function(){var e=this;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":this._setPosition.bind(this)}),this.options.hover&&(this.$anchor.off("mouseenter.zf.dropdown mouseleave.zf.dropdown").on("mouseenter.zf.dropdown",function(){clearTimeout(e.timeout),e.timeout=setTimeout(function(){e.open(),e.$anchor.data("hover",!0)},e.options.hoverDelay)}).on("mouseleave.zf.dropdown",function(){clearTimeout(e.timeout),e.timeout=setTimeout(function(){e.close(),e.$anchor.data("hover",!1)},e.options.hoverDelay)}),this.options.hoverPane&&this.$element.off("mouseenter.zf.dropdown mouseleave.zf.dropdown").on("mouseenter.zf.dropdown",function(){clearTimeout(e.timeout)}).on("mouseleave.zf.dropdown",function(){clearTimeout(e.timeout),e.timeout=setTimeout(function(){e.close(),e.$anchor.data("hover",!1)},e.options.hoverDelay)})),this.$anchor.add(this.$element).on("keydown.zf.dropdown",function(i){var n=t(this),s=Foundation.Keyboard.findFocusable(e.$element);Foundation.Keyboard.handleKey(i,"Dropdown",{tab_forward:function(){e.$element.find(":focus").is(s.eq(-1))&&(e.options.trapFocus?(s.eq(0).focus(),i.preventDefault()):e.close())},tab_backward:function(){(e.$element.find(":focus").is(s.eq(0))||e.$element.is(":focus"))&&(e.options.trapFocus?(s.eq(-1).focus(),i.preventDefault()):e.close())},open:function(){n.is(e.$anchor)&&(e.open(),e.$element.attr("tabindex",-1).focus(),i.preventDefault())},close:function(){e.close(),e.$anchor.focus()}})})}},{key:"_addBodyHandler",value:function(){var e=t(document.body).not(this.$element),i=this;e.off("click.zf.dropdown").on("click.zf.dropdown",function(t){i.$anchor.is(t.target)||i.$anchor.find(t.target).length||i.$element.find(t.target).length||(i.close(),e.off("click.zf.dropdown"))})}},{key:"open",value:function(){if(this.$element.trigger("closeme.zf.dropdown",this.$element.attr("id")),this.$anchor.addClass("hover").attr({"aria-expanded":!0}),this._setPosition(),this.$element.addClass("is-open").attr({"aria-hidden":!1}),this.options.autoFocus){var t=Foundation.Keyboard.findFocusable(this.$element);t.length&&t.eq(0).focus()}this.options.closeOnClick&&this._addBodyHandler(),this.$element.trigger("show.zf.dropdown",[this.$element])}},{key:"close",value:function(){if(!this.$element.hasClass("is-open"))return!1;if(this.$element.removeClass("is-open").attr({"aria-hidden":!0}),this.$anchor.removeClass("hover").attr("aria-expanded",!1),this.classChanged){var t=this.getPositionClass();t&&this.$element.removeClass(t),this.$element.addClass(this.options.positionClass).css({height:"",width:""}),this.classChanged=!1,this.counter=4,this.usedPositions.length=0}this.$element.trigger("hide.zf.dropdown",[this.$element])}},{key:"toggle",value:function(){if(this.$element.hasClass("is-open")){if(this.$anchor.data("hover"))return;this.close()}else this.open()}},{key:"destroy",value:function(){this.$element.off(".zf.trigger").hide(),this.$anchor.off(".zf.dropdown"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={hoverDelay:250,hover:!1,hoverPane:!1,vOffset:1,hOffset:1,positionClass:"",trapFocus:!1,autoFocus:!1,closeOnClick:!1},Foundation.plugin(e,"Dropdown")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),Foundation.Nest.Feather(this.$element,"dropdown"),this._init(),Foundation.registerPlugin(this,"DropdownMenu"),Foundation.Keyboard.register("DropdownMenu",{ENTER:"open",SPACE:"open",ARROW_RIGHT:"next",ARROW_UP:"up",ARROW_DOWN:"down",ARROW_LEFT:"previous",ESCAPE:"close"})}return _createClass(e,[{key:"_init",value:function(){var t=this.$element.find("li.is-dropdown-submenu-parent");this.$element.children(".is-dropdown-submenu-parent").children(".is-dropdown-submenu").addClass("first-sub"),this.$menuItems=this.$element.find('[role="menuitem"]'),this.$tabs=this.$element.children('[role="menuitem"]'),this.$tabs.find("ul.is-dropdown-submenu").addClass(this.options.verticalClass),this.$element.hasClass(this.options.rightClass)||"right"===this.options.alignment||Foundation.rtl()||this.$element.parents(".top-bar-right").is("*")?(this.options.alignment="right",t.addClass("opens-left")):t.addClass("opens-right"),this.changed=!1,this._events()}},{key:"_events",value:function(){var e=this,i="ontouchstart"in window||"undefined"!=typeof window.ontouchstart,n="is-dropdown-submenu-parent",s=function(s){var o=t(s.target).parentsUntil("ul","."+n),a=o.hasClass(n),r="true"===o.attr("data-is-click");o.children(".is-dropdown-submenu");if(a)if(r){if(!e.options.closeOnClick||!e.options.clickOpen&&!i||e.options.forceFollow&&i)return;s.stopImmediatePropagation(),s.preventDefault(),e._hide(o)}else s.preventDefault(),s.stopImmediatePropagation(),e._show(o.children(".is-dropdown-submenu")),o.add(o.parentsUntil(e.$element,"."+n)).attr("data-is-click",!0)};(this.options.clickOpen||i)&&this.$menuItems.on("click.zf.dropdownmenu touchstart.zf.dropdownmenu",s),this.options.disableHover||this.$menuItems.on("mouseenter.zf.dropdownmenu",function(i){var s=t(this),o=s.hasClass(n);o&&(clearTimeout(e.delay),e.delay=setTimeout(function(){e._show(s.children(".is-dropdown-submenu"))},e.options.hoverDelay))}).on("mouseleave.zf.dropdownmenu",function(i){var s=t(this),o=s.hasClass(n);if(o&&e.options.autoclose){if("true"===s.attr("data-is-click")&&e.options.clickOpen)return!1;clearTimeout(e.delay),e.delay=setTimeout(function(){e._hide(s)},e.options.closingTime)}}),this.$menuItems.on("keydown.zf.dropdownmenu",function(i){var n,s,o=t(i.target).parentsUntil("ul",'[role="menuitem"]'),a=e.$tabs.index(o)>-1,r=a?e.$tabs:o.siblings("li").add(o);r.each(function(e){return t(this).is(o)?(n=r.eq(e-1),void(s=r.eq(e+1))):void 0});var l=function(){o.is(":last-child")||(s.children("a:first").focus(),i.preventDefault())},u=function(){n.children("a:first").focus(),i.preventDefault()},d=function(){var t=o.children("ul.is-dropdown-submenu");t.length&&(e._show(t),o.find("li > a:first").focus(),i.preventDefault())},h=function(){var t=o.parent("ul").parent("li");t.children("a:first").focus(),e._hide(t),i.preventDefault()},c={open:d,close:function(){e._hide(e.$element),e.$menuItems.find("a:first").focus(),i.preventDefault()},handled:function(){i.stopImmediatePropagation()}};a?e.$element.hasClass(e.options.verticalClass)?"left"===e.options.alignment?t.extend(c,{down:l,up:u,next:d,previous:h}):t.extend(c,{down:l,up:u,next:h,previous:d}):t.extend(c,{next:l,previous:u,down:d,up:h}):"left"===e.options.alignment?t.extend(c,{next:d,previous:h,down:l,up:u}):t.extend(c,{next:h,previous:d,down:l,up:u}),Foundation.Keyboard.handleKey(i,"DropdownMenu",c)})}},{key:"_addBodyHandler",value:function(){var e=t(document.body),i=this;e.off("mouseup.zf.dropdownmenu touchend.zf.dropdownmenu").on("mouseup.zf.dropdownmenu touchend.zf.dropdownmenu",function(t){var n=i.$element.find(t.target);n.length||(i._hide(),e.off("mouseup.zf.dropdownmenu touchend.zf.dropdownmenu"))})}},{key:"_show",value:function(e){var i=this.$tabs.index(this.$tabs.filter(function(i,n){return t(n).find(e).length>0})),n=e.parent("li.is-dropdown-submenu-parent").siblings("li.is-dropdown-submenu-parent");this._hide(n,i),e.css("visibility","hidden").addClass("js-dropdown-active").attr({"aria-hidden":!1}).parent("li.is-dropdown-submenu-parent").addClass("is-active").attr({"aria-expanded":!0});var s=Foundation.Box.ImNotTouchingYou(e,null,!0);if(!s){var o="left"===this.options.alignment?"-right":"-left",a=e.parent(".is-dropdown-submenu-parent");a.removeClass("opens"+o).addClass("opens-"+this.options.alignment),s=Foundation.Box.ImNotTouchingYou(e,null,!0),s||a.removeClass("opens-"+this.options.alignment).addClass("opens-inner"),this.changed=!0}e.css("visibility",""),this.options.closeOnClick&&this._addBodyHandler(),this.$element.trigger("show.zf.dropdownmenu",[e])}},{key:"_hide",value:function(t,e){var i;i=t&&t.length?t:void 0!==e?this.$tabs.not(function(t,i){return t===e}):this.$element;var n=i.hasClass("is-active")||i.find(".is-active").length>0;if(n){if(i.find("li.is-active").add(i).attr({"aria-expanded":!1,"data-is-click":!1}).removeClass("is-active"),i.find("ul.js-dropdown-active").attr({"aria-hidden":!0}).removeClass("js-dropdown-active"),this.changed||i.find("opens-inner").length){var s="left"===this.options.alignment?"right":"left";i.find("li.is-dropdown-submenu-parent").add(i).removeClass("opens-inner opens-"+this.options.alignment).addClass("opens-"+s),this.changed=!1}this.$element.trigger("hide.zf.dropdownmenu",[i])}}},{key:"destroy",value:function(){this.$menuItems.off(".zf.dropdownmenu").removeAttr("data-is-click").removeClass("is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner"),t(document.body).off(".zf.dropdownmenu"),Foundation.Nest.Burn(this.$element,"dropdown"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={disableHover:!1,autoclose:!0,hoverDelay:50,clickOpen:!1,closingTime:500,alignment:"left",closeOnClick:!0,verticalClass:"vertical",rightClass:"align-right",forceFollow:!0},Foundation.plugin(e,"DropdownMenu")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Equalizer")}return _createClass(e,[{key:"_init",value:function(){var e=this.$element.attr("data-equalizer")||"",i=this.$element.find('[data-equalizer-watch="'+e+'"]');this.$watched=i.length?i:this.$element.find("[data-equalizer-watch]"),this.$element.attr("data-resize",e||Foundation.GetYoDigits(6,"eq")),this.hasNested=this.$element.find("[data-equalizer]").length>0,this.isNested=this.$element.parentsUntil(document.body,"[data-equalizer]").length>0,this.isOn=!1,this._bindHandler={onResizeMeBound:this._onResizeMe.bind(this),onPostEqualizedBound:this._onPostEqualized.bind(this)};var n,s=this.$element.find("img");this.options.equalizeOn?(n=this._checkMQ(),t(window).on("changed.zf.mediaquery",this._checkMQ.bind(this))):this._events(),(void 0!==n&&n===!1||void 0===n)&&(s.length?Foundation.onImagesLoaded(s,this._reflow.bind(this)):this._reflow())}},{key:"_pauseEvents",value:function(){this.isOn=!1,this.$element.off({".zf.equalizer":this._bindHandler.onPostEqualizedBound,"resizeme.zf.trigger":this._bindHandler.onResizeMeBound})}},{key:"_onResizeMe",value:function(t){this._reflow()}},{key:"_onPostEqualized",value:function(t){t.target!==this.$element[0]&&this._reflow()}},{key:"_events",value:function(){this._pauseEvents(),this.hasNested?this.$element.on("postequalized.zf.equalizer",this._bindHandler.onPostEqualizedBound):this.$element.on("resizeme.zf.trigger",this._bindHandler.onResizeMeBound),this.isOn=!0}},{key:"_checkMQ",value:function(){var t=!Foundation.MediaQuery.atLeast(this.options.equalizeOn);return t?this.isOn&&(this._pauseEvents(),this.$watched.css("height","auto")):this.isOn||this._events(),t}},{key:"_killswitch",value:function(){}},{key:"_reflow",value:function(){return!this.options.equalizeOnStack&&this._isStacked()?(this.$watched.css("height","auto"),!1):void(this.options.equalizeByRow?this.getHeightsByRow(this.applyHeightByRow.bind(this)):this.getHeights(this.applyHeight.bind(this)))}},{key:"_isStacked",value:function(){return this.$watched[0].getBoundingClientRect().top!==this.$watched[1].getBoundingClientRect().top}},{key:"getHeights",value:function(t){for(var e=[],i=0,n=this.$watched.length;n>i;i++)this.$watched[i].style.height="auto",e.push(this.$watched[i].offsetHeight);t(e)}},{key:"getHeightsByRow",value:function(e){var i=this.$watched.length?this.$watched.first().offset().top:0,n=[],s=0;n[s]=[];for(var o=0,a=this.$watched.length;a>o;o++){this.$watched[o].style.height="auto";var r=t(this.$watched[o]).offset().top;r!=i&&(s++,n[s]=[],i=r),n[s].push([this.$watched[o],this.$watched[o].offsetHeight])}for(var l=0,u=n.length;u>l;l++){var d=t(n[l]).map(function(){return this[1]}).get(),h=Math.max.apply(null,d);n[l].push(h)}e(n)}},{key:"applyHeight",value:function(t){var e=Math.max.apply(null,t);this.$element.trigger("preequalized.zf.equalizer"),this.$watched.css("height",e),this.$element.trigger("postequalized.zf.equalizer")}},{key:"applyHeightByRow",value:function(e){this.$element.trigger("preequalized.zf.equalizer");for(var i=0,n=e.length;n>i;i++){var s=e[i].length,o=e[i][s-1];if(2>=s)t(e[i][0][0]).css({height:"auto"});else{this.$element.trigger("preequalizedrow.zf.equalizer");for(var a=0,r=s-1;r>a;a++)t(e[i][a][0]).css({height:o});this.$element.trigger("postequalizedrow.zf.equalizer")}}this.$element.trigger("postequalized.zf.equalizer")}},{key:"destroy",value:function(){this._pauseEvents(),this.$watched.css("height","auto"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={equalizeOnStack:!0,equalizeByRow:!1,equalizeOn:""},Foundation.plugin(e,"Equalizer")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,n),this.rules=[],this.currentPath="",this._init(),this._events(),Foundation.registerPlugin(this,"Interchange")}return _createClass(e,[{key:"_init",value:function(){this._addBreakpoints(),this._generateRules(),this._reflow()}},{key:"_events",value:function(){t(window).on("resize.zf.interchange",Foundation.util.throttle(this._reflow.bind(this),50))}},{key:"_reflow",value:function(){var t;for(var e in this.rules)if(this.rules.hasOwnProperty(e)){var i=this.rules[e];window.matchMedia(i.query).matches&&(t=i)}t&&this.replace(t.path)}},{key:"_addBreakpoints",value:function(){for(var t in Foundation.MediaQuery.queries)if(Foundation.MediaQuery.queries.hasOwnProperty(t)){var i=Foundation.MediaQuery.queries[t];e.SPECIAL_QUERIES[i.name]=i.value}}},{key:"_generateRules",value:function(t){var i,n=[];i=this.options.rules?this.options.rules:this.$element.data("interchange").match(/\[.*?\]/g);for(var s in i)if(i.hasOwnProperty(s)){var o=i[s].slice(1,-1).split(", "),a=o.slice(0,-1).join(""),r=o[o.length-1];e.SPECIAL_QUERIES[r]&&(r=e.SPECIAL_QUERIES[r]),n.push({path:a,query:r})}this.rules=n}},{key:"replace",value:function(e){if(this.currentPath!==e){var i=this,n="replaced.zf.interchange";"IMG"===this.$element[0].nodeName?this.$element.attr("src",e).load(function(){i.currentPath=e}).trigger(n):e.match(/\.(gif|jpg|jpeg|png|svg|tiff)([?#].*)?/i)?this.$element.css({"background-image":"url("+e+")"}).trigger(n):t.get(e,function(s){i.$element.html(s).trigger(n),t(s).foundation(),i.currentPath=e})}}},{key:"destroy",value:function(){}}]),e}();e.defaults={rules:null},e.SPECIAL_QUERIES={landscape:"screen and (orientation: landscape)",portrait:"screen and (orientation: portrait)",retina:"only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)"},Foundation.plugin(e,"Interchange")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Magellan")}return _createClass(e,[{key:"_init",value:function(){var e=this.$element[0].id||Foundation.GetYoDigits(6,"magellan");this.$targets=t("[data-magellan-target]"),this.$links=this.$element.find("a"),this.$element.attr({"data-resize":e,"data-scroll":e,id:e}),this.$active=t(),this.scrollPos=parseInt(window.pageYOffset,10),this._events()}},{key:"calcPoints",value:function(){var e=this,i=document.body,n=document.documentElement;this.points=[],this.winHeight=Math.round(Math.max(window.innerHeight,n.clientHeight)),this.docHeight=Math.round(Math.max(i.scrollHeight,i.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight)),this.$targets.each(function(){var i=t(this),n=Math.round(i.offset().top-e.options.threshold);i.targetPoint=n,e.points.push(n)})}},{key:"_events",value:function(){var e=this;t("html, body"),{duration:e.options.animationDuration,easing:e.options.animationEasing};t(window).one("load",function(){e.options.deepLinking&&location.hash&&e.scrollToLoc(location.hash),e.calcPoints(),e._updateActive()}),this.$element.on({"resizeme.zf.trigger":this.reflow.bind(this),"scrollme.zf.trigger":this._updateActive.bind(this)}).on("click.zf.magellan",'a[href^="#"]',function(t){t.preventDefault();var i=this.getAttribute("href");e.scrollToLoc(i)})}},{key:"scrollToLoc",value:function(e){var i=Math.round(t(e).offset().top-this.options.threshold/2-this.options.barOffset);t("html, body").stop(!0).animate({scrollTop:i},this.options.animationDuration,this.options.animationEasing)}},{key:"reflow",value:function(){this.calcPoints(),this._updateActive()}},{key:"_updateActive",value:function(){var t,e=parseInt(window.pageYOffset,10);if(e+this.winHeight===this.docHeight)t=this.points.length-1;else if(e<this.points[0])t=0;else{var i=this.scrollPos<e,n=this,s=this.points.filter(function(t,s){return i?t-n.options.barOffset<=e:t-n.options.barOffset-n.options.threshold<=e});t=s.length?s.length-1:0}if(this.$active.removeClass(this.options.activeClass),this.$active=this.$links.eq(t).addClass(this.options.activeClass),this.options.deepLinking){var o=this.$active[0].getAttribute("href");window.history.pushState?window.history.pushState(null,null,o):window.location.hash=o}this.scrollPos=e,this.$element.trigger("update.zf.magellan",[this.$active])}},{key:"destroy",value:function(){if(this.$element.off(".zf.trigger .zf.magellan").find("."+this.options.activeClass).removeClass(this.options.activeClass),this.options.deepLinking){var t=this.$active[0].getAttribute("href");window.location.hash.replace(t,"")}Foundation.unregisterPlugin(this)}}]),e}();e.defaults={animationDuration:500,animationEasing:"linear",threshold:50,activeClass:"active",deepLinking:!1,barOffset:0},Foundation.plugin(e,"Magellan")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this.$lastTrigger=t(),this.$triggers=t(),this._init(),this._events(),Foundation.registerPlugin(this,"OffCanvas")}return _createClass(e,[{key:"_init",value:function(){var e=this.$element.attr("id");if(this.$element.attr("aria-hidden","true"),this.$triggers=t(document).find('[data-open="'+e+'"], [data-close="'+e+'"], [data-toggle="'+e+'"]').attr("aria-expanded","false").attr("aria-controls",e),this.options.closeOnClick)if(t(".js-off-canvas-exit").length)this.$exiter=t(".js-off-canvas-exit");else{var i=document.createElement("div");i.setAttribute("class","js-off-canvas-exit"),t("[data-off-canvas-content]").append(i),this.$exiter=t(i)}this.options.isRevealed=this.options.isRevealed||new RegExp(this.options.revealClass,"g").test(this.$element[0].className),this.options.isRevealed&&(this.options.revealOn=this.options.revealOn||this.$element[0].className.match(/(reveal-for-medium|reveal-for-large)/g)[0].split("-")[2],this._setMQChecker()),this.options.transitionTime||(this.options.transitionTime=1e3*parseFloat(window.getComputedStyle(t("[data-off-canvas-wrapper]")[0]).transitionDuration))}},{key:"_events",value:function(){this.$element.off(".zf.trigger .zf.offcanvas").on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"keydown.zf.offcanvas":this._handleKeyboard.bind(this)}),this.options.closeOnClick&&this.$exiter.length&&this.$exiter.on({ "click.zf.offcanvas":this.close.bind(this)})}},{key:"_setMQChecker",value:function(){var e=this;t(window).on("changed.zf.mediaquery",function(){Foundation.MediaQuery.atLeast(e.options.revealOn)?e.reveal(!0):e.reveal(!1)}).one("load.zf.offcanvas",function(){Foundation.MediaQuery.atLeast(e.options.revealOn)&&e.reveal(!0)})}},{key:"reveal",value:function(t){var e=this.$element.find("[data-close]");t?(this.close(),this.isRevealed=!0,this.$element.off("open.zf.trigger toggle.zf.trigger"),e.length&&e.hide()):(this.isRevealed=!1,this.$element.on({"open.zf.trigger":this.open.bind(this),"toggle.zf.trigger":this.toggle.bind(this)}),e.length&&e.show())}},{key:"open",value:function(e,i){if(!this.$element.hasClass("is-open")&&!this.isRevealed){var n=this;t(document.body);this.options.forceTop&&t("body").scrollTop(0),Foundation.Move(this.options.transitionTime,this.$element,function(){t("[data-off-canvas-wrapper]").addClass("is-off-canvas-open is-open-"+n.options.position),n.$element.addClass("is-open")}),this.$triggers.attr("aria-expanded","true"),this.$element.attr("aria-hidden","false").trigger("opened.zf.offcanvas"),this.options.closeOnClick&&this.$exiter.addClass("is-visible"),i&&(this.$lastTrigger=i),this.options.autoFocus&&this.$element.one(Foundation.transitionend(this.$element),function(){n.$element.find("a, button").eq(0).focus()}),this.options.trapFocus&&(t("[data-off-canvas-content]").attr("tabindex","-1"),this._trapFocus())}}},{key:"_trapFocus",value:function(){var t=Foundation.Keyboard.findFocusable(this.$element),e=t.eq(0),i=t.eq(-1);t.off(".zf.offcanvas").on("keydown.zf.offcanvas",function(t){9!==t.which&&9!==t.keycode||(t.target!==i[0]||t.shiftKey||(t.preventDefault(),e.focus()),t.target===e[0]&&t.shiftKey&&(t.preventDefault(),i.focus()))})}},{key:"close",value:function(e){if(this.$element.hasClass("is-open")&&!this.isRevealed){var i=this;t("[data-off-canvas-wrapper]").removeClass("is-off-canvas-open is-open-"+i.options.position),i.$element.removeClass("is-open"),this.$element.attr("aria-hidden","true").trigger("closed.zf.offcanvas"),this.options.closeOnClick&&this.$exiter.removeClass("is-visible"),this.$triggers.attr("aria-expanded","false"),this.options.trapFocus&&t("[data-off-canvas-content]").removeAttr("tabindex")}}},{key:"toggle",value:function(t,e){this.$element.hasClass("is-open")?this.close(t,e):this.open(t,e)}},{key:"_handleKeyboard",value:function(t){27===t.which&&(t.stopPropagation(),t.preventDefault(),this.close(),this.$lastTrigger.focus())}},{key:"destroy",value:function(){this.close(),this.$element.off(".zf.trigger .zf.offcanvas"),this.$exiter.off(".zf.offcanvas"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={closeOnClick:!0,transitionTime:0,position:"left",forceTop:!0,isRevealed:!1,revealOn:null,autoFocus:!0,revealClass:"reveal-for-",trapFocus:!1},Foundation.plugin(e,"OffCanvas")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Orbit"),Foundation.Keyboard.register("Orbit",{ltr:{ARROW_RIGHT:"next",ARROW_LEFT:"previous"},rtl:{ARROW_LEFT:"next",ARROW_RIGHT:"previous"}})}return _createClass(e,[{key:"_init",value:function(){this.$wrapper=this.$element.find("."+this.options.containerClass),this.$slides=this.$element.find("."+this.options.slideClass);var t=this.$element.find("img"),e=this.$slides.filter(".is-active");e.length||this.$slides.eq(0).addClass("is-active"),this.options.useMUI||this.$slides.addClass("no-motionui"),t.length?Foundation.onImagesLoaded(t,this._prepareForOrbit.bind(this)):this._prepareForOrbit(),this.options.bullets&&this._loadBullets(),this._events(),this.options.autoPlay&&this.$slides.length>1&&this.geoSync(),this.options.accessible&&this.$wrapper.attr("tabindex",0)}},{key:"_loadBullets",value:function(){this.$bullets=this.$element.find("."+this.options.boxOfBullets).find("button")}},{key:"geoSync",value:function(){var t=this;this.timer=new Foundation.Timer(this.$element,{duration:this.options.timerDelay,infinite:!1},function(){t.changeSlide(!0)}),this.timer.start()}},{key:"_prepareForOrbit",value:function(){var t=this;this._setWrapperHeight(function(e){t._setSlideHeight(e)})}},{key:"_setWrapperHeight",value:function(e){var i,n=0,s=0;this.$slides.each(function(){i=this.getBoundingClientRect().height,t(this).attr("data-slide",s),s&&t(this).css({position:"relative",display:"none"}),n=i>n?i:n,s++}),s===this.$slides.length&&(this.$wrapper.css({height:n}),e(n))}},{key:"_setSlideHeight",value:function(e){this.$slides.each(function(){t(this).css("max-height",e)})}},{key:"_events",value:function(){var e=this;if(this.$slides.length>1){if(this.options.swipe&&this.$slides.off("swipeleft.zf.orbit swiperight.zf.orbit").on("swipeleft.zf.orbit",function(t){t.preventDefault(),e.changeSlide(!0)}).on("swiperight.zf.orbit",function(t){t.preventDefault(),e.changeSlide(!1)}),this.options.autoPlay&&(this.$slides.on("click.zf.orbit",function(){e.$element.data("clickedOn",!e.$element.data("clickedOn")),e.timer[e.$element.data("clickedOn")?"pause":"start"]()}),this.options.pauseOnHover&&this.$element.on("mouseenter.zf.orbit",function(){e.timer.pause()}).on("mouseleave.zf.orbit",function(){e.$element.data("clickedOn")||e.timer.start()})),this.options.navButtons){var i=this.$element.find("."+this.options.nextClass+", ."+this.options.prevClass);i.attr("tabindex",0).on("click.zf.orbit touchend.zf.orbit",function(i){i.preventDefault(),e.changeSlide(t(this).hasClass(e.options.nextClass))})}this.options.bullets&&this.$bullets.on("click.zf.orbit touchend.zf.orbit",function(){if(/is-active/g.test(this.className))return!1;var i=t(this).data("slide"),n=i>e.$slides.filter(".is-active").data("slide"),s=e.$slides.eq(i);e.changeSlide(n,s,i)}),this.$wrapper.add(this.$bullets).on("keydown.zf.orbit",function(i){Foundation.Keyboard.handleKey(i,"Orbit",{next:function(){e.changeSlide(!0)},previous:function(){e.changeSlide(!1)},handled:function(){t(i.target).is(e.$bullets)&&e.$bullets.filter(".is-active").focus()}})})}}},{key:"changeSlide",value:function(t,e,i){var n=this.$slides.filter(".is-active").eq(0);if(/mui/g.test(n[0].className))return!1;var s,o=this.$slides.first(),a=this.$slides.last(),r=t?"Right":"Left",l=t?"Left":"Right",u=this;s=e?e:t?this.options.infiniteWrap?n.next("."+this.options.slideClass).length?n.next("."+this.options.slideClass):o:n.next("."+this.options.slideClass):this.options.infiniteWrap?n.prev("."+this.options.slideClass).length?n.prev("."+this.options.slideClass):a:n.prev("."+this.options.slideClass),s.length&&(this.options.bullets&&(i=i||this.$slides.index(s),this._updateBullets(i)),this.options.useMUI?(Foundation.Motion.animateIn(s.addClass("is-active").css({position:"absolute",top:0}),this.options["animInFrom"+r],function(){s.css({position:"relative",display:"block"}).attr("aria-live","polite")}),Foundation.Motion.animateOut(n.removeClass("is-active"),this.options["animOutTo"+l],function(){n.removeAttr("aria-live"),u.options.autoPlay&&!u.timer.isPaused&&u.timer.restart()})):(n.removeClass("is-active is-in").removeAttr("aria-live").hide(),s.addClass("is-active is-in").attr("aria-live","polite").show(),this.options.autoPlay&&!this.timer.isPaused&&this.timer.restart()),this.$element.trigger("slidechange.zf.orbit",[s]))}},{key:"_updateBullets",value:function(t){var e=this.$element.find("."+this.options.boxOfBullets).find(".is-active").removeClass("is-active").blur(),i=e.find("span:last").detach();this.$bullets.eq(t).addClass("is-active").append(i)}},{key:"destroy",value:function(){this.$element.off(".zf.orbit").find("*").off(".zf.orbit").end().hide(),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={bullets:!0,navButtons:!0,animInFromRight:"slide-in-right",animOutToRight:"slide-out-right",animInFromLeft:"slide-in-left",animOutToLeft:"slide-out-left",autoPlay:!0,timerDelay:5e3,infiniteWrap:!0,swipe:!0,pauseOnHover:!0,accessible:!0,containerClass:"orbit-container",slideClass:"orbit-slide",boxOfBullets:"orbit-bullets",nextClass:"orbit-next",prevClass:"orbit-previous",useMUI:!0},Foundation.plugin(e,"Orbit")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=t(i),this.rules=this.$element.data("responsive-menu"),this.currentMq=null,this.currentPlugin=null,this._init(),this._events(),Foundation.registerPlugin(this,"ResponsiveMenu")}return _createClass(e,[{key:"_init",value:function(){if("string"==typeof this.rules){for(var e={},n=this.rules.split(" "),s=0;s<n.length;s++){var o=n[s].split("-"),a=o.length>1?o[0]:"small",r=o.length>1?o[1]:o[0];null!==i[r]&&(e[a]=i[r])}this.rules=e}t.isEmptyObject(this.rules)||this._checkMediaQueries()}},{key:"_events",value:function(){var e=this;t(window).on("changed.zf.mediaquery",function(){e._checkMediaQueries()})}},{key:"_checkMediaQueries",value:function(){var e,n=this;t.each(this.rules,function(t){Foundation.MediaQuery.atLeast(t)&&(e=t)}),e&&(this.currentPlugin instanceof this.rules[e].plugin||(t.each(i,function(t,e){n.$element.removeClass(e.cssClass)}),this.$element.addClass(this.rules[e].cssClass),this.currentPlugin&&this.currentPlugin.destroy(),this.currentPlugin=new this.rules[e].plugin(this.$element,{})))}},{key:"destroy",value:function(){this.currentPlugin.destroy(),t(window).off(".zf.ResponsiveMenu"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={};var i={dropdown:{cssClass:"dropdown",plugin:Foundation._plugins["dropdown-menu"]||null},drilldown:{cssClass:"drilldown",plugin:Foundation._plugins.drilldown||null},accordion:{cssClass:"accordion-menu",plugin:Foundation._plugins["accordion-menu"]||null}};Foundation.plugin(e,"ResponsiveMenu")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=t(i),this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),this._events(),Foundation.registerPlugin(this,"ResponsiveToggle")}return _createClass(e,[{key:"_init",value:function(){var e=this.$element.data("responsive-toggle");e||console.error("Your tab bar needs an ID of a Menu as the value of data-tab-bar."),this.$targetMenu=t("#"+e),this.$toggler=this.$element.find("[data-toggle]"),this._update()}},{key:"_events",value:function(){this._updateMqHandler=this._update.bind(this),t(window).on("changed.zf.mediaquery",this._updateMqHandler),this.$toggler.on("click.zf.responsiveToggle",this.toggleMenu.bind(this))}},{key:"_update",value:function(){Foundation.MediaQuery.atLeast(this.options.hideFor)?(this.$element.hide(),this.$targetMenu.show()):(this.$element.show(),this.$targetMenu.hide())}},{key:"toggleMenu",value:function(){Foundation.MediaQuery.atLeast(this.options.hideFor)||(this.$targetMenu.toggle(0),this.$element.trigger("toggled.zf.responsiveToggle"))}},{key:"destroy",value:function(){this.$element.off(".zf.responsiveToggle"),this.$toggler.off(".zf.responsiveToggle"),t(window).off("changed.zf.mediaquery",this._updateMqHandler),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={hideFor:"medium"},Foundation.plugin(e,"ResponsiveToggle")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){function e(){return/iP(ad|hone|od).*OS/.test(window.navigator.userAgent)}function i(){return/Android/.test(window.navigator.userAgent)}function n(){return e()||i()}var s=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Reveal"),Foundation.Keyboard.register("Reveal",{ENTER:"open",SPACE:"open",ESCAPE:"close",TAB:"tab_forward",SHIFT_TAB:"tab_backward"})}return _createClass(e,[{key:"_init",value:function(){this.id=this.$element.attr("id"),this.isActive=!1,this.cached={mq:Foundation.MediaQuery.current},this.isMobile=n(),this.$anchor=t(t('[data-open="'+this.id+'"]').length?'[data-open="'+this.id+'"]':'[data-toggle="'+this.id+'"]'),this.$anchor.attr({"aria-controls":this.id,"aria-haspopup":!0,tabindex:0}),(this.options.fullScreen||this.$element.hasClass("full"))&&(this.options.fullScreen=!0,this.options.overlay=!1),this.options.overlay&&!this.$overlay&&(this.$overlay=this._makeOverlay(this.id)),this.$element.attr({role:"dialog","aria-hidden":!0,"data-yeti-box":this.id,"data-resize":this.id}),this.$overlay?this.$element.detach().appendTo(this.$overlay):(this.$element.detach().appendTo(t("body")),this.$element.addClass("without-overlay")),this._events(),this.options.deepLink&&window.location.hash==="#"+this.id&&t(window).one("load.zf.reveal",this.open.bind(this))}},{key:"_makeOverlay",value:function(e){var i=t("<div></div>").addClass("reveal-overlay").appendTo("body");return i}},{key:"_updatePosition",value:function(){var e,i,n=this.$element.outerWidth(),s=t(window).width(),o=this.$element.outerHeight(),a=t(window).height();e="auto"===this.options.hOffset?parseInt((s-n)/2,10):parseInt(this.options.hOffset,10),i="auto"===this.options.vOffset?o>a?parseInt(Math.min(100,a/10),10):parseInt((a-o)/4,10):parseInt(this.options.vOffset,10),this.$element.css({top:i+"px"}),this.$overlay&&"auto"===this.options.hOffset||(this.$element.css({left:e+"px"}),this.$element.css({margin:"0px"}))}},{key:"_events",value:function(){var e=this,i=this;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":function(n,s){return n.target===i.$element[0]||t(n.target).parents("[data-closable]")[0]===s?e.close.apply(e):void 0},"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":function(){i._updatePosition()}}),this.$anchor.length&&this.$anchor.on("keydown.zf.reveal",function(t){13!==t.which&&32!==t.which||(t.stopPropagation(),t.preventDefault(),i.open())}),this.options.closeOnClick&&this.options.overlay&&this.$overlay.off(".zf.reveal").on("click.zf.reveal",function(e){e.target===i.$element[0]||t.contains(i.$element[0],e.target)||i.close()}),this.options.deepLink&&t(window).on("popstate.zf.reveal:"+this.id,this._handleState.bind(this))}},{key:"_handleState",value:function(t){window.location.hash!=="#"+this.id||this.isActive?this.close():this.open()}},{key:"open",value:function(){var e=this;if(this.options.deepLink){var i="#"+this.id;window.history.pushState?window.history.pushState(null,null,i):window.location.hash=i}if(this.isActive=!0,this.$element.css({visibility:"hidden"}).show().scrollTop(0),this.options.overlay&&this.$overlay.css({visibility:"hidden"}).show(),this._updatePosition(),this.$element.hide().css({visibility:""}),this.$overlay&&(this.$overlay.css({visibility:""}).hide(),this.$element.hasClass("fast")?this.$overlay.addClass("fast"):this.$element.hasClass("slow")&&this.$overlay.addClass("slow")),this.options.multipleOpened||this.$element.trigger("closeme.zf.reveal",this.id),this.options.animationIn){var n;!function(){var t=function(){n.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),console.log("focus")};n=e,e.options.overlay&&Foundation.Motion.animateIn(e.$overlay,"fade-in"),Foundation.Motion.animateIn(e.$element,e.options.animationIn,function(){e.focusableElements=Foundation.Keyboard.findFocusable(e.$element),t()})}()}else this.options.overlay&&this.$overlay.show(0),this.$element.show(this.options.showDelay);this.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),this.$element.trigger("open.zf.reveal"),this.isMobile?(this.originalScrollPos=window.pageYOffset,t("html, body").addClass("is-reveal-open")):t("body").addClass("is-reveal-open"),setTimeout(function(){e._extraHandlers()},0)}},{key:"_extraHandlers",value:function(){var e=this;this.focusableElements=Foundation.Keyboard.findFocusable(this.$element),this.options.overlay||!this.options.closeOnClick||this.options.fullScreen||t("body").on("click.zf.reveal",function(i){i.target===e.$element[0]||t.contains(e.$element[0],i.target)||e.close()}),this.options.closeOnEsc&&t(window).on("keydown.zf.reveal",function(t){Foundation.Keyboard.handleKey(t,"Reveal",{close:function(){e.options.closeOnEsc&&(e.close(),e.$anchor.focus())}})}),this.$element.on("keydown.zf.reveal",function(i){var n=t(this);Foundation.Keyboard.handleKey(i,"Reveal",{tab_forward:function(){return e.$element.find(":focus").is(e.focusableElements.eq(-1))?(e.focusableElements.eq(0).focus(),!0):0===e.focusableElements.length?!0:void 0},tab_backward:function(){return e.$element.find(":focus").is(e.focusableElements.eq(0))||e.$element.is(":focus")?(e.focusableElements.eq(-1).focus(),!0):0===e.focusableElements.length?!0:void 0},open:function(){e.$element.find(":focus").is(e.$element.find("[data-close]"))?setTimeout(function(){e.$anchor.focus()},1):n.is(e.focusableElements)&&e.open()},close:function(){e.options.closeOnEsc&&(e.close(),e.$anchor.focus())},handled:function(t){t&&i.preventDefault()}})})}},{key:"close",value:function(){function e(){i.isMobile?(t("html, body").removeClass("is-reveal-open"),i.originalScrollPos&&(t("body").scrollTop(i.originalScrollPos),i.originalScrollPos=null)):t("body").removeClass("is-reveal-open"),i.$element.attr("aria-hidden",!0),i.$element.trigger("closed.zf.reveal")}if(!this.isActive||!this.$element.is(":visible"))return!1;var i=this;this.options.animationOut?(this.options.overlay?Foundation.Motion.animateOut(this.$overlay,"fade-out",e):e(),Foundation.Motion.animateOut(this.$element,this.options.animationOut)):(this.options.overlay?this.$overlay.hide(0,e):e(),this.$element.hide(this.options.hideDelay)),this.options.closeOnEsc&&t(window).off("keydown.zf.reveal"),!this.options.overlay&&this.options.closeOnClick&&t("body").off("click.zf.reveal"),this.$element.off("keydown.zf.reveal"),this.options.resetOnClose&&this.$element.html(this.$element.html()),this.isActive=!1,i.options.deepLink&&(window.history.replaceState?window.history.replaceState("",document.title,window.location.pathname):window.location.hash="")}},{key:"toggle",value:function(){this.isActive?this.close():this.open()}},{key:"destroy",value:function(){this.options.overlay&&(this.$element.appendTo(t("body")),this.$overlay.hide().off().remove()),this.$element.hide().off(),this.$anchor.off(".zf"),t(window).off(".zf.reveal:"+this.id),Foundation.unregisterPlugin(this)}}]),e}();s.defaults={animationIn:"",animationOut:"",showDelay:0,hideDelay:0,closeOnClick:!0,closeOnEsc:!0,multipleOpened:!1,vOffset:"auto",hOffset:"auto",fullScreen:!1,btmOffsetPct:10,overlay:!0,resetOnClose:!1,deepLink:!1},Foundation.plugin(s,"Reveal")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){function e(t,e){return t/e}function i(t,e,i,n){return Math.abs(t.position()[e]+t[n]()/2-i)}var n=function(){function n(e,i){_classCallCheck(this,n),this.$element=e,this.options=t.extend({},n.defaults,this.$element.data(),i),this._init(),Foundation.registerPlugin(this,"Slider"),Foundation.Keyboard.register("Slider",{ltr:{ARROW_RIGHT:"increase",ARROW_UP:"increase",ARROW_DOWN:"decrease",ARROW_LEFT:"decrease",SHIFT_ARROW_RIGHT:"increase_fast",SHIFT_ARROW_UP:"increase_fast",SHIFT_ARROW_DOWN:"decrease_fast",SHIFT_ARROW_LEFT:"decrease_fast"},rtl:{ARROW_LEFT:"increase",ARROW_RIGHT:"decrease",SHIFT_ARROW_LEFT:"increase_fast",SHIFT_ARROW_RIGHT:"decrease_fast"}})}return _createClass(n,[{key:"_init",value:function(){this.inputs=this.$element.find("input"),this.handles=this.$element.find("[data-slider-handle]"),this.$handle=this.handles.eq(0),this.$input=this.inputs.length?this.inputs.eq(0):t("#"+this.$handle.attr("aria-controls")),this.$fill=this.$element.find("[data-slider-fill]").css(this.options.vertical?"height":"width",0);var e=!1,i=this;(this.options.disabled||this.$element.hasClass(this.options.disabledClass))&&(this.options.disabled=!0,this.$element.addClass(this.options.disabledClass)),this.inputs.length||(this.inputs=t().add(this.$input),this.options.binding=!0),this._setInitAttr(0),this._events(this.$handle),this.handles[1]&&(this.options.doubleSided=!0,this.$handle2=this.handles.eq(1),this.$input2=this.inputs.length>1?this.inputs.eq(1):t("#"+this.$handle2.attr("aria-controls")),this.inputs[1]||(this.inputs=this.inputs.add(this.$input2)),e=!0,this._setHandlePos(this.$handle,this.options.initialStart,!0,function(){i._setHandlePos(i.$handle2,i.options.initialEnd,!0)}),this._setInitAttr(1),this._events(this.$handle2)),e||this._setHandlePos(this.$handle,this.options.initialStart,!0)}},{key:"_setHandlePos",value:function(t,i,n,s){if(!this.$element.hasClass(this.options.disabledClass)){i=parseFloat(i),i<this.options.start?i=this.options.start:i>this.options.end&&(i=this.options.end);var o=this.options.doubleSided;if(o)if(0===this.handles.index(t)){var a=parseFloat(this.$handle2.attr("aria-valuenow"));i=i>=a?a-this.options.step:i}else{var r=parseFloat(this.$handle.attr("aria-valuenow"));i=r>=i?r+this.options.step:i}this.options.vertical&&!n&&(i=this.options.end-i);var l=this,u=this.options.vertical,d=u?"height":"width",h=u?"top":"left",c=t[0].getBoundingClientRect()[d],f=this.$element[0].getBoundingClientRect()[d],p=e(i-this.options.start,this.options.end-this.options.start).toFixed(2),m=(f-c)*p,v=(100*e(m,f)).toFixed(this.options.decimal);i=parseFloat(i.toFixed(this.options.decimal));var g={};if(this._setValues(t,i),o){var w,y=0===this.handles.index(t),b=~~(100*e(c,f));if(y)g[h]=v+"%",w=parseFloat(this.$handle2[0].style[h])-v+b,s&&"function"==typeof s&&s();else{var $=parseFloat(this.$handle[0].style[h]);w=v-(isNaN($)?this.options.initialStart/((this.options.end-this.options.start)/100):$)+b}g["min-"+d]=w+"%"}this.$element.one("finished.zf.animate",function(){l.$element.trigger("moved.zf.slider",[t])});var C=this.$element.data("dragging")?1e3/60:this.options.moveTime;Foundation.Move(C,t,function(){t.css(h,v+"%"),l.options.doubleSided?l.$fill.css(g):l.$fill.css(d,100*p+"%")}),clearTimeout(l.timeout),l.timeout=setTimeout(function(){l.$element.trigger("changed.zf.slider",[t])},l.options.changedDelay)}}},{key:"_setInitAttr",value:function(t){var e=this.inputs.eq(t).attr("id")||Foundation.GetYoDigits(6,"slider");this.inputs.eq(t).attr({id:e,max:this.options.end,min:this.options.start,step:this.options.step}),this.handles.eq(t).attr({role:"slider","aria-controls":e,"aria-valuemax":this.options.end,"aria-valuemin":this.options.start,"aria-valuenow":0===t?this.options.initialStart:this.options.initialEnd,"aria-orientation":this.options.vertical?"vertical":"horizontal",tabindex:0})}},{key:"_setValues",value:function(t,e){var i=this.options.doubleSided?this.handles.index(t):0;this.inputs.eq(i).val(e),t.attr("aria-valuenow",e)}},{key:"_handleEvent",value:function(n,s,o){var a,r;if(o)a=this._adjustValue(null,o),r=!0;else{n.preventDefault();var l=this,u=this.options.vertical,d=u?"height":"width",h=u?"top":"left",c=u?n.pageY:n.pageX,f=(this.$handle[0].getBoundingClientRect()[d]/2,this.$element[0].getBoundingClientRect()[d]),p=u?t(window).scrollTop():t(window).scrollLeft(),m=this.$element.offset()[h];n.clientY===n.pageY&&(c+=p);var v,g=c-m;if(v=0>g?0:g>f?f:g,offsetPct=e(v,f),a=(this.options.end-this.options.start)*offsetPct+this.options.start,Foundation.rtl()&&!this.options.vertical&&(a=this.options.end-a),a=l._adjustValue(null,a),r=!1,!s){var w=i(this.$handle,h,v,d),y=i(this.$handle2,h,v,d);s=y>=w?this.$handle:this.$handle2}}this._setHandlePos(s,a,r)}},{key:"_adjustValue",value:function(t,e){var i,n,s,o,a=this.options.step,r=parseFloat(a/2);return i=t?parseFloat(t.attr("aria-valuenow")):e,n=i%a,s=i-n,o=s+a,0===n?i:i=i>=s+r?o:s}},{key:"_events",value:function(e){var i,n=this;if(this.inputs.off("change.zf.slider").on("change.zf.slider",function(e){var i=n.inputs.index(t(this));n._handleEvent(e,n.handles.eq(i),t(this).val())}),this.options.clickSelect&&this.$element.off("click.zf.slider").on("click.zf.slider",function(e){return n.$element.data("dragging")?!1:void(t(e.target).is("[data-slider-handle]")||(n.options.doubleSided?n._handleEvent(e):n._handleEvent(e,n.$handle)))}),this.options.draggable){this.handles.addTouch();var s=t("body");e.off("mousedown.zf.slider").on("mousedown.zf.slider",function(o){e.addClass("is-dragging"),n.$fill.addClass("is-dragging"),n.$element.data("dragging",!0),i=t(o.currentTarget),s.on("mousemove.zf.slider",function(t){t.preventDefault(),n._handleEvent(t,i)}).on("mouseup.zf.slider",function(t){n._handleEvent(t,i),e.removeClass("is-dragging"),n.$fill.removeClass("is-dragging"),n.$element.data("dragging",!1),s.off("mousemove.zf.slider mouseup.zf.slider")})}).on("selectstart.zf.slider touchmove.zf.slider",function(t){t.preventDefault()})}e.off("keydown.zf.slider").on("keydown.zf.slider",function(e){var i,s=t(this),o=n.options.doubleSided?n.handles.index(s):0,a=parseFloat(n.inputs.eq(o).val());Foundation.Keyboard.handleKey(e,"Slider",{decrease:function(){i=a-n.options.step},increase:function(){i=a+n.options.step},decrease_fast:function(){i=a-10*n.options.step},increase_fast:function(){i=a+10*n.options.step},handled:function(){e.preventDefault(),n._setHandlePos(s,i,!0)}})})}},{key:"destroy",value:function(){this.handles.off(".zf.slider"),this.inputs.off(".zf.slider"),this.$element.off(".zf.slider"),Foundation.unregisterPlugin(this)}}]),n}();n.defaults={start:0,end:100,step:1,initialStart:0,initialEnd:100,binding:!1,clickSelect:!0,vertical:!1,draggable:!0,disabled:!1,doubleSided:!1,decimal:2,moveTime:200,disabledClass:"disabled",invertVertical:!1,changedDelay:500},Foundation.plugin(n,"Slider")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){function e(t){return parseInt(window.getComputedStyle(document.body,null).fontSize,10)*t}var i=function(){function i(e,n){_classCallCheck(this,i),this.$element=e,this.options=t.extend({},i.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Sticky")}return _createClass(i,[{key:"_init",value:function(){var e=this.$element.parent("[data-sticky-container]"),i=this.$element[0].id||Foundation.GetYoDigits(6,"sticky"),n=this;e.length||(this.wasWrapped=!0),this.$container=e.length?e:t(this.options.container).wrapInner(this.$element),this.$container.addClass(this.options.containerClass),this.$element.addClass(this.options.stickyClass).attr({"data-resize":i}),this.scrollCount=this.options.checkEvery,this.isStuck=!1,t(window).one("load.zf.sticky",function(){""!==n.options.anchor?n.$anchor=t("#"+n.options.anchor):n._parsePoints(),n._setSizes(function(){n._calc(!1)}),n._events(i.split("-").reverse().join("-"))})}},{key:"_parsePoints",value:function(){for(var e=""==this.options.topAnchor?1:this.options.topAnchor,i=""==this.options.btmAnchor?document.documentElement.scrollHeight:this.options.btmAnchor,n=[e,i],s={},o=0,a=n.length;a>o&&n[o];o++){var r;if("number"==typeof n[o])r=n[o];else{var l=n[o].split(":"),u=t("#"+l[0]);r=u.offset().top,l[1]&&"bottom"===l[1].toLowerCase()&&(r+=u[0].getBoundingClientRect().height)}s[o]=r}this.points=s}},{key:"_events",value:function(e){var i=this,n=this.scrollListener="scroll.zf."+e;this.isOn||(this.canStick&&(this.isOn=!0,t(window).off(n).on(n,function(t){0===i.scrollCount?(i.scrollCount=i.options.checkEvery,i._setSizes(function(){i._calc(!1,window.pageYOffset)})):(i.scrollCount--,i._calc(!1,window.pageYOffset))})),this.$element.off("resizeme.zf.trigger").on("resizeme.zf.trigger",function(t,s){i._setSizes(function(){i._calc(!1),i.canStick?i.isOn||i._events(e):i.isOn&&i._pauseListeners(n)})}))}},{key:"_pauseListeners",value:function(e){this.isOn=!1,t(window).off(e),this.$element.trigger("pause.zf.sticky")}},{key:"_calc",value:function(t,e){return t&&this._setSizes(),this.canStick?(e||(e=window.pageYOffset),void(e>=this.topPoint?e<=this.bottomPoint?this.isStuck||this._setSticky():this.isStuck&&this._removeSticky(!1):this.isStuck&&this._removeSticky(!0))):(this.isStuck&&this._removeSticky(!0),!1)}},{key:"_setSticky",value:function(){var t=this,e=this.options.stickTo,i="top"===e?"marginTop":"marginBottom",n="top"===e?"bottom":"top",s={};s[i]=this.options[i]+"em",s[e]=0,s[n]="auto",s.left=this.$container.offset().left+parseInt(window.getComputedStyle(this.$container[0])["padding-left"],10),this.isStuck=!0,this.$element.removeClass("is-anchored is-at-"+n).addClass("is-stuck is-at-"+e).css(s).trigger("sticky.zf.stuckto:"+e),this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",function(){t._setSizes()})}},{key:"_removeSticky",value:function(t){var e=this.options.stickTo,i="top"===e,n={},s=(this.points?this.points[1]-this.points[0]:this.anchorHeight)-this.elemHeight,o=i?"marginTop":"marginBottom",a=t?"top":"bottom";n[o]=0,n.bottom="auto",t?n.top=0:n.top=s,n.left="",this.isStuck=!1,this.$element.removeClass("is-stuck is-at-"+e).addClass("is-anchored is-at-"+a).css(n).trigger("sticky.zf.unstuckfrom:"+a)}},{key:"_setSizes",value:function(t){this.canStick=Foundation.MediaQuery.atLeast(this.options.stickyOn),this.canStick||t();var e=this.$container[0].getBoundingClientRect().width,i=window.getComputedStyle(this.$container[0]),n=parseInt(i["padding-right"],10);this.$anchor&&this.$anchor.length?this.anchorHeight=this.$anchor[0].getBoundingClientRect().height:this._parsePoints(),this.$element.css({"max-width":e-n+"px"});var s=this.$element[0].getBoundingClientRect().height||this.containerHeight;"none"==this.$element.css("display")&&(s=0),this.containerHeight=s,this.$container.css({height:s}),this.elemHeight=s,this.isStuck&&this.$element.css({left:this.$container.offset().left+parseInt(i["padding-left"],10)}),this._setBreakPoints(s,function(){t&&t()})}},{key:"_setBreakPoints",value:function(t,i){if(!this.canStick){if(!i)return!1;i()}var n=e(this.options.marginTop),s=e(this.options.marginBottom),o=this.points?this.points[0]:this.$anchor.offset().top,a=this.points?this.points[1]:o+this.anchorHeight,r=window.innerHeight;"top"===this.options.stickTo?(o-=n,a-=t+n):"bottom"===this.options.stickTo&&(o-=r-(t+s),a-=r-s),this.topPoint=o,this.bottomPoint=a,i&&i()}},{key:"destroy",value:function(){this._removeSticky(!0),this.$element.removeClass(this.options.stickyClass+" is-anchored is-at-top").css({height:"",top:"",bottom:"","max-width":""}).off("resizeme.zf.trigger"),this.$anchor&&this.$anchor.length&&this.$anchor.off("change.zf.sticky"),t(window).off(this.scrollListener),this.wasWrapped?this.$element.unwrap():this.$container.removeClass(this.options.containerClass).css({height:""}),Foundation.unregisterPlugin(this)}}]),i}();i.defaults={container:"<div data-sticky-container></div>",stickTo:"top",anchor:"",topAnchor:"",btmAnchor:"",marginTop:1,marginBottom:1,stickyOn:"medium",stickyClass:"sticky",containerClass:"sticky-container",checkEvery:-1},Foundation.plugin(i,"Sticky")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n); -}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Tabs"),Foundation.Keyboard.register("Tabs",{ENTER:"open",SPACE:"open",ARROW_RIGHT:"next",ARROW_UP:"previous",ARROW_DOWN:"next",ARROW_LEFT:"previous"})}return _createClass(e,[{key:"_init",value:function(){var e=this;if(this.$tabTitles=this.$element.find("."+this.options.linkClass),this.$tabContent=t('[data-tabs-content="'+this.$element[0].id+'"]'),this.$tabTitles.each(function(){var i=t(this),n=i.find("a"),s=i.hasClass("is-active"),o=n[0].hash.slice(1),a=n[0].id?n[0].id:o+"-label",r=t("#"+o);i.attr({role:"presentation"}),n.attr({role:"tab","aria-controls":o,"aria-selected":s,id:a}),r.attr({role:"tabpanel","aria-hidden":!s,"aria-labelledby":a}),s&&e.options.autoFocus&&n.focus()}),this.options.matchHeight){var i=this.$tabContent.find("img");i.length?Foundation.onImagesLoaded(i,this._setHeight.bind(this)):this._setHeight()}this._events()}},{key:"_events",value:function(){this._addKeyHandler(),this._addClickHandler(),this._setHeightMqHandler=null,this.options.matchHeight&&(this._setHeightMqHandler=this._setHeight.bind(this),t(window).on("changed.zf.mediaquery",this._setHeightMqHandler))}},{key:"_addClickHandler",value:function(){var e=this;this.$element.off("click.zf.tabs").on("click.zf.tabs","."+this.options.linkClass,function(i){i.preventDefault(),i.stopPropagation(),t(this).hasClass("is-active")||e._handleTabChange(t(this))})}},{key:"_addKeyHandler",value:function(){var e=this;e.$element.find("li:first-of-type"),e.$element.find("li:last-of-type");this.$tabTitles.off("keydown.zf.tabs").on("keydown.zf.tabs",function(i){if(9!==i.which){var n,s,o=t(this),a=o.parent("ul").children("li");a.each(function(i){return t(this).is(o)?void(e.options.wrapOnKeys?(n=0===i?a.last():a.eq(i-1),s=i===a.length-1?a.first():a.eq(i+1)):(n=a.eq(Math.max(0,i-1)),s=a.eq(Math.min(i+1,a.length-1)))):void 0}),Foundation.Keyboard.handleKey(i,"Tabs",{open:function(){o.find('[role="tab"]').focus(),e._handleTabChange(o)},previous:function(){n.find('[role="tab"]').focus(),e._handleTabChange(n)},next:function(){s.find('[role="tab"]').focus(),e._handleTabChange(s)},handled:function(){i.stopPropagation(),i.preventDefault()}})}})}},{key:"_handleTabChange",value:function(e){var i=e.find('[role="tab"]'),n=i[0].hash,s=this.$tabContent.find(n),o=this.$element.find("."+this.options.linkClass+".is-active").removeClass("is-active").find('[role="tab"]').attr({"aria-selected":"false"});t("#"+o.attr("aria-controls")).removeClass("is-active").attr({"aria-hidden":"true"}),e.addClass("is-active"),i.attr({"aria-selected":"true"}),s.addClass("is-active").attr({"aria-hidden":"false"}),this.$element.trigger("change.zf.tabs",[e])}},{key:"selectTab",value:function(t){var e;e="object"==typeof t?t[0].id:t,e.indexOf("#")<0&&(e="#"+e);var i=this.$tabTitles.find('[href="'+e+'"]').parent("."+this.options.linkClass);this._handleTabChange(i)}},{key:"_setHeight",value:function(){var e=0;this.$tabContent.find("."+this.options.panelClass).css("height","").each(function(){var i=t(this),n=i.hasClass("is-active");n||i.css({visibility:"hidden",display:"block"});var s=this.getBoundingClientRect().height;n||i.css({visibility:"",display:""}),e=s>e?s:e}).css("height",e+"px")}},{key:"destroy",value:function(){this.$element.find("."+this.options.linkClass).off(".zf.tabs").hide().end().find("."+this.options.panelClass).hide(),this.options.matchHeight&&null!=this._setHeightMqHandler&&t(window).off("changed.zf.mediaquery",this._setHeightMqHandler),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={autoFocus:!1,wrapOnKeys:!0,matchHeight:!1,linkClass:"tabs-title",panelClass:"tabs-panel"},Foundation.plugin(e,"Tabs")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,i.data(),n),this.className="",this._init(),this._events(),Foundation.registerPlugin(this,"Toggler")}return _createClass(e,[{key:"_init",value:function(){var e;this.options.animate?(e=this.options.animate.split(" "),this.animationIn=e[0],this.animationOut=e[1]||null):(e=this.$element.data("toggler"),this.className="."===e[0]?e.slice(1):e);var i=this.$element[0].id;t('[data-open="'+i+'"], [data-close="'+i+'"], [data-toggle="'+i+'"]').attr("aria-controls",i),this.$element.attr("aria-expanded",!this.$element.is(":hidden"))}},{key:"_events",value:function(){this.$element.off("toggle.zf.trigger").on("toggle.zf.trigger",this.toggle.bind(this))}},{key:"toggle",value:function(){this[this.options.animate?"_toggleAnimate":"_toggleClass"]()}},{key:"_toggleClass",value:function(){this.$element.toggleClass(this.className);var t=this.$element.hasClass(this.className);t?this.$element.trigger("on.zf.toggler"):this.$element.trigger("off.zf.toggler"),this._updateARIA(t)}},{key:"_toggleAnimate",value:function(){var t=this;this.$element.is(":hidden")?Foundation.Motion.animateIn(this.$element,this.animationIn,function(){t._updateARIA(!0),this.trigger("on.zf.toggler")}):Foundation.Motion.animateOut(this.$element,this.animationOut,function(){t._updateARIA(!1),this.trigger("off.zf.toggler")})}},{key:"_updateARIA",value:function(t){this.$element.attr("aria-expanded",!!t)}},{key:"destroy",value:function(){this.$element.off(".zf.toggler"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={animate:!1},Foundation.plugin(e,"Toggler")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this.isActive=!1,this.isClick=!1,this._init(),Foundation.registerPlugin(this,"Tooltip")}return _createClass(e,[{key:"_init",value:function(){var e=this.$element.attr("aria-describedby")||Foundation.GetYoDigits(6,"tooltip");this.options.positionClass=this.options.positionClass||this._getPositionClass(this.$element),this.options.tipText=this.options.tipText||this.$element.attr("title"),this.template=this.options.template?t(this.options.template):this._buildTemplate(e),this.template.appendTo(document.body).text(this.options.tipText).hide(),this.$element.attr({title:"","aria-describedby":e,"data-yeti-box":e,"data-toggle":e,"data-resize":e}).addClass(this.triggerClass),this.usedPositions=[],this.counter=4,this.classChanged=!1,this._events()}},{key:"_getPositionClass",value:function(t){if(!t)return"";var e=t[0].className.match(/\b(top|left|right)\b/g);return e=e?e[0]:""}},{key:"_buildTemplate",value:function(e){var i=(this.options.tooltipClass+" "+this.options.positionClass+" "+this.options.templateClasses).trim(),n=t("<div></div>").addClass(i).attr({role:"tooltip","aria-hidden":!0,"data-is-active":!1,"data-is-focus":!1,id:e});return n}},{key:"_reposition",value:function(t){this.usedPositions.push(t?t:"bottom"),!t&&this.usedPositions.indexOf("top")<0?this.template.addClass("top"):"top"===t&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):"left"===t&&this.usedPositions.indexOf("right")<0?this.template.removeClass(t).addClass("right"):"right"===t&&this.usedPositions.indexOf("left")<0?this.template.removeClass(t).addClass("left"):!t&&this.usedPositions.indexOf("top")>-1&&this.usedPositions.indexOf("left")<0?this.template.addClass("left"):"top"===t&&this.usedPositions.indexOf("bottom")>-1&&this.usedPositions.indexOf("left")<0?this.template.removeClass(t).addClass("left"):"left"===t&&this.usedPositions.indexOf("right")>-1&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):"right"===t&&this.usedPositions.indexOf("left")>-1&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):this.template.removeClass(t),this.classChanged=!0,this.counter--}},{key:"_setPosition",value:function(){var t=this._getPositionClass(this.template),e=Foundation.Box.GetDimensions(this.template),i=Foundation.Box.GetDimensions(this.$element),n="left"===t?"left":"right"===t?"left":"top",s="top"===n?"height":"width";"height"===s?this.options.vOffset:this.options.hOffset;if(e.width>=e.windowDims.width||!this.counter&&!Foundation.Box.ImNotTouchingYou(this.template))return this.template.offset(Foundation.Box.GetOffsets(this.template,this.$element,"center bottom",this.options.vOffset,this.options.hOffset,!0)).css({width:i.windowDims.width-2*this.options.hOffset,height:"auto"}),!1;for(this.template.offset(Foundation.Box.GetOffsets(this.template,this.$element,"center "+(t||"bottom"),this.options.vOffset,this.options.hOffset));!Foundation.Box.ImNotTouchingYou(this.template)&&this.counter;)this._reposition(t),this._setPosition()}},{key:"show",value:function(){if("all"!==this.options.showOn&&!Foundation.MediaQuery.atLeast(this.options.showOn))return!1;var t=this;this.template.css("visibility","hidden").show(),this._setPosition(),this.$element.trigger("closeme.zf.tooltip",this.template.attr("id")),this.template.attr({"data-is-active":!0,"aria-hidden":!1}),t.isActive=!0,this.template.stop().hide().css("visibility","").fadeIn(this.options.fadeInDuration,function(){}),this.$element.trigger("show.zf.tooltip")}},{key:"hide",value:function(){var t=this;this.template.stop().attr({"aria-hidden":!0,"data-is-active":!1}).fadeOut(this.options.fadeOutDuration,function(){t.isActive=!1,t.isClick=!1,t.classChanged&&(t.template.removeClass(t._getPositionClass(t.template)).addClass(t.options.positionClass),t.usedPositions=[],t.counter=4,t.classChanged=!1)}),this.$element.trigger("hide.zf.tooltip")}},{key:"_events",value:function(){var t=this,e=(this.template,!1);this.options.disableHover||this.$element.on("mouseenter.zf.tooltip",function(e){t.isActive||(t.timeout=setTimeout(function(){t.show()},t.options.hoverDelay))}).on("mouseleave.zf.tooltip",function(i){clearTimeout(t.timeout),(!e||t.isClick&&!t.options.clickOpen)&&t.hide()}),this.options.clickOpen?this.$element.on("mousedown.zf.tooltip",function(e){e.stopImmediatePropagation(),t.isClick||(t.isClick=!0,!t.options.disableHover&&t.$element.attr("tabindex")||t.isActive||t.show())}):this.$element.on("mousedown.zf.tooltip",function(e){e.stopImmediatePropagation(),t.isClick=!0}),this.options.disableForTouch||this.$element.on("tap.zf.tooltip touchend.zf.tooltip",function(e){t.isActive?t.hide():t.show()}),this.$element.on({"close.zf.trigger":this.hide.bind(this)}),this.$element.on("focus.zf.tooltip",function(i){return e=!0,t.isClick?(t.options.clickOpen||(e=!1),!1):void t.show()}).on("focusout.zf.tooltip",function(i){e=!1,t.isClick=!1,t.hide()}).on("resizeme.zf.trigger",function(){t.isActive&&t._setPosition()})}},{key:"toggle",value:function(){this.isActive?this.hide():this.show()}},{key:"destroy",value:function(){this.$element.attr("title",this.template.text()).off(".zf.trigger .zf.tootip").removeAttr("aria-describedby").removeAttr("data-yeti-box").removeAttr("data-toggle").removeAttr("data-resize"),this.template.remove(),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={disableForTouch:!1,hoverDelay:200,fadeInDuration:150,fadeOutDuration:150,disableHover:!1,templateClasses:"",tooltipClass:"tooltip",triggerClass:"has-tip",showOn:"small",template:"",tipText:"",touchCloseText:"Tap to close.",clickOpen:!0,positionClass:"",vOffset:10,hOffset:12},Foundation.plugin(e,"Tooltip")}(jQuery); \ No newline at end of file +}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Tabs"),Foundation.Keyboard.register("Tabs",{ENTER:"open",SPACE:"open",ARROW_RIGHT:"next",ARROW_UP:"previous",ARROW_DOWN:"next",ARROW_LEFT:"previous"})}return _createClass(e,[{key:"_init",value:function(){var e=this;if(this.$tabTitles=this.$element.find("."+this.options.linkClass),this.$tabContent=t('[data-tabs-content="'+this.$element[0].id+'"]'),this.$tabTitles.each(function(){var i=t(this),n=i.find("a"),s=i.hasClass("is-active"),o=n[0].hash.slice(1),a=n[0].id?n[0].id:o+"-label",r=t("#"+o);i.attr({role:"presentation"}),n.attr({role:"tab","aria-controls":o,"aria-selected":s,id:a}),r.attr({role:"tabpanel","aria-hidden":!s,"aria-labelledby":a}),s&&e.options.autoFocus&&n.focus()}),this.options.matchHeight){var i=this.$tabContent.find("img");i.length?Foundation.onImagesLoaded(i,this._setHeight.bind(this)):this._setHeight()}this._events()}},{key:"_events",value:function(){this._addKeyHandler(),this._addClickHandler(),this._setHeightMqHandler=null,this.options.matchHeight&&(this._setHeightMqHandler=this._setHeight.bind(this),t(window).on("changed.zf.mediaquery",this._setHeightMqHandler))}},{key:"_addClickHandler",value:function(){var e=this;this.$element.off("click.zf.tabs").on("click.zf.tabs","."+this.options.linkClass,function(i){i.preventDefault(),i.stopPropagation(),t(this).hasClass("is-active")||e._handleTabChange(t(this))})}},{key:"_addKeyHandler",value:function(){var e=this;e.$element.find("li:first-of-type"),e.$element.find("li:last-of-type");this.$tabTitles.off("keydown.zf.tabs").on("keydown.zf.tabs",function(i){if(9!==i.which){var n,s,o=t(this),a=o.parent("ul").children("li");a.each(function(i){return t(this).is(o)?void(e.options.wrapOnKeys?(n=0===i?a.last():a.eq(i-1),s=i===a.length-1?a.first():a.eq(i+1)):(n=a.eq(Math.max(0,i-1)),s=a.eq(Math.min(i+1,a.length-1)))):void 0}),Foundation.Keyboard.handleKey(i,"Tabs",{open:function(){o.find('[role="tab"]').focus(),e._handleTabChange(o)},previous:function(){n.find('[role="tab"]').focus(),e._handleTabChange(n)},next:function(){s.find('[role="tab"]').focus(),e._handleTabChange(s)},handled:function(){i.stopPropagation(),i.preventDefault()}})}})}},{key:"_handleTabChange",value:function(e){var i=e.find('[role="tab"]'),n=i[0].hash,s=this.$tabContent.find(n),o=this.$element.find("."+this.options.linkClass+".is-active").removeClass("is-active").find('[role="tab"]').attr({"aria-selected":"false"});t("#"+o.attr("aria-controls")).removeClass("is-active").attr({"aria-hidden":"true"}),e.addClass("is-active"),i.attr({"aria-selected":"true"}),s.addClass("is-active").attr({"aria-hidden":"false"}),this.$element.trigger("change.zf.tabs",[e])}},{key:"selectTab",value:function(t){var e;e="object"==typeof t?t[0].id:t,e.indexOf("#")<0&&(e="#"+e);var i=this.$tabTitles.find('[href="'+e+'"]').parent("."+this.options.linkClass);this._handleTabChange(i)}},{key:"_setHeight",value:function(){var e=0;this.$tabContent.find("."+this.options.panelClass).css("height","").each(function(){var i=t(this),n=i.hasClass("is-active");n||i.css({visibility:"hidden",display:"block"});var s=this.getBoundingClientRect().height;n||i.css({visibility:"",display:""}),e=s>e?s:e}).css("height",e+"px")}},{key:"destroy",value:function(){this.$element.find("."+this.options.linkClass).off(".zf.tabs").hide().end().find("."+this.options.panelClass).hide(),this.options.matchHeight&&null!=this._setHeightMqHandler&&t(window).off("changed.zf.mediaquery",this._setHeightMqHandler),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={autoFocus:!1,wrapOnKeys:!0,matchHeight:!1,linkClass:"tabs-title",panelClass:"tabs-panel"},Foundation.plugin(e,"Tabs")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,i.data(),n),this.className="",this._init(),this._events(),Foundation.registerPlugin(this,"Toggler")}return _createClass(e,[{key:"_init",value:function(){var e;this.options.animate?(e=this.options.animate.split(" "),this.animationIn=e[0],this.animationOut=e[1]||null):(e=this.$element.data("toggler"),this.className="."===e[0]?e.slice(1):e);var i=this.$element[0].id;t('[data-open="'+i+'"], [data-close="'+i+'"], [data-toggle="'+i+'"]').attr("aria-controls",i),this.$element.attr("aria-expanded",!this.$element.is(":hidden"))}},{key:"_events",value:function(){this.$element.off("toggle.zf.trigger").on("toggle.zf.trigger",this.toggle.bind(this))}},{key:"toggle",value:function(){this[this.options.animate?"_toggleAnimate":"_toggleClass"]()}},{key:"_toggleClass",value:function(){this.$element.toggleClass(this.className);var t=this.$element.hasClass(this.className);t?this.$element.trigger("on.zf.toggler"):this.$element.trigger("off.zf.toggler"),this._updateARIA(t)}},{key:"_toggleAnimate",value:function(){var t=this;this.$element.is(":hidden")?Foundation.Motion.animateIn(this.$element,this.animationIn,function(){t._updateARIA(!0),this.trigger("on.zf.toggler")}):Foundation.Motion.animateOut(this.$element,this.animationOut,function(){t._updateARIA(!1),this.trigger("off.zf.toggler")})}},{key:"_updateARIA",value:function(t){this.$element.attr("aria-expanded",!!t)}},{key:"destroy",value:function(){this.$element.off(".zf.toggler"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={animate:!1},Foundation.plugin(e,"Toggler")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t){var e=function(){function e(i,n){_classCallCheck(this,e),this.$element=i,this.options=t.extend({},e.defaults,this.$element.data(),n),this.isActive=!1,this.isClick=!1,this._init(),Foundation.registerPlugin(this,"Tooltip")}return _createClass(e,[{key:"_init",value:function(){var e=this.$element.attr("aria-describedby")||Foundation.GetYoDigits(6,"tooltip");this.options.positionClass=this.options.positionClass||this._getPositionClass(this.$element),this.options.tipText=this.options.tipText||this.$element.attr("title"),this.template=this.options.template?t(this.options.template):this._buildTemplate(e),this.template.appendTo(document.body).text(this.options.tipText).hide(),this.$element.attr({title:"","aria-describedby":e,"data-yeti-box":e,"data-toggle":e,"data-resize":e}).addClass(this.triggerClass),this.usedPositions=[],this.counter=4,this.classChanged=!1,this._events()}},{key:"_getPositionClass",value:function(t){if(!t)return"";var e=t[0].className.match(/\b(top|left|right)\b/g);return e=e?e[0]:""}},{key:"_buildTemplate",value:function(e){var i=(this.options.tooltipClass+" "+this.options.positionClass+" "+this.options.templateClasses).trim(),n=t("<div></div>").addClass(i).attr({role:"tooltip","aria-hidden":!0,"data-is-active":!1,"data-is-focus":!1,id:e});return n}},{key:"_reposition",value:function(t){this.usedPositions.push(t?t:"bottom"),!t&&this.usedPositions.indexOf("top")<0?this.template.addClass("top"):"top"===t&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):"left"===t&&this.usedPositions.indexOf("right")<0?this.template.removeClass(t).addClass("right"):"right"===t&&this.usedPositions.indexOf("left")<0?this.template.removeClass(t).addClass("left"):!t&&this.usedPositions.indexOf("top")>-1&&this.usedPositions.indexOf("left")<0?this.template.addClass("left"):"top"===t&&this.usedPositions.indexOf("bottom")>-1&&this.usedPositions.indexOf("left")<0?this.template.removeClass(t).addClass("left"):"left"===t&&this.usedPositions.indexOf("right")>-1&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):"right"===t&&this.usedPositions.indexOf("left")>-1&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):this.template.removeClass(t),this.classChanged=!0,this.counter--}},{key:"_setPosition",value:function(){var t=this._getPositionClass(this.template),e=Foundation.Box.GetDimensions(this.template),i=Foundation.Box.GetDimensions(this.$element),n="left"===t?"left":"right"===t?"left":"top",s="top"===n?"height":"width";"height"===s?this.options.vOffset:this.options.hOffset;if(e.width>=e.windowDims.width||!this.counter&&!Foundation.Box.ImNotTouchingYou(this.template))return this.template.offset(Foundation.Box.GetOffsets(this.template,this.$element,"center bottom",this.options.vOffset,this.options.hOffset,!0)).css({width:i.windowDims.width-2*this.options.hOffset,height:"auto"}),!1;for(this.template.offset(Foundation.Box.GetOffsets(this.template,this.$element,"center "+(t||"bottom"),this.options.vOffset,this.options.hOffset));!Foundation.Box.ImNotTouchingYou(this.template)&&this.counter;)this._reposition(t),this._setPosition()}},{key:"show",value:function(){if("all"!==this.options.showOn&&!Foundation.MediaQuery.atLeast(this.options.showOn))return!1;var t=this;this.template.css("visibility","hidden").show(),this._setPosition(),this.$element.trigger("closeme.zf.tooltip",this.template.attr("id")),this.template.attr({"data-is-active":!0,"aria-hidden":!1}),t.isActive=!0,this.template.stop().hide().css("visibility","").fadeIn(this.options.fadeInDuration,function(){}),this.$element.trigger("show.zf.tooltip")}},{key:"hide",value:function(){var t=this;this.template.stop().attr({"aria-hidden":!0,"data-is-active":!1}).fadeOut(this.options.fadeOutDuration,function(){t.isActive=!1,t.isClick=!1,t.classChanged&&(t.template.removeClass(t._getPositionClass(t.template)).addClass(t.options.positionClass),t.usedPositions=[],t.counter=4,t.classChanged=!1)}),this.$element.trigger("hide.zf.tooltip")}},{key:"_events",value:function(){var t=this,e=(this.template,!1);this.options.disableHover||this.$element.on("mouseenter.zf.tooltip",function(e){t.isActive||(t.timeout=setTimeout(function(){t.show()},t.options.hoverDelay))}).on("mouseleave.zf.tooltip",function(i){clearTimeout(t.timeout),(!e||t.isClick&&!t.options.clickOpen)&&t.hide()}),this.options.clickOpen?this.$element.on("mousedown.zf.tooltip",function(e){e.stopImmediatePropagation(),t.isClick||(t.isClick=!0,!t.options.disableHover&&t.$element.attr("tabindex")||t.isActive||t.show())}):this.$element.on("mousedown.zf.tooltip",function(e){e.stopImmediatePropagation(),t.isClick=!0}),this.options.disableForTouch||this.$element.on("tap.zf.tooltip touchend.zf.tooltip",function(e){t.isActive?t.hide():t.show()}),this.$element.on({"close.zf.trigger":this.hide.bind(this)}),this.$element.on("focus.zf.tooltip",function(i){return e=!0,t.isClick?(t.options.clickOpen||(e=!1),!1):void t.show()}).on("focusout.zf.tooltip",function(i){e=!1,t.isClick=!1,t.hide()}).on("resizeme.zf.trigger",function(){t.isActive&&t._setPosition()})}},{key:"toggle",value:function(){this.isActive?this.hide():this.show()}},{key:"destroy",value:function(){this.$element.attr("title",this.template.text()).off(".zf.trigger .zf.tootip").removeAttr("aria-describedby").removeAttr("data-yeti-box").removeAttr("data-toggle").removeAttr("data-resize"),this.template.remove(),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={disableForTouch:!1,hoverDelay:200,fadeInDuration:150,fadeOutDuration:150,disableHover:!1,templateClasses:"",tooltipClass:"tooltip",triggerClass:"has-tip",showOn:"small",template:"",tipText:"",touchCloseText:"Tap to close.",clickOpen:!0,positionClass:"",vOffset:10,hOffset:12},Foundation.plugin(e,"Tooltip")}(jQuery); diff --git a/libraries/foundation-6/js/foundation.offcanvas.js b/libraries/foundation-6/js/foundation.offcanvas.js new file mode 100755 index 00000000..5e7b3cf8 --- /dev/null +++ b/libraries/foundation-6/js/foundation.offcanvas.js @@ -0,0 +1,398 @@ +'use strict'; + +!function($) { + +/** + * OffCanvas module. + * @module foundation.offcanvas + * @requires foundation.util.mediaQuery + * @requires foundation.util.triggers + * @requires foundation.util.motion + */ + +class OffCanvas { + /** + * Creates a new instance of an off-canvas wrapper. + * @class + * @fires OffCanvas#init + * @param {Object} element - jQuery object to initialize. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options) { + this.$element = element; + this.options = $.extend({}, OffCanvas.defaults, this.$element.data(), options); + this.$lastTrigger = $(); + this.$triggers = $(); + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'OffCanvas'); + } + + /** + * Initializes the off-canvas wrapper by adding the exit overlay (if needed). + * @function + * @private + */ + _init() { + var id = this.$element.attr('id'); + + this.$element.attr('aria-hidden', 'true'); + + // Find triggers that affect this element and add aria-expanded to them + this.$triggers = $(document) + .find('[data-open="'+id+'"], [data-close="'+id+'"], [data-toggle="'+id+'"]') + .attr('aria-expanded', 'false') + .attr('aria-controls', id); + + // Add a close trigger over the body if necessary + if (this.options.closeOnClick) { + if ($('.js-off-canvas-exit').length) { + this.$exiter = $('.js-off-canvas-exit'); + } else { + var exiter = document.createElement('div'); + exiter.setAttribute('class', 'js-off-canvas-exit'); + $('[data-off-canvas-content]').append(exiter); + + this.$exiter = $(exiter); + } + } + + this.options.isRevealed = this.options.isRevealed || new RegExp(this.options.revealClass, 'g').test(this.$element[0].className); + + if (this.options.isRevealed) { + this.options.revealOn = this.options.revealOn || this.$element[0].className.match(/(reveal-for-medium|reveal-for-large)/g)[0].split('-')[2]; + this._setMQChecker(); + } + if (!this.options.transitionTime) { + this.options.transitionTime = parseFloat(window.getComputedStyle($('[data-off-canvas-wrapper]')[0]).transitionDuration) * 1000; + } + } + + /** + * Adds event handlers to the off-canvas wrapper and the exit overlay. + * @function + * @private + */ + _events() { + this.$element.off('.zf.trigger .zf.offcanvas').on({ + 'open.zf.trigger': this.open.bind(this), + 'close.zf.trigger': this.close.bind(this), + 'toggle.zf.trigger': this.toggle.bind(this), + 'keydown.zf.offcanvas': this._handleKeyboard.bind(this) + }); + + if (this.options.closeOnClick && this.$exiter.length) { + this.$exiter.on({'click.zf.offcanvas': this.close.bind(this)}); + } + } + + /** + * Applies event listener for elements that will reveal at certain breakpoints. + * @private + */ + _setMQChecker() { + var _this = this; + + $(window).on('changed.zf.mediaquery', function() { + if (Foundation.MediaQuery.atLeast(_this.options.revealOn)) { + _this.reveal(true); + } else { + _this.reveal(false); + } + }).one('load.zf.offcanvas', function() { + if (Foundation.MediaQuery.atLeast(_this.options.revealOn)) { + _this.reveal(true); + } + }); + } + + /** + * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open. + * @param {Boolean} isRevealed - true if element should be revealed. + * @function + */ + reveal(isRevealed) { + var $closer = this.$element.find('[data-close]'); + if (isRevealed) { + this.close(); + this.isRevealed = true; + // if (!this.options.forceTop) { + // var scrollPos = parseInt(window.pageYOffset); + // this.$element[0].style.transform = 'translate(0,' + scrollPos + 'px)'; + // } + // if (this.options.isSticky) { this._stick(); } + this.$element.off('open.zf.trigger toggle.zf.trigger'); + if ($closer.length) { $closer.hide(); } + } else { + this.isRevealed = false; + // if (this.options.isSticky || !this.options.forceTop) { + // this.$element[0].style.transform = ''; + // $(window).off('scroll.zf.offcanvas'); + // } + this.$element.on({ + 'open.zf.trigger': this.open.bind(this), + 'toggle.zf.trigger': this.toggle.bind(this) + }); + if ($closer.length) { + $closer.show(); + } + } + } + + /** + * Opens the off-canvas menu. + * @function + * @param {Object} event - Event object passed from listener. + * @param {jQuery} trigger - element that triggered the off-canvas to open. + * @fires OffCanvas#opened + */ + open(event, trigger) { + if (this.$element.hasClass('is-open') || this.isRevealed) { return; } + var _this = this, + $body = $(document.body); + + if (this.options.forceTop) { + $('body').scrollTop(0); + } + // window.pageYOffset = 0; + + // if (!this.options.forceTop) { + // var scrollPos = parseInt(window.pageYOffset); + // this.$element[0].style.transform = 'translate(0,' + scrollPos + 'px)'; + // if (this.$exiter.length) { + // this.$exiter[0].style.transform = 'translate(0,' + scrollPos + 'px)'; + // } + // } + /** + * Fires when the off-canvas menu opens. + * @event OffCanvas#opened + */ + Foundation.Move(this.options.transitionTime, this.$element, function() { + $('[data-off-canvas-wrapper]').addClass('is-off-canvas-open is-open-'+ _this.options.position); + + _this.$element + .addClass('is-open') + + // if (_this.options.isSticky) { + // _this._stick(); + // } + }); + + this.$triggers.attr('aria-expanded', 'true'); + this.$element.attr('aria-hidden', 'false') + .trigger('opened.zf.offcanvas'); + + if (this.options.closeOnClick) { + this.$exiter.addClass('is-visible'); + } + + if (trigger) { + this.$lastTrigger = trigger; + } + + if (this.options.autoFocus) { + this.$element.one(Foundation.transitionend(this.$element), function() { + _this.$element.find('a, button').eq(0).focus(); + }); + } + + if (this.options.trapFocus) { + $('[data-off-canvas-content]').attr('tabindex', '-1'); + this._trapFocus(); + } + } + + /** + * Traps focus within the offcanvas on open. + * @private + */ + _trapFocus() { + var focusable = Foundation.Keyboard.findFocusable(this.$element), + first = focusable.eq(0), + last = focusable.eq(-1); + + focusable.off('.zf.offcanvas').on('keydown.zf.offcanvas', function(e) { + if (e.which === 9 || e.keycode === 9) { + if (e.target === last[0] && !e.shiftKey) { + e.preventDefault(); + first.focus(); + } + if (e.target === first[0] && e.shiftKey) { + e.preventDefault(); + last.focus(); + } + } + }); + } + + /** + * Allows the offcanvas to appear sticky utilizing translate properties. + * @private + */ + // OffCanvas.prototype._stick = function() { + // var elStyle = this.$element[0].style; + // + // if (this.options.closeOnClick) { + // var exitStyle = this.$exiter[0].style; + // } + // + // $(window).on('scroll.zf.offcanvas', function(e) { + // console.log(e); + // var pageY = window.pageYOffset; + // elStyle.transform = 'translate(0,' + pageY + 'px)'; + // if (exitStyle !== undefined) { exitStyle.transform = 'translate(0,' + pageY + 'px)'; } + // }); + // // this.$element.trigger('stuck.zf.offcanvas'); + // }; + /** + * Closes the off-canvas menu. + * @function + * @param {Function} cb - optional cb to fire after closure. + * @fires OffCanvas#closed + */ + close(cb) { + if (!this.$element.hasClass('is-open') || this.isRevealed) { return; } + + var _this = this; + + // Foundation.Move(this.options.transitionTime, this.$element, function() { + $('[data-off-canvas-wrapper]').removeClass(`is-off-canvas-open is-open-${_this.options.position}`); + _this.$element.removeClass('is-open'); + // Foundation._reflow(); + // }); + this.$element.attr('aria-hidden', 'true') + /** + * Fires when the off-canvas menu opens. + * @event OffCanvas#closed + */ + .trigger('closed.zf.offcanvas'); + // if (_this.options.isSticky || !_this.options.forceTop) { + // setTimeout(function() { + // _this.$element[0].style.transform = ''; + // $(window).off('scroll.zf.offcanvas'); + // }, this.options.transitionTime); + // } + if (this.options.closeOnClick) { + this.$exiter.removeClass('is-visible'); + } + + this.$triggers.attr('aria-expanded', 'false'); + if (this.options.trapFocus) { + $('[data-off-canvas-content]').removeAttr('tabindex'); + } + } + + /** + * Toggles the off-canvas menu open or closed. + * @function + * @param {Object} event - Event object passed from listener. + * @param {jQuery} trigger - element that triggered the off-canvas to open. + */ + toggle(event, trigger) { + if (this.$element.hasClass('is-open')) { + this.close(event, trigger); + } + else { + this.open(event, trigger); + } + } + + /** + * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu. + * @function + * @private + */ + _handleKeyboard(event) { + if (event.which !== 27) return; + + event.stopPropagation(); + event.preventDefault(); + this.close(); + this.$lastTrigger.focus(); + } + + /** + * Destroys the offcanvas plugin. + * @function + */ + destroy() { + this.close(); + this.$element.off('.zf.trigger .zf.offcanvas'); + this.$exiter.off('.zf.offcanvas'); + + Foundation.unregisterPlugin(this); + } +} + +OffCanvas.defaults = { + /** + * Allow the user to click outside of the menu to close it. + * @option + * @example true + */ + closeOnClick: true, + + /** + * Amount of time in ms the open and close transition requires. If none selected, pulls from body style. + * @option + * @example 500 + */ + transitionTime: 0, + + /** + * Direction the offcanvas opens from. Determines class applied to body. + * @option + * @example left + */ + position: 'left', + + /** + * Force the page to scroll to top on open. + * @option + * @example true + */ + forceTop: true, + + /** + * Allow the offcanvas to remain open for certain breakpoints. + * @option + * @example false + */ + isRevealed: false, + + /** + * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option. + * @option + * @example reveal-for-large + */ + revealOn: null, + + /** + * Force focus to the offcanvas on open. If true, will focus the opening trigger on close. + * @option + * @example true + */ + autoFocus: true, + + /** + * Class used to force an offcanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`. + * @option + * TODO improve the regex testing for this. + * @example reveal-for-large + */ + revealClass: 'reveal-for-', + + /** + * Triggers optional focus trapping when opening an offcanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes. + * @option + * @example true + */ + trapFocus: false +} + +// Window exports +Foundation.plugin(OffCanvas, 'OffCanvas'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.orbit.js b/libraries/foundation-6/js/foundation.orbit.js new file mode 100755 index 00000000..a0a221c1 --- /dev/null +++ b/libraries/foundation-6/js/foundation.orbit.js @@ -0,0 +1,446 @@ +'use strict'; + +!function($) { + +/** + * Orbit module. + * @module foundation.orbit + * @requires foundation.util.keyboard + * @requires foundation.util.motion + * @requires foundation.util.timerAndImageLoader + * @requires foundation.util.touch + */ + +class Orbit { + /** + * Creates a new instance of an orbit carousel. + * @class + * @param {jQuery} element - jQuery object to make into an Orbit Carousel. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options){ + this.$element = element; + this.options = $.extend({}, Orbit.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Orbit'); + Foundation.Keyboard.register('Orbit', { + 'ltr': { + 'ARROW_RIGHT': 'next', + 'ARROW_LEFT': 'previous' + }, + 'rtl': { + 'ARROW_LEFT': 'next', + 'ARROW_RIGHT': 'previous' + } + }); + } + + /** + * Initializes the plugin by creating jQuery collections, setting attributes, and starting the animation. + * @function + * @private + */ + _init() { + this.$wrapper = this.$element.find(`.${this.options.containerClass}`); + this.$slides = this.$element.find(`.${this.options.slideClass}`); + var $images = this.$element.find('img'), + initActive = this.$slides.filter('.is-active'); + + if (!initActive.length) { + this.$slides.eq(0).addClass('is-active'); + } + + if (!this.options.useMUI) { + this.$slides.addClass('no-motionui'); + } + + if ($images.length) { + Foundation.onImagesLoaded($images, this._prepareForOrbit.bind(this)); + } else { + this._prepareForOrbit();//hehe + } + + if (this.options.bullets) { + this._loadBullets(); + } + + this._events(); + + if (this.options.autoPlay && this.$slides.length > 1) { + this.geoSync(); + } + + if (this.options.accessible) { // allow wrapper to be focusable to enable arrow navigation + this.$wrapper.attr('tabindex', 0); + } + } + + /** + * Creates a jQuery collection of bullets, if they are being used. + * @function + * @private + */ + _loadBullets() { + this.$bullets = this.$element.find(`.${this.options.boxOfBullets}`).find('button'); + } + + /** + * Sets a `timer` object on the orbit, and starts the counter for the next slide. + * @function + */ + geoSync() { + var _this = this; + this.timer = new Foundation.Timer( + this.$element, + { + duration: this.options.timerDelay, + infinite: false + }, + function() { + _this.changeSlide(true); + }); + this.timer.start(); + } + + /** + * Sets wrapper and slide heights for the orbit. + * @function + * @private + */ + _prepareForOrbit() { + var _this = this; + this._setWrapperHeight(function(max){ + _this._setSlideHeight(max); + }); + } + + /** + * Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height. + * @function + * @private + * @param {Function} cb - a callback function to fire when complete. + */ + _setWrapperHeight(cb) {//rewrite this to `for` loop + var max = 0, temp, counter = 0; + + this.$slides.each(function() { + temp = this.getBoundingClientRect().height; + $(this).attr('data-slide', counter); + + if (counter) {//if not the first slide, set css position and display property + $(this).css({'position': 'relative', 'display': 'none'}); + } + max = temp > max ? temp : max; + counter++; + }); + + if (counter === this.$slides.length) { + this.$wrapper.css({'height': max}); //only change the wrapper height property once. + cb(max); //fire callback with max height dimension. + } + } + + /** + * Sets the max-height of each slide. + * @function + * @private + */ + _setSlideHeight(height) { + this.$slides.each(function() { + $(this).css('max-height', height); + }); + } + + /** + * Adds event listeners to basically everything within the element. + * @function + * @private + */ + _events() { + var _this = this; + + //*************************************** + //**Now using custom event - thanks to:** + //** Yohai Ararat of Toronto ** + //*************************************** + if (this.$slides.length > 1) { + + if (this.options.swipe) { + this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit') + .on('swipeleft.zf.orbit', function(e){ + e.preventDefault(); + _this.changeSlide(true); + }).on('swiperight.zf.orbit', function(e){ + e.preventDefault(); + _this.changeSlide(false); + }); + } + //*************************************** + + if (this.options.autoPlay) { + this.$slides.on('click.zf.orbit', function() { + _this.$element.data('clickedOn', _this.$element.data('clickedOn') ? false : true); + _this.timer[_this.$element.data('clickedOn') ? 'pause' : 'start'](); + }); + + if (this.options.pauseOnHover) { + this.$element.on('mouseenter.zf.orbit', function() { + _this.timer.pause(); + }).on('mouseleave.zf.orbit', function() { + if (!_this.$element.data('clickedOn')) { + _this.timer.start(); + } + }); + } + } + + if (this.options.navButtons) { + var $controls = this.$element.find(`.${this.options.nextClass}, .${this.options.prevClass}`); + $controls.attr('tabindex', 0) + //also need to handle enter/return and spacebar key presses + .on('click.zf.orbit touchend.zf.orbit', function(e){ + e.preventDefault(); + _this.changeSlide($(this).hasClass(_this.options.nextClass)); + }); + } + + if (this.options.bullets) { + this.$bullets.on('click.zf.orbit touchend.zf.orbit', function() { + if (/is-active/g.test(this.className)) { return false; }//if this is active, kick out of function. + var idx = $(this).data('slide'), + ltr = idx > _this.$slides.filter('.is-active').data('slide'), + $slide = _this.$slides.eq(idx); + + _this.changeSlide(ltr, $slide, idx); + }); + } + + this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function(e) { + // handle keyboard event with keyboard util + Foundation.Keyboard.handleKey(e, 'Orbit', { + next: function() { + _this.changeSlide(true); + }, + previous: function() { + _this.changeSlide(false); + }, + handled: function() { // if bullet is focused, make sure focus moves + if ($(e.target).is(_this.$bullets)) { + _this.$bullets.filter('.is-active').focus(); + } + } + }); + }); + } + } + + /** + * Changes the current slide to a new one. + * @function + * @param {Boolean} isLTR - flag if the slide should move left to right. + * @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected. + * @param {Number} idx - the index of the new slide in its collection, if one chosen. + * @fires Orbit#slidechange + */ + changeSlide(isLTR, chosenSlide, idx) { + var $curSlide = this.$slides.filter('.is-active').eq(0); + + if (/mui/g.test($curSlide[0].className)) { return false; } //if the slide is currently animating, kick out of the function + + var $firstSlide = this.$slides.first(), + $lastSlide = this.$slides.last(), + dirIn = isLTR ? 'Right' : 'Left', + dirOut = isLTR ? 'Left' : 'Right', + _this = this, + $newSlide; + + if (!chosenSlide) { //most of the time, this will be auto played or clicked from the navButtons. + $newSlide = isLTR ? //if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!! + (this.options.infiniteWrap ? $curSlide.next(`.${this.options.slideClass}`).length ? $curSlide.next(`.${this.options.slideClass}`) : $firstSlide : $curSlide.next(`.${this.options.slideClass}`))//pick next slide if moving left to right + : + (this.options.infiniteWrap ? $curSlide.prev(`.${this.options.slideClass}`).length ? $curSlide.prev(`.${this.options.slideClass}`) : $lastSlide : $curSlide.prev(`.${this.options.slideClass}`));//pick prev slide if moving right to left + } else { + $newSlide = chosenSlide; + } + + if ($newSlide.length) { + if (this.options.bullets) { + idx = idx || this.$slides.index($newSlide); //grab index to update bullets + this._updateBullets(idx); + } + + if (this.options.useMUI) { + Foundation.Motion.animateIn( + $newSlide.addClass('is-active').css({'position': 'absolute', 'top': 0}), + this.options[`animInFrom${dirIn}`], + function(){ + $newSlide.css({'position': 'relative', 'display': 'block'}) + .attr('aria-live', 'polite'); + }); + + Foundation.Motion.animateOut( + $curSlide.removeClass('is-active'), + this.options[`animOutTo${dirOut}`], + function(){ + $curSlide.removeAttr('aria-live'); + if(_this.options.autoPlay && !_this.timer.isPaused){ + _this.timer.restart(); + } + //do stuff? + }); + } else { + $curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide(); + $newSlide.addClass('is-active is-in').attr('aria-live', 'polite').show(); + if (this.options.autoPlay && !this.timer.isPaused) { + this.timer.restart(); + } + } + /** + * Triggers when the slide has finished animating in. + * @event Orbit#slidechange + */ + this.$element.trigger('slidechange.zf.orbit', [$newSlide]); + } + } + + /** + * Updates the active state of the bullets, if displayed. + * @function + * @private + * @param {Number} idx - the index of the current slide. + */ + _updateBullets(idx) { + var $oldBullet = this.$element.find(`.${this.options.boxOfBullets}`) + .find('.is-active').removeClass('is-active').blur(), + span = $oldBullet.find('span:last').detach(), + $newBullet = this.$bullets.eq(idx).addClass('is-active').append(span); + } + + /** + * Destroys the carousel and hides the element. + * @function + */ + destroy() { + this.$element.off('.zf.orbit').find('*').off('.zf.orbit').end().hide(); + Foundation.unregisterPlugin(this); + } +} + +Orbit.defaults = { + /** + * Tells the JS to look for and loadBullets. + * @option + * @example true + */ + bullets: true, + /** + * Tells the JS to apply event listeners to nav buttons + * @option + * @example true + */ + navButtons: true, + /** + * motion-ui animation class to apply + * @option + * @example 'slide-in-right' + */ + animInFromRight: 'slide-in-right', + /** + * motion-ui animation class to apply + * @option + * @example 'slide-out-right' + */ + animOutToRight: 'slide-out-right', + /** + * motion-ui animation class to apply + * @option + * @example 'slide-in-left' + * + */ + animInFromLeft: 'slide-in-left', + /** + * motion-ui animation class to apply + * @option + * @example 'slide-out-left' + */ + animOutToLeft: 'slide-out-left', + /** + * Allows Orbit to automatically animate on page load. + * @option + * @example true + */ + autoPlay: true, + /** + * Amount of time, in ms, between slide transitions + * @option + * @example 5000 + */ + timerDelay: 5000, + /** + * Allows Orbit to infinitely loop through the slides + * @option + * @example true + */ + infiniteWrap: true, + /** + * Allows the Orbit slides to bind to swipe events for mobile, requires an additional util library + * @option + * @example true + */ + swipe: true, + /** + * Allows the timing function to pause animation on hover. + * @option + * @example true + */ + pauseOnHover: true, + /** + * Allows Orbit to bind keyboard events to the slider, to animate frames with arrow keys + * @option + * @example true + */ + accessible: true, + /** + * Class applied to the container of Orbit + * @option + * @example 'orbit-container' + */ + containerClass: 'orbit-container', + /** + * Class applied to individual slides. + * @option + * @example 'orbit-slide' + */ + slideClass: 'orbit-slide', + /** + * Class applied to the bullet container. You're welcome. + * @option + * @example 'orbit-bullets' + */ + boxOfBullets: 'orbit-bullets', + /** + * Class applied to the `next` navigation button. + * @option + * @example 'orbit-next' + */ + nextClass: 'orbit-next', + /** + * Class applied to the `previous` navigation button. + * @option + * @example 'orbit-previous' + */ + prevClass: 'orbit-previous', + /** + * Boolean to flag the js to use motion ui classes or not. Default to true for backwards compatability. + * @option + * @example true + */ + useMUI: true +}; + +// Window exports +Foundation.plugin(Orbit, 'Orbit'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.responsiveMenu.js b/libraries/foundation-6/js/foundation.responsiveMenu.js new file mode 100755 index 00000000..a7bb389a --- /dev/null +++ b/libraries/foundation-6/js/foundation.responsiveMenu.js @@ -0,0 +1,148 @@ +'use strict'; + +!function($) { + +/** + * ResponsiveMenu module. + * @module foundation.responsiveMenu + * @requires foundation.util.triggers + * @requires foundation.util.mediaQuery + * @requires foundation.util.accordionMenu + * @requires foundation.util.drilldown + * @requires foundation.util.dropdown-menu + */ + +class ResponsiveMenu { + /** + * Creates a new instance of a responsive menu. + * @class + * @fires ResponsiveMenu#init + * @param {jQuery} element - jQuery object to make into a dropdown menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options) { + this.$element = $(element); + this.rules = this.$element.data('responsive-menu'); + this.currentMq = null; + this.currentPlugin = null; + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'ResponsiveMenu'); + } + + /** + * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element. + * @function + * @private + */ + _init() { + // The first time an Interchange plugin is initialized, this.rules is converted from a string of "classes" to an object of rules + if (typeof this.rules === 'string') { + let rulesTree = {}; + + // Parse rules from "classes" pulled from data attribute + let rules = this.rules.split(' '); + + // Iterate through every rule found + for (let i = 0; i < rules.length; i++) { + let rule = rules[i].split('-'); + let ruleSize = rule.length > 1 ? rule[0] : 'small'; + let rulePlugin = rule.length > 1 ? rule[1] : rule[0]; + + if (MenuPlugins[rulePlugin] !== null) { + rulesTree[ruleSize] = MenuPlugins[rulePlugin]; + } + } + + this.rules = rulesTree; + } + + if (!$.isEmptyObject(this.rules)) { + this._checkMediaQueries(); + } + } + + /** + * Initializes events for the Menu. + * @function + * @private + */ + _events() { + var _this = this; + + $(window).on('changed.zf.mediaquery', function() { + _this._checkMediaQueries(); + }); + // $(window).on('resize.zf.ResponsiveMenu', function() { + // _this._checkMediaQueries(); + // }); + } + + /** + * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out. + * @function + * @private + */ + _checkMediaQueries() { + var matchedMq, _this = this; + // Iterate through each rule and find the last matching rule + $.each(this.rules, function(key) { + if (Foundation.MediaQuery.atLeast(key)) { + matchedMq = key; + } + }); + + // No match? No dice + if (!matchedMq) return; + + // Plugin already initialized? We good + if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return; + + // Remove existing plugin-specific CSS classes + $.each(MenuPlugins, function(key, value) { + _this.$element.removeClass(value.cssClass); + }); + + // Add the CSS class for the new plugin + this.$element.addClass(this.rules[matchedMq].cssClass); + + // Create an instance of the new plugin + if (this.currentPlugin) this.currentPlugin.destroy(); + this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {}); + } + + /** + * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out. + * @function + */ + destroy() { + this.currentPlugin.destroy(); + $(window).off('.zf.ResponsiveMenu'); + Foundation.unregisterPlugin(this); + } +} + +ResponsiveMenu.defaults = {}; + +// The plugin matches the plugin classes with these plugin instances. +var MenuPlugins = { + dropdown: { + cssClass: 'dropdown', + plugin: Foundation._plugins['dropdown-menu'] || null + }, + drilldown: { + cssClass: 'drilldown', + plugin: Foundation._plugins['drilldown'] || null + }, + accordion: { + cssClass: 'accordion-menu', + plugin: Foundation._plugins['accordion-menu'] || null + } +}; + +// Window exports +Foundation.plugin(ResponsiveMenu, 'ResponsiveMenu'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.responsiveToggle.js b/libraries/foundation-6/js/foundation.responsiveToggle.js new file mode 100755 index 00000000..c73a1e50 --- /dev/null +++ b/libraries/foundation-6/js/foundation.responsiveToggle.js @@ -0,0 +1,119 @@ +'use strict'; + +!function($) { + +/** + * ResponsiveToggle module. + * @module foundation.responsiveToggle + * @requires foundation.util.mediaQuery + */ + +class ResponsiveToggle { + /** + * Creates a new instance of Tab Bar. + * @class + * @fires ResponsiveToggle#init + * @param {jQuery} element - jQuery object to attach tab bar functionality to. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options) { + this.$element = $(element); + this.options = $.extend({}, ResponsiveToggle.defaults, this.$element.data(), options); + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'ResponsiveToggle'); + } + + /** + * Initializes the tab bar by finding the target element, toggling element, and running update(). + * @function + * @private + */ + _init() { + var targetID = this.$element.data('responsive-toggle'); + if (!targetID) { + console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.'); + } + + this.$targetMenu = $(`#${targetID}`); + this.$toggler = this.$element.find('[data-toggle]'); + + this._update(); + } + + /** + * Adds necessary event handlers for the tab bar to work. + * @function + * @private + */ + _events() { + var _this = this; + + this._updateMqHandler = this._update.bind(this); + + $(window).on('changed.zf.mediaquery', this._updateMqHandler); + + this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this)); + } + + /** + * Checks the current media query to determine if the tab bar should be visible or hidden. + * @function + * @private + */ + _update() { + // Mobile + if (!Foundation.MediaQuery.atLeast(this.options.hideFor)) { + this.$element.show(); + this.$targetMenu.hide(); + } + + // Desktop + else { + this.$element.hide(); + this.$targetMenu.show(); + } + } + + /** + * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it. + * @function + * @fires ResponsiveToggle#toggled + */ + toggleMenu() { + if (!Foundation.MediaQuery.atLeast(this.options.hideFor)) { + this.$targetMenu.toggle(0); + + /** + * Fires when the element attached to the tab bar toggles. + * @event ResponsiveToggle#toggled + */ + this.$element.trigger('toggled.zf.responsiveToggle'); + } + }; + + destroy() { + this.$element.off('.zf.responsiveToggle'); + this.$toggler.off('.zf.responsiveToggle'); + + $(window).off('changed.zf.mediaquery', this._updateMqHandler); + + Foundation.unregisterPlugin(this); + } +} + +ResponsiveToggle.defaults = { + /** + * The breakpoint after which the menu is always shown, and the tab bar is hidden. + * @option + * @example 'medium' + */ + hideFor: 'medium' +}; + +// Window exports +Foundation.plugin(ResponsiveToggle, 'ResponsiveToggle'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.reveal.js b/libraries/foundation-6/js/foundation.reveal.js new file mode 100755 index 00000000..ed1d4a0d --- /dev/null +++ b/libraries/foundation-6/js/foundation.reveal.js @@ -0,0 +1,576 @@ +'use strict'; + +!function($) { + +/** + * Reveal module. + * @module foundation.reveal + * @requires foundation.util.keyboard + * @requires foundation.util.box + * @requires foundation.util.triggers + * @requires foundation.util.mediaQuery + * @requires foundation.util.motion if using animations + */ + +class Reveal { + /** + * Creates a new instance of Reveal. + * @class + * @param {jQuery} element - jQuery object to use for the modal. + * @param {Object} options - optional parameters. + */ + constructor(element, options) { + this.$element = element; + this.options = $.extend({}, Reveal.defaults, this.$element.data(), options); + this._init(); + + Foundation.registerPlugin(this, 'Reveal'); + Foundation.Keyboard.register('Reveal', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ESCAPE': 'close', + 'TAB': 'tab_forward', + 'SHIFT_TAB': 'tab_backward' + }); + } + + /** + * Initializes the modal by adding the overlay and close buttons, (if selected). + * @private + */ + _init() { + this.id = this.$element.attr('id'); + this.isActive = false; + this.cached = {mq: Foundation.MediaQuery.current}; + this.isMobile = mobileSniff(); + + this.$anchor = $(`[data-open="${this.id}"]`).length ? $(`[data-open="${this.id}"]`) : $(`[data-toggle="${this.id}"]`); + this.$anchor.attr({ + 'aria-controls': this.id, + 'aria-haspopup': true, + 'tabindex': 0 + }); + + if (this.options.fullScreen || this.$element.hasClass('full')) { + this.options.fullScreen = true; + this.options.overlay = false; + } + if (this.options.overlay && !this.$overlay) { + this.$overlay = this._makeOverlay(this.id); + } + + this.$element.attr({ + 'role': 'dialog', + 'aria-hidden': true, + 'data-yeti-box': this.id, + 'data-resize': this.id + }); + + if(this.$overlay) { + this.$element.detach().appendTo(this.$overlay); + } else { + this.$element.detach().appendTo($('body')); + this.$element.addClass('without-overlay'); + } + this._events(); + if (this.options.deepLink && window.location.hash === ( `#${this.id}`)) { + $(window).one('load.zf.reveal', this.open.bind(this)); + } + } + + /** + * Creates an overlay div to display behind the modal. + * @private + */ + _makeOverlay(id) { + var $overlay = $('<div></div>') + .addClass('reveal-overlay') + .appendTo('body'); + return $overlay; + } + + /** + * Updates position of modal + * TODO: Figure out if we actually need to cache these values or if it doesn't matter + * @private + */ + _updatePosition() { + var width = this.$element.outerWidth(); + var outerWidth = $(window).width(); + var height = this.$element.outerHeight(); + var outerHeight = $(window).height(); + var left, top; + if (this.options.hOffset === 'auto') { + left = parseInt((outerWidth - width) / 2, 10); + } else { + left = parseInt(this.options.hOffset, 10); + } + if (this.options.vOffset === 'auto') { + if (height > outerHeight) { + top = parseInt(Math.min(100, outerHeight / 10), 10); + } else { + top = parseInt((outerHeight - height) / 4, 10); + } + } else { + top = parseInt(this.options.vOffset, 10); + } + this.$element.css({top: top + 'px'}); + // only worry about left if we don't have an overlay or we havea horizontal offset, + // otherwise we're perfectly in the middle + if(!this.$overlay || (this.options.hOffset !== 'auto')) { + this.$element.css({left: left + 'px'}); + this.$element.css({margin: '0px'}); + } + + } + + /** + * Adds event handlers for the modal. + * @private + */ + _events() { + var _this = this; + + this.$element.on({ + 'open.zf.trigger': this.open.bind(this), + 'close.zf.trigger': (event, $element) => { + if ((event.target === _this.$element[0]) || + ($(event.target).parents('[data-closable]')[0] === $element)) { // only close reveal when it's explicitly called + return this.close.apply(this); + } + }, + 'toggle.zf.trigger': this.toggle.bind(this), + 'resizeme.zf.trigger': function() { + _this._updatePosition(); + } + }); + + if (this.$anchor.length) { + this.$anchor.on('keydown.zf.reveal', function(e) { + if (e.which === 13 || e.which === 32) { + e.stopPropagation(); + e.preventDefault(); + _this.open(); + } + }); + } + + if (this.options.closeOnClick && this.options.overlay) { + this.$overlay.off('.zf.reveal').on('click.zf.reveal', function(e) { + if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)) { return; } + _this.close(); + }); + } + if (this.options.deepLink) { + $(window).on(`popstate.zf.reveal:${this.id}`, this._handleState.bind(this)); + } + } + + /** + * Handles modal methods on back/forward button clicks or any other event that triggers popstate. + * @private + */ + _handleState(e) { + if(window.location.hash === ( '#' + this.id) && !this.isActive){ this.open(); } + else{ this.close(); } + } + + + /** + * Opens the modal controlled by `this.$anchor`, and closes all others by default. + * @function + * @fires Reveal#closeme + * @fires Reveal#open + */ + open() { + if (this.options.deepLink) { + var hash = `#${this.id}`; + + if (window.history.pushState) { + window.history.pushState(null, null, hash); + } else { + window.location.hash = hash; + } + } + + this.isActive = true; + + // Make elements invisible, but remove display: none so we can get size and positioning + this.$element + .css({ 'visibility': 'hidden' }) + .show() + .scrollTop(0); + if (this.options.overlay) { + this.$overlay.css({'visibility': 'hidden'}).show(); + } + + this._updatePosition(); + + this.$element + .hide() + .css({ 'visibility': '' }); + + if(this.$overlay) { + this.$overlay.css({'visibility': ''}).hide(); + if(this.$element.hasClass('fast')) { + this.$overlay.addClass('fast'); + } else if (this.$element.hasClass('slow')) { + this.$overlay.addClass('slow'); + } + } + + + if (!this.options.multipleOpened) { + /** + * Fires immediately before the modal opens. + * Closes any other modals that are currently open + * @event Reveal#closeme + */ + this.$element.trigger('closeme.zf.reveal', this.id); + } + // Motion UI method of reveal + if (this.options.animationIn) { + var _this = this; + function afterAnimationFocus(){ + _this.$element + .attr({ + 'aria-hidden': false, + 'tabindex': -1 + }) + .focus(); + console.log('focus'); + } + if (this.options.overlay) { + Foundation.Motion.animateIn(this.$overlay, 'fade-in'); + } + Foundation.Motion.animateIn(this.$element, this.options.animationIn, () => { + this.focusableElements = Foundation.Keyboard.findFocusable(this.$element); + afterAnimationFocus(); + }); + } + // jQuery method of reveal + else { + if (this.options.overlay) { + this.$overlay.show(0); + } + this.$element.show(this.options.showDelay); + } + + // handle accessibility + this.$element + .attr({ + 'aria-hidden': false, + 'tabindex': -1 + }) + .focus(); + + /** + * Fires when the modal has successfully opened. + * @event Reveal#open + */ + this.$element.trigger('open.zf.reveal'); + + if (this.isMobile) { + this.originalScrollPos = window.pageYOffset; + $('html, body').addClass('is-reveal-open'); + } + else { + $('body').addClass('is-reveal-open'); + } + + setTimeout(() => { + this._extraHandlers(); + }, 0); + } + + /** + * Adds extra event handlers for the body and window if necessary. + * @private + */ + _extraHandlers() { + var _this = this; + this.focusableElements = Foundation.Keyboard.findFocusable(this.$element); + + if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) { + $('body').on('click.zf.reveal', function(e) { + if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)) { return; } + _this.close(); + }); + } + + if (this.options.closeOnEsc) { + $(window).on('keydown.zf.reveal', function(e) { + Foundation.Keyboard.handleKey(e, 'Reveal', { + close: function() { + if (_this.options.closeOnEsc) { + _this.close(); + _this.$anchor.focus(); + } + } + }); + }); + } + + // lock focus within modal while tabbing + this.$element.on('keydown.zf.reveal', function(e) { + var $target = $(this); + // handle keyboard event with keyboard util + Foundation.Keyboard.handleKey(e, 'Reveal', { + tab_forward: function() { + if (_this.$element.find(':focus').is(_this.focusableElements.eq(-1))) { // left modal downwards, setting focus to first element + _this.focusableElements.eq(0).focus(); + return true; + } + if (_this.focusableElements.length === 0) { // no focusable elements inside the modal at all, prevent tabbing in general + return true; + } + }, + tab_backward: function() { + if (_this.$element.find(':focus').is(_this.focusableElements.eq(0)) || _this.$element.is(':focus')) { // left modal upwards, setting focus to last element + _this.focusableElements.eq(-1).focus(); + return true; + } + if (_this.focusableElements.length === 0) { // no focusable elements inside the modal at all, prevent tabbing in general + return true; + } + }, + open: function() { + if (_this.$element.find(':focus').is(_this.$element.find('[data-close]'))) { + setTimeout(function() { // set focus back to anchor if close button has been activated + _this.$anchor.focus(); + }, 1); + } else if ($target.is(_this.focusableElements)) { // dont't trigger if acual element has focus (i.e. inputs, links, ...) + _this.open(); + } + }, + close: function() { + if (_this.options.closeOnEsc) { + _this.close(); + _this.$anchor.focus(); + } + }, + handled: function(preventDefault) { + if (preventDefault) { + e.preventDefault(); + } + } + }); + }); + } + + /** + * Closes the modal. + * @function + * @fires Reveal#closed + */ + close() { + if (!this.isActive || !this.$element.is(':visible')) { + return false; + } + var _this = this; + + // Motion UI method of hiding + if (this.options.animationOut) { + if (this.options.overlay) { + Foundation.Motion.animateOut(this.$overlay, 'fade-out', finishUp); + } + else { + finishUp(); + } + + Foundation.Motion.animateOut(this.$element, this.options.animationOut); + } + // jQuery method of hiding + else { + if (this.options.overlay) { + this.$overlay.hide(0, finishUp); + } + else { + finishUp(); + } + + this.$element.hide(this.options.hideDelay); + } + + // Conditionals to remove extra event listeners added on open + if (this.options.closeOnEsc) { + $(window).off('keydown.zf.reveal'); + } + + if (!this.options.overlay && this.options.closeOnClick) { + $('body').off('click.zf.reveal'); + } + + this.$element.off('keydown.zf.reveal'); + + function finishUp() { + if (_this.isMobile) { + $('html, body').removeClass('is-reveal-open'); + if(_this.originalScrollPos) { + $('body').scrollTop(_this.originalScrollPos); + _this.originalScrollPos = null; + } + } + else { + $('body').removeClass('is-reveal-open'); + } + + _this.$element.attr('aria-hidden', true); + + /** + * Fires when the modal is done closing. + * @event Reveal#closed + */ + _this.$element.trigger('closed.zf.reveal'); + } + + /** + * Resets the modal content + * This prevents a running video to keep going in the background + */ + if (this.options.resetOnClose) { + this.$element.html(this.$element.html()); + } + + this.isActive = false; + if (_this.options.deepLink) { + if (window.history.replaceState) { + window.history.replaceState("", document.title, window.location.pathname); + } else { + window.location.hash = ''; + } + } + } + + /** + * Toggles the open/closed state of a modal. + * @function + */ + toggle() { + if (this.isActive) { + this.close(); + } else { + this.open(); + } + }; + + /** + * Destroys an instance of a modal. + * @function + */ + destroy() { + if (this.options.overlay) { + this.$element.appendTo($('body')); // move $element outside of $overlay to prevent error unregisterPlugin() + this.$overlay.hide().off().remove(); + } + this.$element.hide().off(); + this.$anchor.off('.zf'); + $(window).off(`.zf.reveal:${this.id}`); + + Foundation.unregisterPlugin(this); + }; +} + +Reveal.defaults = { + /** + * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide. + * @option + * @example 'slide-in-left' + */ + animationIn: '', + /** + * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide. + * @option + * @example 'slide-out-right' + */ + animationOut: '', + /** + * Time, in ms, to delay the opening of a modal after a click if no animation used. + * @option + * @example 10 + */ + showDelay: 0, + /** + * Time, in ms, to delay the closing of a modal after a click if no animation used. + * @option + * @example 10 + */ + hideDelay: 0, + /** + * Allows a click on the body/overlay to close the modal. + * @option + * @example true + */ + closeOnClick: true, + /** + * Allows the modal to close if the user presses the `ESCAPE` key. + * @option + * @example true + */ + closeOnEsc: true, + /** + * If true, allows multiple modals to be displayed at once. + * @option + * @example false + */ + multipleOpened: false, + /** + * Distance, in pixels, the modal should push down from the top of the screen. + * @option + * @example auto + */ + vOffset: 'auto', + /** + * Distance, in pixels, the modal should push in from the side of the screen. + * @option + * @example auto + */ + hOffset: 'auto', + /** + * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well. + * @option + * @example false + */ + fullScreen: false, + /** + * Percentage of screen height the modal should push up from the bottom of the view. + * @option + * @example 10 + */ + btmOffsetPct: 10, + /** + * Allows the modal to generate an overlay div, which will cover the view when modal opens. + * @option + * @example true + */ + overlay: true, + /** + * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background. + * @option + * @example false + */ + resetOnClose: false, + /** + * Allows the modal to alter the url on open/close, and allows the use of the `back` button to close modals. ALSO, allows a modal to auto-maniacally open on page load IF the hash === the modal's user-set id. + * @option + * @example false + */ + deepLink: false +}; + +// Window exports +Foundation.plugin(Reveal, 'Reveal'); + +function iPhoneSniff() { + return /iP(ad|hone|od).*OS/.test(window.navigator.userAgent); +} + +function androidSniff() { + return /Android/.test(window.navigator.userAgent); +} + +function mobileSniff() { + return iPhoneSniff() || androidSniff(); +} + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.slider.js b/libraries/foundation-6/js/foundation.slider.js new file mode 100755 index 00000000..dec7b0a5 --- /dev/null +++ b/libraries/foundation-6/js/foundation.slider.js @@ -0,0 +1,597 @@ +'use strict'; + +!function($) { + +/** + * Slider module. + * @module foundation.slider + * @requires foundation.util.motion + * @requires foundation.util.triggers + * @requires foundation.util.keyboard + * @requires foundation.util.touch + */ + +class Slider { + /** + * Creates a new instance of a drilldown menu. + * @class + * @param {jQuery} element - jQuery object to make into an accordion menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options) { + this.$element = element; + this.options = $.extend({}, Slider.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Slider'); + Foundation.Keyboard.register('Slider', { + 'ltr': { + 'ARROW_RIGHT': 'increase', + 'ARROW_UP': 'increase', + 'ARROW_DOWN': 'decrease', + 'ARROW_LEFT': 'decrease', + 'SHIFT_ARROW_RIGHT': 'increase_fast', + 'SHIFT_ARROW_UP': 'increase_fast', + 'SHIFT_ARROW_DOWN': 'decrease_fast', + 'SHIFT_ARROW_LEFT': 'decrease_fast' + }, + 'rtl': { + 'ARROW_LEFT': 'increase', + 'ARROW_RIGHT': 'decrease', + 'SHIFT_ARROW_LEFT': 'increase_fast', + 'SHIFT_ARROW_RIGHT': 'decrease_fast' + } + }); + } + + /** + * Initilizes the plugin by reading/setting attributes, creating collections and setting the initial position of the handle(s). + * @function + * @private + */ + _init() { + this.inputs = this.$element.find('input'); + this.handles = this.$element.find('[data-slider-handle]'); + + this.$handle = this.handles.eq(0); + this.$input = this.inputs.length ? this.inputs.eq(0) : $(`#${this.$handle.attr('aria-controls')}`); + this.$fill = this.$element.find('[data-slider-fill]').css(this.options.vertical ? 'height' : 'width', 0); + + var isDbl = false, + _this = this; + if (this.options.disabled || this.$element.hasClass(this.options.disabledClass)) { + this.options.disabled = true; + this.$element.addClass(this.options.disabledClass); + } + if (!this.inputs.length) { + this.inputs = $().add(this.$input); + this.options.binding = true; + } + this._setInitAttr(0); + this._events(this.$handle); + + if (this.handles[1]) { + this.options.doubleSided = true; + this.$handle2 = this.handles.eq(1); + this.$input2 = this.inputs.length > 1 ? this.inputs.eq(1) : $(`#${this.$handle2.attr('aria-controls')}`); + + if (!this.inputs[1]) { + this.inputs = this.inputs.add(this.$input2); + } + isDbl = true; + + this._setHandlePos(this.$handle, this.options.initialStart, true, function() { + + _this._setHandlePos(_this.$handle2, _this.options.initialEnd, true); + }); + // this.$handle.triggerHandler('click.zf.slider'); + this._setInitAttr(1); + this._events(this.$handle2); + } + + if (!isDbl) { + this._setHandlePos(this.$handle, this.options.initialStart, true); + } + } + + /** + * Sets the position of the selected handle and fill bar. + * @function + * @private + * @param {jQuery} $hndl - the selected handle to move. + * @param {Number} location - floating point between the start and end values of the slider bar. + * @param {Function} cb - callback function to fire on completion. + * @fires Slider#moved + * @fires Slider#changed + */ + _setHandlePos($hndl, location, noInvert, cb) { + // don't move if the slider has been disabled since its initialization + if (this.$element.hasClass(this.options.disabledClass)) { + return; + } + //might need to alter that slightly for bars that will have odd number selections. + location = parseFloat(location);//on input change events, convert string to number...grumble. + + // prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max + if (location < this.options.start) { location = this.options.start; } + else if (location > this.options.end) { location = this.options.end; } + + var isDbl = this.options.doubleSided; + + if (isDbl) { //this block is to prevent 2 handles from crossing eachother. Could/should be improved. + if (this.handles.index($hndl) === 0) { + var h2Val = parseFloat(this.$handle2.attr('aria-valuenow')); + location = location >= h2Val ? h2Val - this.options.step : location; + } else { + var h1Val = parseFloat(this.$handle.attr('aria-valuenow')); + location = location <= h1Val ? h1Val + this.options.step : location; + } + } + + //this is for single-handled vertical sliders, it adjusts the value to account for the slider being "upside-down" + //for click and drag events, it's weird due to the scale(-1, 1) css property + if (this.options.vertical && !noInvert) { + location = this.options.end - location; + } + + var _this = this, + vert = this.options.vertical, + hOrW = vert ? 'height' : 'width', + lOrT = vert ? 'top' : 'left', + handleDim = $hndl[0].getBoundingClientRect()[hOrW], + elemDim = this.$element[0].getBoundingClientRect()[hOrW], + //percentage of bar min/max value based on click or drag point + pctOfBar = percent(location - this.options.start, this.options.end - this.options.start).toFixed(2), + //number of actual pixels to shift the handle, based on the percentage obtained above + pxToMove = (elemDim - handleDim) * pctOfBar, + //percentage of bar to shift the handle + movement = (percent(pxToMove, elemDim) * 100).toFixed(this.options.decimal); + //fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value + location = parseFloat(location.toFixed(this.options.decimal)); + // declare empty object for css adjustments, only used with 2 handled-sliders + var css = {}; + + this._setValues($hndl, location); + + // TODO update to calculate based on values set to respective inputs?? + if (isDbl) { + var isLeftHndl = this.handles.index($hndl) === 0, + //empty variable, will be used for min-height/width for fill bar + dim, + //percentage w/h of the handle compared to the slider bar + handlePct = ~~(percent(handleDim, elemDim) * 100); + //if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar + if (isLeftHndl) { + //left or top percentage value to apply to the fill bar. + css[lOrT] = `${movement}%`; + //calculate the new min-height/width for the fill bar. + dim = parseFloat(this.$handle2[0].style[lOrT]) - movement + handlePct; + //this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider + //plus, it means we don't care if 'dim' isNaN on init, it won't be in the future. + if (cb && typeof cb === 'function') { cb(); }//this is only needed for the initialization of 2 handled sliders + } else { + //just caching the value of the left/bottom handle's left/top property + var handlePos = parseFloat(this.$handle[0].style[lOrT]); + //calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0 + //based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself + dim = movement - (isNaN(handlePos) ? this.options.initialStart/((this.options.end-this.options.start)/100) : handlePos) + handlePct; + } + // assign the min-height/width to our css object + css[`min-${hOrW}`] = `${dim}%`; + } + + this.$element.one('finished.zf.animate', function() { + /** + * Fires when the handle is done moving. + * @event Slider#moved + */ + _this.$element.trigger('moved.zf.slider', [$hndl]); + }); + + //because we don't know exactly how the handle will be moved, check the amount of time it should take to move. + var moveTime = this.$element.data('dragging') ? 1000/60 : this.options.moveTime; + + Foundation.Move(moveTime, $hndl, function() { + //adjusting the left/top property of the handle, based on the percentage calculated above + $hndl.css(lOrT, `${movement}%`); + + if (!_this.options.doubleSided) { + //if single-handled, a simple method to expand the fill bar + _this.$fill.css(hOrW, `${pctOfBar * 100}%`); + } else { + //otherwise, use the css object we created above + _this.$fill.css(css); + } + }); + + /** + * Fires when the value has not been change for a given time. + * @event Slider#changed + */ + clearTimeout(_this.timeout); + _this.timeout = setTimeout(function(){ + _this.$element.trigger('changed.zf.slider', [$hndl]); + }, _this.options.changedDelay); + } + + /** + * Sets the initial attribute for the slider element. + * @function + * @private + * @param {Number} idx - index of the current handle/input to use. + */ + _setInitAttr(idx) { + var id = this.inputs.eq(idx).attr('id') || Foundation.GetYoDigits(6, 'slider'); + this.inputs.eq(idx).attr({ + 'id': id, + 'max': this.options.end, + 'min': this.options.start, + 'step': this.options.step + }); + this.handles.eq(idx).attr({ + 'role': 'slider', + 'aria-controls': id, + 'aria-valuemax': this.options.end, + 'aria-valuemin': this.options.start, + 'aria-valuenow': idx === 0 ? this.options.initialStart : this.options.initialEnd, + 'aria-orientation': this.options.vertical ? 'vertical' : 'horizontal', + 'tabindex': 0 + }); + } + + /** + * Sets the input and `aria-valuenow` values for the slider element. + * @function + * @private + * @param {jQuery} $handle - the currently selected handle. + * @param {Number} val - floating point of the new value. + */ + _setValues($handle, val) { + var idx = this.options.doubleSided ? this.handles.index($handle) : 0; + this.inputs.eq(idx).val(val); + $handle.attr('aria-valuenow', val); + } + + /** + * Handles events on the slider element. + * Calculates the new location of the current handle. + * If there are two handles and the bar was clicked, it determines which handle to move. + * @function + * @private + * @param {Object} e - the `event` object passed from the listener. + * @param {jQuery} $handle - the current handle to calculate for, if selected. + * @param {Number} val - floating point number for the new value of the slider. + * TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn. + */ + _handleEvent(e, $handle, val) { + var value, hasVal; + if (!val) {//click or drag events + e.preventDefault(); + var _this = this, + vertical = this.options.vertical, + param = vertical ? 'height' : 'width', + direction = vertical ? 'top' : 'left', + eventOffset = vertical ? e.pageY : e.pageX, + halfOfHandle = this.$handle[0].getBoundingClientRect()[param] / 2, + barDim = this.$element[0].getBoundingClientRect()[param], + windowScroll = vertical ? $(window).scrollTop() : $(window).scrollLeft(); + + + var elemOffset = this.$element.offset()[direction]; + + // touch events emulated by the touch util give position relative to screen, add window.scroll to event coordinates... + // best way to guess this is simulated is if clientY == pageY + if (e.clientY === e.pageY) { eventOffset = eventOffset + windowScroll; } + var eventFromBar = eventOffset - elemOffset; + var barXY; + if (eventFromBar < 0) { + barXY = 0; + } else if (eventFromBar > barDim) { + barXY = barDim; + } else { + barXY = eventFromBar; + } + offsetPct = percent(barXY, barDim); + + value = (this.options.end - this.options.start) * offsetPct + this.options.start; + + // turn everything around for RTL, yay math! + if (Foundation.rtl() && !this.options.vertical) {value = this.options.end - value;} + + value = _this._adjustValue(null, value); + //boolean flag for the setHandlePos fn, specifically for vertical sliders + hasVal = false; + + if (!$handle) {//figure out which handle it is, pass it to the next function. + var firstHndlPos = absPosition(this.$handle, direction, barXY, param), + secndHndlPos = absPosition(this.$handle2, direction, barXY, param); + $handle = firstHndlPos <= secndHndlPos ? this.$handle : this.$handle2; + } + + } else {//change event on input + value = this._adjustValue(null, val); + hasVal = true; + } + + this._setHandlePos($handle, value, hasVal); + } + + /** + * Adjustes value for handle in regard to step value. returns adjusted value + * @function + * @private + * @param {jQuery} $handle - the selected handle. + * @param {Number} value - value to adjust. used if $handle is falsy + */ + _adjustValue($handle, value) { + var val, + step = this.options.step, + div = parseFloat(step/2), + left, prev_val, next_val; + if (!!$handle) { + val = parseFloat($handle.attr('aria-valuenow')); + } + else { + val = value; + } + left = val % step; + prev_val = val - left; + next_val = prev_val + step; + if (left === 0) { + return val; + } + val = val >= prev_val + div ? next_val : prev_val; + return val; + } + + /** + * Adds event listeners to the slider elements. + * @function + * @private + * @param {jQuery} $handle - the current handle to apply listeners to. + */ + _events($handle) { + var _this = this, + curHandle, + timer; + + this.inputs.off('change.zf.slider').on('change.zf.slider', function(e) { + var idx = _this.inputs.index($(this)); + _this._handleEvent(e, _this.handles.eq(idx), $(this).val()); + }); + + if (this.options.clickSelect) { + this.$element.off('click.zf.slider').on('click.zf.slider', function(e) { + if (_this.$element.data('dragging')) { return false; } + + if (!$(e.target).is('[data-slider-handle]')) { + if (_this.options.doubleSided) { + _this._handleEvent(e); + } else { + _this._handleEvent(e, _this.$handle); + } + } + }); + } + + if (this.options.draggable) { + this.handles.addTouch(); + + var $body = $('body'); + $handle + .off('mousedown.zf.slider') + .on('mousedown.zf.slider', function(e) { + $handle.addClass('is-dragging'); + _this.$fill.addClass('is-dragging');// + _this.$element.data('dragging', true); + + curHandle = $(e.currentTarget); + + $body.on('mousemove.zf.slider', function(e) { + e.preventDefault(); + _this._handleEvent(e, curHandle); + + }).on('mouseup.zf.slider', function(e) { + _this._handleEvent(e, curHandle); + + $handle.removeClass('is-dragging'); + _this.$fill.removeClass('is-dragging'); + _this.$element.data('dragging', false); + + $body.off('mousemove.zf.slider mouseup.zf.slider'); + }); + }) + // prevent events triggered by touch + .on('selectstart.zf.slider touchmove.zf.slider', function(e) { + e.preventDefault(); + }); + } + + $handle.off('keydown.zf.slider').on('keydown.zf.slider', function(e) { + var _$handle = $(this), + idx = _this.options.doubleSided ? _this.handles.index(_$handle) : 0, + oldValue = parseFloat(_this.inputs.eq(idx).val()), + newValue; + + // handle keyboard event with keyboard util + Foundation.Keyboard.handleKey(e, 'Slider', { + decrease: function() { + newValue = oldValue - _this.options.step; + }, + increase: function() { + newValue = oldValue + _this.options.step; + }, + decrease_fast: function() { + newValue = oldValue - _this.options.step * 10; + }, + increase_fast: function() { + newValue = oldValue + _this.options.step * 10; + }, + handled: function() { // only set handle pos when event was handled specially + e.preventDefault(); + _this._setHandlePos(_$handle, newValue, true); + } + }); + /*if (newValue) { // if pressed key has special function, update value + e.preventDefault(); + _this._setHandlePos(_$handle, newValue); + }*/ + }); + } + + /** + * Destroys the slider plugin. + */ + destroy() { + this.handles.off('.zf.slider'); + this.inputs.off('.zf.slider'); + this.$element.off('.zf.slider'); + + Foundation.unregisterPlugin(this); + } +} + +Slider.defaults = { + /** + * Minimum value for the slider scale. + * @option + * @example 0 + */ + start: 0, + /** + * Maximum value for the slider scale. + * @option + * @example 100 + */ + end: 100, + /** + * Minimum value change per change event. + * @option + * @example 1 + */ + step: 1, + /** + * Value at which the handle/input *(left handle/first input)* should be set to on initialization. + * @option + * @example 0 + */ + initialStart: 0, + /** + * Value at which the right handle/second input should be set to on initialization. + * @option + * @example 100 + */ + initialEnd: 100, + /** + * Allows the input to be located outside the container and visible. Set to by the JS + * @option + * @example false + */ + binding: false, + /** + * Allows the user to click/tap on the slider bar to select a value. + * @option + * @example true + */ + clickSelect: true, + /** + * Set to true and use the `vertical` class to change alignment to vertical. + * @option + * @example false + */ + vertical: false, + /** + * Allows the user to drag the slider handle(s) to select a value. + * @option + * @example true + */ + draggable: true, + /** + * Disables the slider and prevents event listeners from being applied. Double checked by JS with `disabledClass`. + * @option + * @example false + */ + disabled: false, + /** + * Allows the use of two handles. Double checked by the JS. Changes some logic handling. + * @option + * @example false + */ + doubleSided: false, + /** + * Potential future feature. + */ + // steps: 100, + /** + * Number of decimal places the plugin should go to for floating point precision. + * @option + * @example 2 + */ + decimal: 2, + /** + * Time delay for dragged elements. + */ + // dragDelay: 0, + /** + * Time, in ms, to animate the movement of a slider handle if user clicks/taps on the bar. Needs to be manually set if updating the transition time in the Sass settings. + * @option + * @example 200 + */ + moveTime: 200,//update this if changing the transition time in the sass + /** + * Class applied to disabled sliders. + * @option + * @example 'disabled' + */ + disabledClass: 'disabled', + /** + * Will invert the default layout for a vertical<span data-tooltip title="who would do this???"> </span>slider. + * @option + * @example false + */ + invertVertical: false, + /** + * Milliseconds before the `changed.zf-slider` event is triggered after value change. + * @option + * @example 500 + */ + changedDelay: 500 +}; + +function percent(frac, num) { + return (frac / num); +} +function absPosition($handle, dir, clickPos, param) { + return Math.abs(($handle.position()[dir] + ($handle[param]() / 2)) - clickPos); +} + +// Window exports +Foundation.plugin(Slider, 'Slider'); + +}(jQuery); + +//*********this is in case we go to static, absolute positions instead of dynamic positioning******** +// this.setSteps(function() { +// _this._events(); +// var initStart = _this.options.positions[_this.options.initialStart - 1] || null; +// var initEnd = _this.options.initialEnd ? _this.options.position[_this.options.initialEnd - 1] : null; +// if (initStart || initEnd) { +// _this._handleEvent(initStart, initEnd); +// } +// }); + +//***********the other part of absolute positions************* +// Slider.prototype.setSteps = function(cb) { +// var posChange = this.$element.outerWidth() / this.options.steps; +// var counter = 0 +// while(counter < this.options.steps) { +// if (counter) { +// this.options.positions.push(this.options.positions[counter - 1] + posChange); +// } else { +// this.options.positions.push(posChange); +// } +// counter++; +// } +// cb(); +// }; diff --git a/libraries/foundation-6/js/foundation.sticky.js b/libraries/foundation-6/js/foundation.sticky.js new file mode 100755 index 00000000..64060c5b --- /dev/null +++ b/libraries/foundation-6/js/foundation.sticky.js @@ -0,0 +1,459 @@ +'use strict'; + +!function($) { + +/** + * Sticky module. + * @module foundation.sticky + * @requires foundation.util.triggers + * @requires foundation.util.mediaQuery + */ + +class Sticky { + /** + * Creates a new instance of a sticky thing. + * @class + * @param {jQuery} element - jQuery object to make sticky. + * @param {Object} options - options object passed when creating the element programmatically. + */ + constructor(element, options) { + this.$element = element; + this.options = $.extend({}, Sticky.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Sticky'); + } + + /** + * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes + * @function + * @private + */ + _init() { + var $parent = this.$element.parent('[data-sticky-container]'), + id = this.$element[0].id || Foundation.GetYoDigits(6, 'sticky'), + _this = this; + + if (!$parent.length) { + this.wasWrapped = true; + } + this.$container = $parent.length ? $parent : $(this.options.container).wrapInner(this.$element); + this.$container.addClass(this.options.containerClass); + + this.$element.addClass(this.options.stickyClass) + .attr({'data-resize': id}); + + this.scrollCount = this.options.checkEvery; + this.isStuck = false; + $(window).one('load.zf.sticky', function(){ + //We calculate the container height to have correct values for anchor points offset calculation. + _this.containerHeight = _this.$element.css("display") == "none" ? 0 : _this.$element[0].getBoundingClientRect().height; + _this.$container.css('height', _this.containerHeight); + _this.elemHeight = _this.containerHeight; + if(_this.options.anchor !== ''){ + _this.$anchor = $('#' + _this.options.anchor); + }else{ + _this._parsePoints(); + } + + _this._setSizes(function(){ + _this._calc(false); + }); + _this._events(id.split('-').reverse().join('-')); + }); + } + + /** + * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on. + * @function + * @private + */ + _parsePoints() { + var top = this.options.topAnchor == "" ? 1 : this.options.topAnchor, + btm = this.options.btmAnchor== "" ? document.documentElement.scrollHeight : this.options.btmAnchor, + pts = [top, btm], + breaks = {}; + for (var i = 0, len = pts.length; i < len && pts[i]; i++) { + var pt; + if (typeof pts[i] === 'number') { + pt = pts[i]; + } else { + var place = pts[i].split(':'), + anchor = $(`#${place[0]}`); + + pt = anchor.offset().top; + if (place[1] && place[1].toLowerCase() === 'bottom') { + pt += anchor[0].getBoundingClientRect().height; + } + } + breaks[i] = pt; + } + + + this.points = breaks; + return; + } + + /** + * Adds event handlers for the scrolling element. + * @private + * @param {String} id - psuedo-random id for unique scroll event listener. + */ + _events(id) { + var _this = this, + scrollListener = this.scrollListener = `scroll.zf.${id}`; + if (this.isOn) { return; } + if (this.canStick) { + this.isOn = true; + $(window).off(scrollListener) + .on(scrollListener, function(e) { + if (_this.scrollCount === 0) { + _this.scrollCount = _this.options.checkEvery; + _this._setSizes(function() { + _this._calc(false, window.pageYOffset); + }); + } else { + _this.scrollCount--; + _this._calc(false, window.pageYOffset); + } + }); + } + + this.$element.off('resizeme.zf.trigger') + .on('resizeme.zf.trigger', function(e, el) { + _this._setSizes(function() { + _this._calc(false); + if (_this.canStick) { + if (!_this.isOn) { + _this._events(id); + } + } else if (_this.isOn) { + _this._pauseListeners(scrollListener); + } + }); + }); + } + + /** + * Removes event handlers for scroll and change events on anchor. + * @fires Sticky#pause + * @param {String} scrollListener - unique, namespaced scroll listener attached to `window` + */ + _pauseListeners(scrollListener) { + this.isOn = false; + $(window).off(scrollListener); + + /** + * Fires when the plugin is paused due to resize event shrinking the view. + * @event Sticky#pause + * @private + */ + this.$element.trigger('pause.zf.sticky'); + } + + /** + * Called on every `scroll` event and on `_init` + * fires functions based on booleans and cached values + * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints. + * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`. + */ + _calc(checkSizes, scroll) { + if (checkSizes) { this._setSizes(); } + + if (!this.canStick) { + if (this.isStuck) { + this._removeSticky(true); + } + return false; + } + + if (!scroll) { scroll = window.pageYOffset; } + + if (scroll >= this.topPoint) { + if (scroll <= this.bottomPoint) { + if (!this.isStuck) { + this._setSticky(); + } + } else { + if (this.isStuck) { + this._removeSticky(false); + } + } + } else { + if (this.isStuck) { + this._removeSticky(true); + } + } + } + + /** + * Causes the $element to become stuck. + * Adds `position: fixed;`, and helper classes. + * @fires Sticky#stuckto + * @function + * @private + */ + _setSticky() { + var _this = this, + stickTo = this.options.stickTo, + mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom', + notStuckTo = stickTo === 'top' ? 'bottom' : 'top', + css = {}; + + css[mrgn] = `${this.options[mrgn]}em`; + css[stickTo] = 0; + css[notStuckTo] = 'auto'; + css['left'] = this.$container.offset().left + parseInt(window.getComputedStyle(this.$container[0])["padding-left"], 10); + this.isStuck = true; + this.$element.removeClass(`is-anchored is-at-${notStuckTo}`) + .addClass(`is-stuck is-at-${stickTo}`) + .css(css) + /** + * Fires when the $element has become `position: fixed;` + * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top` + * @event Sticky#stuckto + */ + .trigger(`sticky.zf.stuckto:${stickTo}`); + this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd", function() { + _this._setSizes(); + }); + } + + /** + * Causes the $element to become unstuck. + * Removes `position: fixed;`, and helper classes. + * Adds other helper classes. + * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element. + * @fires Sticky#unstuckfrom + * @private + */ + _removeSticky(isTop) { + var stickTo = this.options.stickTo, + stickToTop = stickTo === 'top', + css = {}, + anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight, + mrgn = stickToTop ? 'marginTop' : 'marginBottom', + notStuckTo = stickToTop ? 'bottom' : 'top', + topOrBottom = isTop ? 'top' : 'bottom'; + + css[mrgn] = 0; + + css['bottom'] = 'auto'; + if(isTop) { + css['top'] = 0; + } else { + css['top'] = anchorPt; + } + + css['left'] = ''; + this.isStuck = false; + this.$element.removeClass(`is-stuck is-at-${stickTo}`) + .addClass(`is-anchored is-at-${topOrBottom}`) + .css(css) + /** + * Fires when the $element has become anchored. + * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom` + * @event Sticky#unstuckfrom + */ + .trigger(`sticky.zf.unstuckfrom:${topOrBottom}`); + } + + /** + * Sets the $element and $container sizes for plugin. + * Calls `_setBreakPoints`. + * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`. + * @private + */ + _setSizes(cb) { + this.canStick = Foundation.MediaQuery.atLeast(this.options.stickyOn); + if (!this.canStick) { cb(); } + var _this = this, + newElemWidth = this.$container[0].getBoundingClientRect().width, + comp = window.getComputedStyle(this.$container[0]), + pdng = parseInt(comp['padding-right'], 10); + + if (this.$anchor && this.$anchor.length) { + this.anchorHeight = this.$anchor[0].getBoundingClientRect().height; + } else { + this._parsePoints(); + } + + this.$element.css({ + 'max-width': `${newElemWidth - pdng}px` + }); + + var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight; + if (this.$element.css("display") == "none") { + newContainerHeight = 0; + } + this.containerHeight = newContainerHeight; + this.$container.css({ + height: newContainerHeight + }); + this.elemHeight = newContainerHeight; + + if (this.isStuck) { + this.$element.css({"left":this.$container.offset().left + parseInt(comp['padding-left'], 10)}); + } else { + if (this.$element.hasClass('is-at-bottom')) { + var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight; + this.$element.css('top', anchorPt); + } + } + + this._setBreakPoints(newContainerHeight, function() { + if (cb) { cb(); } + }); + } + + /** + * Sets the upper and lower breakpoints for the element to become sticky/unsticky. + * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`. + * @param {Function} cb - optional callback function to be called on completion. + * @private + */ + _setBreakPoints(elemHeight, cb) { + if (!this.canStick) { + if (cb) { cb(); } + else { return false; } + } + var mTop = emCalc(this.options.marginTop), + mBtm = emCalc(this.options.marginBottom), + topPoint = this.points ? this.points[0] : this.$anchor.offset().top, + bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight, + // topPoint = this.$anchor.offset().top || this.points[0], + // bottomPoint = topPoint + this.anchorHeight || this.points[1], + winHeight = window.innerHeight; + + if (this.options.stickTo === 'top') { + topPoint -= mTop; + bottomPoint -= (elemHeight + mTop); + } else if (this.options.stickTo === 'bottom') { + topPoint -= (winHeight - (elemHeight + mBtm)); + bottomPoint -= (winHeight - mBtm); + } else { + //this would be the stickTo: both option... tricky + } + + this.topPoint = topPoint; + this.bottomPoint = bottomPoint; + + if (cb) { cb(); } + } + + /** + * Destroys the current sticky element. + * Resets the element to the top position first. + * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container. + * @function + */ + destroy() { + this._removeSticky(true); + + this.$element.removeClass(`${this.options.stickyClass} is-anchored is-at-top`) + .css({ + height: '', + top: '', + bottom: '', + 'max-width': '' + }) + .off('resizeme.zf.trigger'); + if (this.$anchor && this.$anchor.length) { + this.$anchor.off('change.zf.sticky'); + } + $(window).off(this.scrollListener); + + if (this.wasWrapped) { + this.$element.unwrap(); + } else { + this.$container.removeClass(this.options.containerClass) + .css({ + height: '' + }); + } + Foundation.unregisterPlugin(this); + } +} + +Sticky.defaults = { + /** + * Customizable container template. Add your own classes for styling and sizing. + * @option + * @example '<div data-sticky-container class="small-6 columns"></div>' + */ + container: '<div data-sticky-container></div>', + /** + * Location in the view the element sticks to. + * @option + * @example 'top' + */ + stickTo: 'top', + /** + * If anchored to a single element, the id of that element. + * @option + * @example 'exampleId' + */ + anchor: '', + /** + * If using more than one element as anchor points, the id of the top anchor. + * @option + * @example 'exampleId:top' + */ + topAnchor: '', + /** + * If using more than one element as anchor points, the id of the bottom anchor. + * @option + * @example 'exampleId:bottom' + */ + btmAnchor: '', + /** + * Margin, in `em`'s to apply to the top of the element when it becomes sticky. + * @option + * @example 1 + */ + marginTop: 1, + /** + * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky. + * @option + * @example 1 + */ + marginBottom: 1, + /** + * Breakpoint string that is the minimum screen size an element should become sticky. + * @option + * @example 'medium' + */ + stickyOn: 'medium', + /** + * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`. + * @option + * @example 'sticky' + */ + stickyClass: 'sticky', + /** + * Class applied to sticky container. Foundation defaults to `sticky-container`. + * @option + * @example 'sticky-container' + */ + containerClass: 'sticky-container', + /** + * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll. + * @option + * @example 50 + */ + checkEvery: -1 +}; + +/** + * Helper function to calculate em values + * @param Number {em} - number of em's to calculate into pixels + */ +function emCalc(em) { + return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em; +} + +// Window exports +Foundation.plugin(Sticky, 'Sticky'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.tabs.js b/libraries/foundation-6/js/foundation.tabs.js new file mode 100755 index 00000000..97947963 --- /dev/null +++ b/libraries/foundation-6/js/foundation.tabs.js @@ -0,0 +1,333 @@ +'use strict'; + +!function($) { + +/** + * Tabs module. + * @module foundation.tabs + * @requires foundation.util.keyboard + * @requires foundation.util.timerAndImageLoader if tabs contain images + */ + +class Tabs { + /** + * Creates a new instance of tabs. + * @class + * @fires Tabs#init + * @param {jQuery} element - jQuery object to make into tabs. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options) { + this.$element = element; + this.options = $.extend({}, Tabs.defaults, this.$element.data(), options); + + this._init(); + Foundation.registerPlugin(this, 'Tabs'); + Foundation.Keyboard.register('Tabs', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ARROW_RIGHT': 'next', + 'ARROW_UP': 'previous', + 'ARROW_DOWN': 'next', + 'ARROW_LEFT': 'previous' + // 'TAB': 'next', + // 'SHIFT_TAB': 'previous' + }); + } + + /** + * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab. + * @private + */ + _init() { + var _this = this; + + this.$tabTitles = this.$element.find(`.${this.options.linkClass}`); + this.$tabContent = $(`[data-tabs-content="${this.$element[0].id}"]`); + + this.$tabTitles.each(function(){ + var $elem = $(this), + $link = $elem.find('a'), + isActive = $elem.hasClass('is-active'), + hash = $link[0].hash.slice(1), + linkId = $link[0].id ? $link[0].id : `${hash}-label`, + $tabContent = $(`#${hash}`); + + $elem.attr({'role': 'presentation'}); + + $link.attr({ + 'role': 'tab', + 'aria-controls': hash, + 'aria-selected': isActive, + 'id': linkId + }); + + $tabContent.attr({ + 'role': 'tabpanel', + 'aria-hidden': !isActive, + 'aria-labelledby': linkId + }); + + if(isActive && _this.options.autoFocus){ + $link.focus(); + } + }); + + if(this.options.matchHeight) { + var $images = this.$tabContent.find('img'); + + if ($images.length) { + Foundation.onImagesLoaded($images, this._setHeight.bind(this)); + } else { + this._setHeight(); + } + } + + this._events(); + } + + /** + * Adds event handlers for items within the tabs. + * @private + */ + _events() { + this._addKeyHandler(); + this._addClickHandler(); + this._setHeightMqHandler = null; + + if (this.options.matchHeight) { + this._setHeightMqHandler = this._setHeight.bind(this); + + $(window).on('changed.zf.mediaquery', this._setHeightMqHandler); + } + } + + /** + * Adds click handlers for items within the tabs. + * @private + */ + _addClickHandler() { + var _this = this; + + this.$element + .off('click.zf.tabs') + .on('click.zf.tabs', `.${this.options.linkClass}`, function(e){ + e.preventDefault(); + e.stopPropagation(); + if ($(this).hasClass('is-active')) { + return; + } + _this._handleTabChange($(this)); + }); + } + + /** + * Adds keyboard event handlers for items within the tabs. + * @private + */ + _addKeyHandler() { + var _this = this; + var $firstTab = _this.$element.find('li:first-of-type'); + var $lastTab = _this.$element.find('li:last-of-type'); + + this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function(e){ + if (e.which === 9) return; + + + var $element = $(this), + $elements = $element.parent('ul').children('li'), + $prevElement, + $nextElement; + + $elements.each(function(i) { + if ($(this).is($element)) { + if (_this.options.wrapOnKeys) { + $prevElement = i === 0 ? $elements.last() : $elements.eq(i-1); + $nextElement = i === $elements.length -1 ? $elements.first() : $elements.eq(i+1); + } else { + $prevElement = $elements.eq(Math.max(0, i-1)); + $nextElement = $elements.eq(Math.min(i+1, $elements.length-1)); + } + return; + } + }); + + // handle keyboard event with keyboard util + Foundation.Keyboard.handleKey(e, 'Tabs', { + open: function() { + $element.find('[role="tab"]').focus(); + _this._handleTabChange($element); + }, + previous: function() { + $prevElement.find('[role="tab"]').focus(); + _this._handleTabChange($prevElement); + }, + next: function() { + $nextElement.find('[role="tab"]').focus(); + _this._handleTabChange($nextElement); + }, + handled: function() { + e.stopPropagation(); + e.preventDefault(); + } + }); + }); + } + + /** + * Opens the tab `$targetContent` defined by `$target`. + * @param {jQuery} $target - Tab to open. + * @fires Tabs#change + * @function + */ + _handleTabChange($target) { + var $tabLink = $target.find('[role="tab"]'), + hash = $tabLink[0].hash, + $targetContent = this.$tabContent.find(hash), + $oldTab = this.$element. + find(`.${this.options.linkClass}.is-active`) + .removeClass('is-active') + .find('[role="tab"]') + .attr({ 'aria-selected': 'false' }); + + $(`#${$oldTab.attr('aria-controls')}`) + .removeClass('is-active') + .attr({ 'aria-hidden': 'true' }); + + $target.addClass('is-active'); + + $tabLink.attr({'aria-selected': 'true'}); + + $targetContent + .addClass('is-active') + .attr({'aria-hidden': 'false'}); + + /** + * Fires when the plugin has successfully changed tabs. + * @event Tabs#change + */ + this.$element.trigger('change.zf.tabs', [$target]); + } + + /** + * Public method for selecting a content pane to display. + * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display. + * @function + */ + selectTab(elem) { + var idStr; + + if (typeof elem === 'object') { + idStr = elem[0].id; + } else { + idStr = elem; + } + + if (idStr.indexOf('#') < 0) { + idStr = `#${idStr}`; + } + + var $target = this.$tabTitles.find(`[href="${idStr}"]`).parent(`.${this.options.linkClass}`); + + this._handleTabChange($target); + }; + /** + * Sets the height of each panel to the height of the tallest panel. + * If enabled in options, gets called on media query change. + * If loading content via external source, can be called directly or with _reflow. + * @function + * @private + */ + _setHeight() { + var max = 0; + this.$tabContent + .find(`.${this.options.panelClass}`) + .css('height', '') + .each(function() { + var panel = $(this), + isActive = panel.hasClass('is-active'); + + if (!isActive) { + panel.css({'visibility': 'hidden', 'display': 'block'}); + } + + var temp = this.getBoundingClientRect().height; + + if (!isActive) { + panel.css({ + 'visibility': '', + 'display': '' + }); + } + + max = temp > max ? temp : max; + }) + .css('height', `${max}px`); + } + + /** + * Destroys an instance of an tabs. + * @fires Tabs#destroyed + */ + destroy() { + this.$element + .find(`.${this.options.linkClass}`) + .off('.zf.tabs').hide().end() + .find(`.${this.options.panelClass}`) + .hide(); + + if (this.options.matchHeight) { + if (this._setHeightMqHandler != null) { + $(window).off('changed.zf.mediaquery', this._setHeightMqHandler); + } + } + + Foundation.unregisterPlugin(this); + } +} + +Tabs.defaults = { + /** + * Allows the window to scroll to content of active pane on load if set to true. + * @option + * @example false + */ + autoFocus: false, + + /** + * Allows keyboard input to 'wrap' around the tab links. + * @option + * @example true + */ + wrapOnKeys: true, + + /** + * Allows the tab content panes to match heights if set to true. + * @option + * @example false + */ + matchHeight: false, + + /** + * Class applied to `li`'s in tab link list. + * @option + * @example 'tabs-title' + */ + linkClass: 'tabs-title', + + /** + * Class applied to the content containers. + * @option + * @example 'tabs-panel' + */ + panelClass: 'tabs-panel' +}; + +function checkClass($elem){ + return $elem.hasClass('is-active'); +} + +// Window exports +Foundation.plugin(Tabs, 'Tabs'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.toggler.js b/libraries/foundation-6/js/foundation.toggler.js new file mode 100755 index 00000000..8bcaae4c --- /dev/null +++ b/libraries/foundation-6/js/foundation.toggler.js @@ -0,0 +1,144 @@ +'use strict'; + +!function($) { + +/** + * Toggler module. + * @module foundation.toggler + * @requires foundation.util.motion + * @requires foundation.util.triggers + */ + +class Toggler { + /** + * Creates a new instance of Toggler. + * @class + * @fires Toggler#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + constructor(element, options) { + this.$element = element; + this.options = $.extend({}, Toggler.defaults, element.data(), options); + this.className = ''; + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'Toggler'); + } + + /** + * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate. + * @function + * @private + */ + _init() { + var input; + // Parse animation classes if they were set + if (this.options.animate) { + input = this.options.animate.split(' '); + + this.animationIn = input[0]; + this.animationOut = input[1] || null; + } + // Otherwise, parse toggle class + else { + input = this.$element.data('toggler'); + // Allow for a . at the beginning of the string + this.className = input[0] === '.' ? input.slice(1) : input; + } + + // Add ARIA attributes to triggers + var id = this.$element[0].id; + $(`[data-open="${id}"], [data-close="${id}"], [data-toggle="${id}"]`) + .attr('aria-controls', id); + // If the target is hidden, add aria-hidden + this.$element.attr('aria-expanded', this.$element.is(':hidden') ? false : true); + } + + /** + * Initializes events for the toggle trigger. + * @function + * @private + */ + _events() { + this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this)); + } + + /** + * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was "on" or "off". + * @function + * @fires Toggler#on + * @fires Toggler#off + */ + toggle() { + this[ this.options.animate ? '_toggleAnimate' : '_toggleClass'](); + } + + _toggleClass() { + this.$element.toggleClass(this.className); + + var isOn = this.$element.hasClass(this.className); + if (isOn) { + /** + * Fires if the target element has the class after a toggle. + * @event Toggler#on + */ + this.$element.trigger('on.zf.toggler'); + } + else { + /** + * Fires if the target element does not have the class after a toggle. + * @event Toggler#off + */ + this.$element.trigger('off.zf.toggler'); + } + + this._updateARIA(isOn); + } + + _toggleAnimate() { + var _this = this; + + if (this.$element.is(':hidden')) { + Foundation.Motion.animateIn(this.$element, this.animationIn, function() { + _this._updateARIA(true); + this.trigger('on.zf.toggler'); + }); + } + else { + Foundation.Motion.animateOut(this.$element, this.animationOut, function() { + _this._updateARIA(false); + this.trigger('off.zf.toggler'); + }); + } + } + + _updateARIA(isOn) { + this.$element.attr('aria-expanded', isOn ? true : false); + } + + /** + * Destroys the instance of Toggler on the element. + * @function + */ + destroy() { + this.$element.off('.zf.toggler'); + Foundation.unregisterPlugin(this); + } +} + +Toggler.defaults = { + /** + * Tells the plugin if the element should animated when toggled. + * @option + * @example false + */ + animate: false +}; + +// Window exports +Foundation.plugin(Toggler, 'Toggler'); + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.tooltip.js b/libraries/foundation-6/js/foundation.tooltip.js new file mode 100755 index 00000000..2a78a706 --- /dev/null +++ b/libraries/foundation-6/js/foundation.tooltip.js @@ -0,0 +1,444 @@ +'use strict'; + +!function($) { + +/** + * Tooltip module. + * @module foundation.tooltip + * @requires foundation.util.box + * @requires foundation.util.triggers + */ + +class Tooltip { + /** + * Creates a new instance of a Tooltip. + * @class + * @fires Tooltip#init + * @param {jQuery} element - jQuery object to attach a tooltip to. + * @param {Object} options - object to extend the default configuration. + */ + constructor(element, options) { + this.$element = element; + this.options = $.extend({}, Tooltip.defaults, this.$element.data(), options); + + this.isActive = false; + this.isClick = false; + this._init(); + + Foundation.registerPlugin(this, 'Tooltip'); + } + + /** + * Initializes the tooltip by setting the creating the tip element, adding it's text, setting private variables and setting attributes on the anchor. + * @private + */ + _init() { + var elemId = this.$element.attr('aria-describedby') || Foundation.GetYoDigits(6, 'tooltip'); + + this.options.positionClass = this.options.positionClass || this._getPositionClass(this.$element); + this.options.tipText = this.options.tipText || this.$element.attr('title'); + this.template = this.options.template ? $(this.options.template) : this._buildTemplate(elemId); + + this.template.appendTo(document.body) + .text(this.options.tipText) + .hide(); + + this.$element.attr({ + 'title': '', + 'aria-describedby': elemId, + 'data-yeti-box': elemId, + 'data-toggle': elemId, + 'data-resize': elemId + }).addClass(this.triggerClass); + + //helper variables to track movement on collisions + this.usedPositions = []; + this.counter = 4; + this.classChanged = false; + + this._events(); + } + + /** + * Grabs the current positioning class, if present, and returns the value or an empty string. + * @private + */ + _getPositionClass(element) { + if (!element) { return ''; } + // var position = element.attr('class').match(/top|left|right/g); + var position = element[0].className.match(/\b(top|left|right)\b/g); + position = position ? position[0] : ''; + return position; + }; + /** + * builds the tooltip element, adds attributes, and returns the template. + * @private + */ + _buildTemplate(id) { + var templateClasses = (`${this.options.tooltipClass} ${this.options.positionClass} ${this.options.templateClasses}`).trim(); + var $template = $('<div></div>').addClass(templateClasses).attr({ + 'role': 'tooltip', + 'aria-hidden': true, + 'data-is-active': false, + 'data-is-focus': false, + 'id': id + }); + return $template; + } + + /** + * Function that gets called if a collision event is detected. + * @param {String} position - positioning class to try + * @private + */ + _reposition(position) { + this.usedPositions.push(position ? position : 'bottom'); + + //default, try switching to opposite side + if (!position && (this.usedPositions.indexOf('top') < 0)) { + this.template.addClass('top'); + } else if (position === 'top' && (this.usedPositions.indexOf('bottom') < 0)) { + this.template.removeClass(position); + } else if (position === 'left' && (this.usedPositions.indexOf('right') < 0)) { + this.template.removeClass(position) + .addClass('right'); + } else if (position === 'right' && (this.usedPositions.indexOf('left') < 0)) { + this.template.removeClass(position) + .addClass('left'); + } + + //if default change didn't work, try bottom or left first + else if (!position && (this.usedPositions.indexOf('top') > -1) && (this.usedPositions.indexOf('left') < 0)) { + this.template.addClass('left'); + } else if (position === 'top' && (this.usedPositions.indexOf('bottom') > -1) && (this.usedPositions.indexOf('left') < 0)) { + this.template.removeClass(position) + .addClass('left'); + } else if (position === 'left' && (this.usedPositions.indexOf('right') > -1) && (this.usedPositions.indexOf('bottom') < 0)) { + this.template.removeClass(position); + } else if (position === 'right' && (this.usedPositions.indexOf('left') > -1) && (this.usedPositions.indexOf('bottom') < 0)) { + this.template.removeClass(position); + } + //if nothing cleared, set to bottom + else { + this.template.removeClass(position); + } + this.classChanged = true; + this.counter--; + } + + /** + * sets the position class of an element and recursively calls itself until there are no more possible positions to attempt, or the tooltip element is no longer colliding. + * if the tooltip is larger than the screen width, default to full width - any user selected margin + * @private + */ + _setPosition() { + var position = this._getPositionClass(this.template), + $tipDims = Foundation.Box.GetDimensions(this.template), + $anchorDims = Foundation.Box.GetDimensions(this.$element), + direction = (position === 'left' ? 'left' : ((position === 'right') ? 'left' : 'top')), + param = (direction === 'top') ? 'height' : 'width', + offset = (param === 'height') ? this.options.vOffset : this.options.hOffset, + _this = this; + + if (($tipDims.width >= $tipDims.windowDims.width) || (!this.counter && !Foundation.Box.ImNotTouchingYou(this.template))) { + this.template.offset(Foundation.Box.GetOffsets(this.template, this.$element, 'center bottom', this.options.vOffset, this.options.hOffset, true)).css({ + // this.$element.offset(Foundation.GetOffsets(this.template, this.$element, 'center bottom', this.options.vOffset, this.options.hOffset, true)).css({ + 'width': $anchorDims.windowDims.width - (this.options.hOffset * 2), + 'height': 'auto' + }); + return false; + } + + this.template.offset(Foundation.Box.GetOffsets(this.template, this.$element,'center ' + (position || 'bottom'), this.options.vOffset, this.options.hOffset)); + + while(!Foundation.Box.ImNotTouchingYou(this.template) && this.counter) { + this._reposition(position); + this._setPosition(); + } + } + + /** + * reveals the tooltip, and fires an event to close any other open tooltips on the page + * @fires Tooltip#closeme + * @fires Tooltip#show + * @function + */ + show() { + if (this.options.showOn !== 'all' && !Foundation.MediaQuery.atLeast(this.options.showOn)) { + // console.error('The screen is too small to display this tooltip'); + return false; + } + + var _this = this; + this.template.css('visibility', 'hidden').show(); + this._setPosition(); + + /** + * Fires to close all other open tooltips on the page + * @event Closeme#tooltip + */ + this.$element.trigger('closeme.zf.tooltip', this.template.attr('id')); + + + this.template.attr({ + 'data-is-active': true, + 'aria-hidden': false + }); + _this.isActive = true; + // console.log(this.template); + this.template.stop().hide().css('visibility', '').fadeIn(this.options.fadeInDuration, function() { + //maybe do stuff? + }); + /** + * Fires when the tooltip is shown + * @event Tooltip#show + */ + this.$element.trigger('show.zf.tooltip'); + } + + /** + * Hides the current tooltip, and resets the positioning class if it was changed due to collision + * @fires Tooltip#hide + * @function + */ + hide() { + // console.log('hiding', this.$element.data('yeti-box')); + var _this = this; + this.template.stop().attr({ + 'aria-hidden': true, + 'data-is-active': false + }).fadeOut(this.options.fadeOutDuration, function() { + _this.isActive = false; + _this.isClick = false; + if (_this.classChanged) { + _this.template + .removeClass(_this._getPositionClass(_this.template)) + .addClass(_this.options.positionClass); + + _this.usedPositions = []; + _this.counter = 4; + _this.classChanged = false; + } + }); + /** + * fires when the tooltip is hidden + * @event Tooltip#hide + */ + this.$element.trigger('hide.zf.tooltip'); + } + + /** + * adds event listeners for the tooltip and its anchor + * TODO combine some of the listeners like focus and mouseenter, etc. + * @private + */ + _events() { + var _this = this; + var $template = this.template; + var isFocus = false; + + if (!this.options.disableHover) { + + this.$element + .on('mouseenter.zf.tooltip', function(e) { + if (!_this.isActive) { + _this.timeout = setTimeout(function() { + _this.show(); + }, _this.options.hoverDelay); + } + }) + .on('mouseleave.zf.tooltip', function(e) { + clearTimeout(_this.timeout); + if (!isFocus || (_this.isClick && !_this.options.clickOpen)) { + _this.hide(); + } + }); + } + + if (this.options.clickOpen) { + this.$element.on('mousedown.zf.tooltip', function(e) { + e.stopImmediatePropagation(); + if (_this.isClick) { + //_this.hide(); + // _this.isClick = false; + } else { + _this.isClick = true; + if ((_this.options.disableHover || !_this.$element.attr('tabindex')) && !_this.isActive) { + _this.show(); + } + } + }); + } else { + this.$element.on('mousedown.zf.tooltip', function(e) { + e.stopImmediatePropagation(); + _this.isClick = true; + }); + } + + if (!this.options.disableForTouch) { + this.$element + .on('tap.zf.tooltip touchend.zf.tooltip', function(e) { + _this.isActive ? _this.hide() : _this.show(); + }); + } + + this.$element.on({ + // 'toggle.zf.trigger': this.toggle.bind(this), + // 'close.zf.trigger': this.hide.bind(this) + 'close.zf.trigger': this.hide.bind(this) + }); + + this.$element + .on('focus.zf.tooltip', function(e) { + isFocus = true; + if (_this.isClick) { + // If we're not showing open on clicks, we need to pretend a click-launched focus isn't + // a real focus, otherwise on hover and come back we get bad behavior + if(!_this.options.clickOpen) { isFocus = false; } + return false; + } else { + _this.show(); + } + }) + + .on('focusout.zf.tooltip', function(e) { + isFocus = false; + _this.isClick = false; + _this.hide(); + }) + + .on('resizeme.zf.trigger', function() { + if (_this.isActive) { + _this._setPosition(); + } + }); + } + + /** + * adds a toggle method, in addition to the static show() & hide() functions + * @function + */ + toggle() { + if (this.isActive) { + this.hide(); + } else { + this.show(); + } + } + + /** + * Destroys an instance of tooltip, removes template element from the view. + * @function + */ + destroy() { + this.$element.attr('title', this.template.text()) + .off('.zf.trigger .zf.tootip') + // .removeClass('has-tip') + .removeAttr('aria-describedby') + .removeAttr('data-yeti-box') + .removeAttr('data-toggle') + .removeAttr('data-resize'); + + this.template.remove(); + + Foundation.unregisterPlugin(this); + } +} + +Tooltip.defaults = { + disableForTouch: false, + /** + * Time, in ms, before a tooltip should open on hover. + * @option + * @example 200 + */ + hoverDelay: 200, + /** + * Time, in ms, a tooltip should take to fade into view. + * @option + * @example 150 + */ + fadeInDuration: 150, + /** + * Time, in ms, a tooltip should take to fade out of view. + * @option + * @example 150 + */ + fadeOutDuration: 150, + /** + * Disables hover events from opening the tooltip if set to true + * @option + * @example false + */ + disableHover: false, + /** + * Optional addtional classes to apply to the tooltip template on init. + * @option + * @example 'my-cool-tip-class' + */ + templateClasses: '', + /** + * Non-optional class added to tooltip templates. Foundation default is 'tooltip'. + * @option + * @example 'tooltip' + */ + tooltipClass: 'tooltip', + /** + * Class applied to the tooltip anchor element. + * @option + * @example 'has-tip' + */ + triggerClass: 'has-tip', + /** + * Minimum breakpoint size at which to open the tooltip. + * @option + * @example 'small' + */ + showOn: 'small', + /** + * Custom template to be used to generate markup for tooltip. + * @option + * @example '<div class="tooltip"></div>' + */ + template: '', + /** + * Text displayed in the tooltip template on open. + * @option + * @example 'Some cool space fact here.' + */ + tipText: '', + touchCloseText: 'Tap to close.', + /** + * Allows the tooltip to remain open if triggered with a click or touch event. + * @option + * @example true + */ + clickOpen: true, + /** + * Additional positioning classes, set by the JS + * @option + * @example 'top' + */ + positionClass: '', + /** + * Distance, in pixels, the template should push away from the anchor on the Y axis. + * @option + * @example 10 + */ + vOffset: 10, + /** + * Distance, in pixels, the template should push away from the anchor on the X axis, if aligned to a side. + * @option + * @example 12 + */ + hOffset: 12 +}; + +/** + * TODO utilize resize event trigger + */ + +// Window exports +Foundation.plugin(Tooltip, 'Tooltip'); + +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/foundation.util.box.js b/libraries/foundation-6/js/foundation.util.box.js new file mode 100755 index 00000000..029362dd --- /dev/null +++ b/libraries/foundation-6/js/foundation.util.box.js @@ -0,0 +1,195 @@ +'use strict'; + +!function($) { + +Foundation.Box = { + ImNotTouchingYou: ImNotTouchingYou, + GetDimensions: GetDimensions, + GetOffsets: GetOffsets +} + +/** + * Compares the dimensions of an element to a container and determines collision events with container. + * @function + * @param {jQuery} element - jQuery object to test for collisions. + * @param {jQuery} parent - jQuery object to use as bounding container. + * @param {Boolean} lrOnly - set to true to check left and right values only. + * @param {Boolean} tbOnly - set to true to check top and bottom values only. + * @default if no parent object passed, detects collisions with `window`. + * @returns {Boolean} - true if collision free, false if a collision in any direction. + */ +function ImNotTouchingYou(element, parent, lrOnly, tbOnly) { + var eleDims = GetDimensions(element), + top, bottom, left, right; + + if (parent) { + var parDims = GetDimensions(parent); + + bottom = (eleDims.offset.top + eleDims.height <= parDims.height + parDims.offset.top); + top = (eleDims.offset.top >= parDims.offset.top); + left = (eleDims.offset.left >= parDims.offset.left); + right = (eleDims.offset.left + eleDims.width <= parDims.width + parDims.offset.left); + } + else { + bottom = (eleDims.offset.top + eleDims.height <= eleDims.windowDims.height + eleDims.windowDims.offset.top); + top = (eleDims.offset.top >= eleDims.windowDims.offset.top); + left = (eleDims.offset.left >= eleDims.windowDims.offset.left); + right = (eleDims.offset.left + eleDims.width <= eleDims.windowDims.width); + } + + var allDirs = [bottom, top, left, right]; + + if (lrOnly) { + return left === right === true; + } + + if (tbOnly) { + return top === bottom === true; + } + + return allDirs.indexOf(false) === -1; +}; + +/** + * Uses native methods to return an object of dimension values. + * @function + * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window. + * @returns {Object} - nested object of integer pixel values + * TODO - if element is window, return only those values. + */ +function GetDimensions(elem, test){ + elem = elem.length ? elem[0] : elem; + + if (elem === window || elem === document) { + throw new Error("I'm sorry, Dave. I'm afraid I can't do that."); + } + + var rect = elem.getBoundingClientRect(), + parRect = elem.parentNode.getBoundingClientRect(), + winRect = document.body.getBoundingClientRect(), + winY = window.pageYOffset, + winX = window.pageXOffset; + + return { + width: rect.width, + height: rect.height, + offset: { + top: rect.top + winY, + left: rect.left + winX + }, + parentDims: { + width: parRect.width, + height: parRect.height, + offset: { + top: parRect.top + winY, + left: parRect.left + winX + } + }, + windowDims: { + width: winRect.width, + height: winRect.height, + offset: { + top: winY, + left: winX + } + } + } +} + +/** + * Returns an object of top and left integer pixel values for dynamically rendered elements, + * such as: Tooltip, Reveal, and Dropdown + * @function + * @param {jQuery} element - jQuery object for the element being positioned. + * @param {jQuery} anchor - jQuery object for the element's anchor point. + * @param {String} position - a string relating to the desired position of the element, relative to it's anchor + * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element. + * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element. + * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset. + * TODO alter/rewrite to work with `em` values as well/instead of pixels + */ +function GetOffsets(element, anchor, position, vOffset, hOffset, isOverflow) { + var $eleDims = GetDimensions(element), + $anchorDims = anchor ? GetDimensions(anchor) : null; + + switch (position) { + case 'top': + return { + left: (Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left), + top: $anchorDims.offset.top - ($eleDims.height + vOffset) + } + break; + case 'left': + return { + left: $anchorDims.offset.left - ($eleDims.width + hOffset), + top: $anchorDims.offset.top + } + break; + case 'right': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset, + top: $anchorDims.offset.top + } + break; + case 'center top': + return { + left: ($anchorDims.offset.left + ($anchorDims.width / 2)) - ($eleDims.width / 2), + top: $anchorDims.offset.top - ($eleDims.height + vOffset) + } + break; + case 'center bottom': + return { + left: isOverflow ? hOffset : (($anchorDims.offset.left + ($anchorDims.width / 2)) - ($eleDims.width / 2)), + top: $anchorDims.offset.top + $anchorDims.height + vOffset + } + break; + case 'center left': + return { + left: $anchorDims.offset.left - ($eleDims.width + hOffset), + top: ($anchorDims.offset.top + ($anchorDims.height / 2)) - ($eleDims.height / 2) + } + break; + case 'center right': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset + 1, + top: ($anchorDims.offset.top + ($anchorDims.height / 2)) - ($eleDims.height / 2) + } + break; + case 'center': + return { + left: ($eleDims.windowDims.offset.left + ($eleDims.windowDims.width / 2)) - ($eleDims.width / 2), + top: ($eleDims.windowDims.offset.top + ($eleDims.windowDims.height / 2)) - ($eleDims.height / 2) + } + break; + case 'reveal': + return { + left: ($eleDims.windowDims.width - $eleDims.width) / 2, + top: $eleDims.windowDims.offset.top + vOffset + } + case 'reveal full': + return { + left: $eleDims.windowDims.offset.left, + top: $eleDims.windowDims.offset.top + } + break; + case 'left bottom': + return { + left: $anchorDims.offset.left, + top: $anchorDims.offset.top + $anchorDims.height + }; + break; + case 'right bottom': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset - $eleDims.width, + top: $anchorDims.offset.top + $anchorDims.height + }; + break; + default: + return { + left: (Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left), + top: $anchorDims.offset.top + $anchorDims.height + vOffset + } + } +} + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.util.keyboard.js b/libraries/foundation-6/js/foundation.util.keyboard.js new file mode 100755 index 00000000..290e7438 --- /dev/null +++ b/libraries/foundation-6/js/foundation.util.keyboard.js @@ -0,0 +1,115 @@ +/******************************************* + * * + * This util was created by Marius Olbertz * + * Please thank Marius on GitHub /owlbertz * + * or the web http://www.mariusolbertz.de/ * + * * + ******************************************/ + +'use strict'; + +!function($) { + +const keyCodes = { + 9: 'TAB', + 13: 'ENTER', + 27: 'ESCAPE', + 32: 'SPACE', + 37: 'ARROW_LEFT', + 38: 'ARROW_UP', + 39: 'ARROW_RIGHT', + 40: 'ARROW_DOWN' +} + +var commands = {} + +var Keyboard = { + keys: getKeyCodes(keyCodes), + + /** + * Parses the (keyboard) event and returns a String that represents its key + * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE + * @param {Event} event - the event generated by the event handler + * @return String key - String that represents the key pressed + */ + parseKey(event) { + var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase(); + if (event.shiftKey) key = `SHIFT_${key}`; + if (event.ctrlKey) key = `CTRL_${key}`; + if (event.altKey) key = `ALT_${key}`; + return key; + }, + + /** + * Handles the given (keyboard) event + * @param {Event} event - the event generated by the event handler + * @param {String} component - Foundation component's name, e.g. Slider or Reveal + * @param {Objects} functions - collection of functions that are to be executed + */ + handleKey(event, component, functions) { + var commandList = commands[component], + keyCode = this.parseKey(event), + cmds, + command, + fn; + + if (!commandList) return console.warn('Component not defined!'); + + if (typeof commandList.ltr === 'undefined') { // this component does not differentiate between ltr and rtl + cmds = commandList; // use plain list + } else { // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa + if (Foundation.rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl); + + else cmds = $.extend({}, commandList.rtl, commandList.ltr); + } + command = cmds[keyCode]; + + fn = functions[command]; + if (fn && typeof fn === 'function') { // execute function if exists + var returnValue = fn.apply(); + if (functions.handled || typeof functions.handled === 'function') { // execute function when event was handled + functions.handled(returnValue); + } + } else { + if (functions.unhandled || typeof functions.unhandled === 'function') { // execute function when event was not handled + functions.unhandled(); + } + } + }, + + /** + * Finds all focusable elements within the given `$element` + * @param {jQuery} $element - jQuery object to search within + * @return {jQuery} $focusable - all focusable elements within `$element` + */ + findFocusable($element) { + return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function() { + if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { return false; } //only have visible elements and those that have a tabindex greater or equal 0 + return true; + }); + }, + + /** + * Returns the component name name + * @param {Object} component - Foundation component, e.g. Slider or Reveal + * @return String componentName + */ + + register(componentName, cmds) { + commands[componentName] = cmds; + } +} + +/* + * Constants for easier comparing. + * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE + */ +function getKeyCodes(kcs) { + var k = {}; + for (var kc in kcs) k[kcs[kc]] = kcs[kc]; + return k; +} + +Foundation.Keyboard = Keyboard; + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.util.mediaQuery.js b/libraries/foundation-6/js/foundation.util.mediaQuery.js new file mode 100755 index 00000000..e98555dc --- /dev/null +++ b/libraries/foundation-6/js/foundation.util.mediaQuery.js @@ -0,0 +1,214 @@ +'use strict'; + +!function($) { + +// Default set of media queries +const defaultQueries = { + 'default' : 'only screen', + landscape : 'only screen and (orientation: landscape)', + portrait : 'only screen and (orientation: portrait)', + retina : 'only screen and (-webkit-min-device-pixel-ratio: 2),' + + 'only screen and (min--moz-device-pixel-ratio: 2),' + + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + + 'only screen and (min-device-pixel-ratio: 2),' + + 'only screen and (min-resolution: 192dpi),' + + 'only screen and (min-resolution: 2dppx)' +}; + +var MediaQuery = { + queries: [], + + current: '', + + /** + * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher. + * @function + * @private + */ + _init() { + var self = this; + var extractedStyles = $('.foundation-mq').css('font-family'); + var namedQueries; + + namedQueries = parseStyleToObject(extractedStyles); + + for (var key in namedQueries) { + if(namedQueries.hasOwnProperty(key)) { + self.queries.push({ + name: key, + value: `only screen and (min-width: ${namedQueries[key]})` + }); + } + } + + this.current = this._getCurrentSize(); + + this._watcher(); + }, + + /** + * Checks if the screen is at least as wide as a breakpoint. + * @function + * @param {String} size - Name of the breakpoint to check. + * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller. + */ + atLeast(size) { + var query = this.get(size); + + if (query) { + return window.matchMedia(query).matches; + } + + return false; + }, + + /** + * Gets the media query of a breakpoint. + * @function + * @param {String} size - Name of the breakpoint to get. + * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist. + */ + get(size) { + for (var i in this.queries) { + if(this.queries.hasOwnProperty(i)) { + var query = this.queries[i]; + if (size === query.name) return query.value; + } + } + + return null; + }, + + /** + * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one). + * @function + * @private + * @returns {String} Name of the current breakpoint. + */ + _getCurrentSize() { + var matched; + + for (var i = 0; i < this.queries.length; i++) { + var query = this.queries[i]; + + if (window.matchMedia(query.value).matches) { + matched = query; + } + } + + if (typeof matched === 'object') { + return matched.name; + } else { + return matched; + } + }, + + /** + * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes. + * @function + * @private + */ + _watcher() { + $(window).on('resize.zf.mediaquery', () => { + var newSize = this._getCurrentSize(), currentSize = this.current; + + if (newSize !== currentSize) { + // Change the current media query + this.current = newSize; + + // Broadcast the media query change on the window + $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]); + } + }); + } +}; + +Foundation.MediaQuery = MediaQuery; + +// matchMedia() polyfill - Test a CSS media type/query in JS. +// Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license +window.matchMedia || (window.matchMedia = function() { + 'use strict'; + + // For browsers that support matchMedium api such as IE 9 and webkit + var styleMedia = (window.styleMedia || window.media); + + // For those that don't support matchMedium + if (!styleMedia) { + var style = document.createElement('style'), + script = document.getElementsByTagName('script')[0], + info = null; + + style.type = 'text/css'; + style.id = 'matchmediajs-test'; + + script.parentNode.insertBefore(style, script); + + // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers + info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle; + + styleMedia = { + matchMedium(media) { + var text = `@media ${media}{ #matchmediajs-test { width: 1px; } }`; + + // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers + if (style.styleSheet) { + style.styleSheet.cssText = text; + } else { + style.textContent = text; + } + + // Test if media query is true or false + return info.width === '1px'; + } + } + } + + return function(media) { + return { + matches: styleMedia.matchMedium(media || 'all'), + media: media || 'all' + }; + } +}()); + +// Thank you: https://github.com/sindresorhus/query-string +function parseStyleToObject(str) { + var styleObject = {}; + + if (typeof str !== 'string') { + return styleObject; + } + + str = str.trim().slice(1, -1); // browsers re-quote string style values + + if (!str) { + return styleObject; + } + + styleObject = str.split('&').reduce(function(ret, param) { + var parts = param.replace(/\+/g, ' ').split('='); + var key = parts[0]; + var val = parts[1]; + key = decodeURIComponent(key); + + // missing `=` should be `null`: + // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters + val = val === undefined ? null : decodeURIComponent(val); + + if (!ret.hasOwnProperty(key)) { + ret[key] = val; + } else if (Array.isArray(ret[key])) { + ret[key].push(val); + } else { + ret[key] = [ret[key], val]; + } + return ret; + }, {}); + + return styleObject; +} + +Foundation.MediaQuery = MediaQuery; + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.util.motion.js b/libraries/foundation-6/js/foundation.util.motion.js new file mode 100755 index 00000000..0473a110 --- /dev/null +++ b/libraries/foundation-6/js/foundation.util.motion.js @@ -0,0 +1,99 @@ +'use strict'; + +!function($) { + +/** + * Motion module. + * @module foundation.motion + */ + +const initClasses = ['mui-enter', 'mui-leave']; +const activeClasses = ['mui-enter-active', 'mui-leave-active']; + +const Motion = { + animateIn: function(element, animation, cb) { + animate(true, element, animation, cb); + }, + + animateOut: function(element, animation, cb) { + animate(false, element, animation, cb); + } +} + +function Move(duration, elem, fn){ + var anim, prog, start = null; + // console.log('called'); + + function move(ts){ + if(!start) start = window.performance.now(); + // console.log(start, ts); + prog = ts - start; + fn.apply(elem); + + if(prog < duration){ anim = window.requestAnimationFrame(move, elem); } + else{ + window.cancelAnimationFrame(anim); + elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]); + } + } + anim = window.requestAnimationFrame(move); +} + +/** + * Animates an element in or out using a CSS transition class. + * @function + * @private + * @param {Boolean} isIn - Defines if the animation is in or out. + * @param {Object} element - jQuery or HTML object to animate. + * @param {String} animation - CSS class to use. + * @param {Function} cb - Callback to run when animation is finished. + */ +function animate(isIn, element, animation, cb) { + element = $(element).eq(0); + + if (!element.length) return; + + var initClass = isIn ? initClasses[0] : initClasses[1]; + var activeClass = isIn ? activeClasses[0] : activeClasses[1]; + + // Set up the animation + reset(); + + element + .addClass(animation) + .css('transition', 'none'); + + requestAnimationFrame(() => { + element.addClass(initClass); + if (isIn) element.show(); + }); + + // Start the animation + requestAnimationFrame(() => { + element[0].offsetWidth; + element + .css('transition', '') + .addClass(activeClass); + }); + + // Clean up the animation when it finishes + element.one(Foundation.transitionend(element), finish); + + // Hides the element (for out animations), resets the element, and runs a callback + function finish() { + if (!isIn) element.hide(); + reset(); + if (cb) cb.apply(element); + } + + // Resets transitions and removes motion-specific classes + function reset() { + element[0].style.transitionDuration = 0; + element.removeClass(`${initClass} ${activeClass} ${animation}`); + } +} + +Foundation.Move = Move; +Foundation.Motion = Motion; + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.util.nest.js b/libraries/foundation-6/js/foundation.util.nest.js new file mode 100755 index 00000000..a2602442 --- /dev/null +++ b/libraries/foundation-6/js/foundation.util.nest.js @@ -0,0 +1,76 @@ +'use strict'; + +!function($) { + +const Nest = { + Feather(menu, type = 'zf') { + menu.attr('role', 'menubar'); + + var items = menu.find('li').attr({'role': 'menuitem'}), + subMenuClass = `is-${type}-submenu`, + subItemClass = `${subMenuClass}-item`, + hasSubClass = `is-${type}-submenu-parent`; + + menu.find('a:first').attr('tabindex', 0); + + items.each(function() { + var $item = $(this), + $sub = $item.children('ul'); + + if ($sub.length) { + $item + .addClass(hasSubClass) + .attr({ + 'aria-haspopup': true, + 'aria-expanded': false, + 'aria-label': $item.children('a:first').text() + }); + + $sub + .addClass(`submenu ${subMenuClass}`) + .attr({ + 'data-submenu': '', + 'aria-hidden': true, + 'role': 'menu' + }); + } + + if ($item.parent('[data-submenu]').length) { + $item.addClass(`is-submenu-item ${subItemClass}`); + } + }); + + return; + }, + + Burn(menu, type) { + var items = menu.find('li').removeAttr('tabindex'), + subMenuClass = `is-${type}-submenu`, + subItemClass = `${subMenuClass}-item`, + hasSubClass = `is-${type}-submenu-parent`; + + menu + .find('*') + .removeClass(`${subMenuClass} ${subItemClass} ${hasSubClass} is-submenu-item submenu is-active`) + .removeAttr('data-submenu').css('display', ''); + + // console.log( menu.find('.' + subMenuClass + ', .' + subItemClass + ', .has-submenu, .is-submenu-item, .submenu, [data-submenu]') + // .removeClass(subMenuClass + ' ' + subItemClass + ' has-submenu is-submenu-item submenu') + // .removeAttr('data-submenu')); + // items.each(function(){ + // var $item = $(this), + // $sub = $item.children('ul'); + // if($item.parent('[data-submenu]').length){ + // $item.removeClass('is-submenu-item ' + subItemClass); + // } + // if($sub.length){ + // $item.removeClass('has-submenu'); + // $sub.removeClass('submenu ' + subMenuClass).removeAttr('data-submenu'); + // } + // }); + } +} + +Foundation.Nest = Nest; + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.util.timerAndImageLoader.js b/libraries/foundation-6/js/foundation.util.timerAndImageLoader.js new file mode 100755 index 00000000..b5facd02 --- /dev/null +++ b/libraries/foundation-6/js/foundation.util.timerAndImageLoader.js @@ -0,0 +1,86 @@ +'use strict'; + +!function($) { + +function Timer(elem, options, cb) { + var _this = this, + duration = options.duration,//options is an object for easily adding features later. + nameSpace = Object.keys(elem.data())[0] || 'timer', + remain = -1, + start, + timer; + + this.isPaused = false; + + this.restart = function() { + remain = -1; + clearTimeout(timer); + this.start(); + } + + this.start = function() { + this.isPaused = false; + // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things. + clearTimeout(timer); + remain = remain <= 0 ? duration : remain; + elem.data('paused', false); + start = Date.now(); + timer = setTimeout(function(){ + if(options.infinite){ + _this.restart();//rerun the timer. + } + cb(); + }, remain); + elem.trigger(`timerstart.zf.${nameSpace}`); + } + + this.pause = function() { + this.isPaused = true; + //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things. + clearTimeout(timer); + elem.data('paused', true); + var end = Date.now(); + remain = remain - (end - start); + elem.trigger(`timerpaused.zf.${nameSpace}`); + } +} + +/** + * Runs a callback function when images are fully loaded. + * @param {Object} images - Image(s) to check if loaded. + * @param {Func} callback - Function to execute when image is fully loaded. + */ +function onImagesLoaded(images, callback){ + var self = this, + unloaded = images.length; + + if (unloaded === 0) { + callback(); + } + + images.each(function() { + if (this.complete) { + singleImageLoaded(); + } + else if (typeof this.naturalWidth !== 'undefined' && this.naturalWidth > 0) { + singleImageLoaded(); + } + else { + $(this).one('load', function() { + singleImageLoaded(); + }); + } + }); + + function singleImageLoaded() { + unloaded--; + if (unloaded === 0) { + callback(); + } + } +} + +Foundation.Timer = Timer; +Foundation.onImagesLoaded = onImagesLoaded; + +}(jQuery); diff --git a/libraries/foundation-6/js/foundation.util.touch.js b/libraries/foundation-6/js/foundation.util.touch.js new file mode 100755 index 00000000..3852ac01 --- /dev/null +++ b/libraries/foundation-6/js/foundation.util.touch.js @@ -0,0 +1,352 @@ +//************************************************** +//**Work inspired by multiple jquery swipe plugins** +//**Done by Yohai Ararat *************************** +//************************************************** +(function($) { + + $.spotSwipe = { + version: '1.0.0', + enabled: 'ontouchstart' in document.documentElement, + preventDefault: false, + moveThreshold: 75, + timeThreshold: 200 + }; + + var startPosX, + startPosY, + startTime, + elapsedTime, + isMoving = false; + + function onTouchEnd() { + // alert(this); + this.removeEventListener('touchmove', onTouchMove); + this.removeEventListener('touchend', onTouchEnd); + isMoving = false; + } + + function onTouchMove(e) { + if ($.spotSwipe.preventDefault) { e.preventDefault(); } + if(isMoving) { + var x = e.touches[0].pageX; + var y = e.touches[0].pageY; + var dx = startPosX - x; + var dy = startPosY - y; + var dir; + elapsedTime = new Date().getTime() - startTime; + if(Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) { + dir = dx > 0 ? 'left' : 'right'; + } + // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) { + // dir = dy > 0 ? 'down' : 'up'; + // } + if(dir) { + e.preventDefault(); + onTouchEnd.call(this); + $(this).trigger('swipe', dir).trigger(`swipe${dir}`); + } + } + } + + function onTouchStart(e) { + if (e.touches.length == 1) { + startPosX = e.touches[0].pageX; + startPosY = e.touches[0].pageY; + isMoving = true; + startTime = new Date().getTime(); + this.addEventListener('touchmove', onTouchMove, false); + this.addEventListener('touchend', onTouchEnd, false); + } + } + + function init() { + this.addEventListener && this.addEventListener('touchstart', onTouchStart, false); + } + + function teardown() { + this.removeEventListener('touchstart', onTouchStart); + } + + $.event.special.swipe = { setup: init }; + + $.each(['left', 'up', 'down', 'right'], function () { + $.event.special[`swipe${this}`] = { setup: function(){ + $(this).on('swipe', $.noop); + } }; + }); +})(jQuery); +/**************************************************** + * Method for adding psuedo drag events to elements * + ***************************************************/ +!function($){ + $.fn.addTouch = function(){ + this.each(function(i,el){ + $(el).bind('touchstart touchmove touchend touchcancel',function(){ + //we pass the original event object because the jQuery event + //object is normalized to w3c specs and does not provide the TouchList + handleTouch(event); + }); + }); + + var handleTouch = function(event){ + var touches = event.changedTouches, + first = touches[0], + eventTypes = { + touchstart: 'mousedown', + touchmove: 'mousemove', + touchend: 'mouseup' + }, + type = eventTypes[event.type], + simulatedEvent + ; + + if('MouseEvent' in window && typeof window.MouseEvent === 'function') { + simulatedEvent = new window.MouseEvent(type, { + 'bubbles': true, + 'cancelable': true, + 'screenX': first.screenX, + 'screenY': first.screenY, + 'clientX': first.clientX, + 'clientY': first.clientY + }); + } else { + simulatedEvent = document.createEvent('MouseEvent'); + simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null); + } + first.target.dispatchEvent(simulatedEvent); + }; + }; +}(jQuery); + + +//********************************** +//**From the jQuery Mobile Library** +//**need to recreate functionality** +//**and try to improve if possible** +//********************************** + +/* Removing the jQuery function **** +************************************ + +(function( $, window, undefined ) { + + var $document = $( document ), + // supportTouch = $.mobile.support.touch, + touchStartEvent = 'touchstart'//supportTouch ? "touchstart" : "mousedown", + touchStopEvent = 'touchend'//supportTouch ? "touchend" : "mouseup", + touchMoveEvent = 'touchmove'//supportTouch ? "touchmove" : "mousemove"; + + // setup new event shortcuts + $.each( ( "touchstart touchmove touchend " + + "swipe swipeleft swiperight" ).split( " " ), function( i, name ) { + + $.fn[ name ] = function( fn ) { + return fn ? this.bind( name, fn ) : this.trigger( name ); + }; + + // jQuery < 1.8 + if ( $.attrFn ) { + $.attrFn[ name ] = true; + } + }); + + function triggerCustomEvent( obj, eventType, event, bubble ) { + var originalType = event.type; + event.type = eventType; + if ( bubble ) { + $.event.trigger( event, undefined, obj ); + } else { + $.event.dispatch.call( obj, event ); + } + event.type = originalType; + } + + // also handles taphold + + // Also handles swipeleft, swiperight + $.event.special.swipe = { + + // More than this horizontal displacement, and we will suppress scrolling. + scrollSupressionThreshold: 30, + + // More time than this, and it isn't a swipe. + durationThreshold: 1000, + + // Swipe horizontal displacement must be more than this. + horizontalDistanceThreshold: window.devicePixelRatio >= 2 ? 15 : 30, + + // Swipe vertical displacement must be less than this. + verticalDistanceThreshold: window.devicePixelRatio >= 2 ? 15 : 30, + + getLocation: function ( event ) { + var winPageX = window.pageXOffset, + winPageY = window.pageYOffset, + x = event.clientX, + y = event.clientY; + + if ( event.pageY === 0 && Math.floor( y ) > Math.floor( event.pageY ) || + event.pageX === 0 && Math.floor( x ) > Math.floor( event.pageX ) ) { + + // iOS4 clientX/clientY have the value that should have been + // in pageX/pageY. While pageX/page/ have the value 0 + x = x - winPageX; + y = y - winPageY; + } else if ( y < ( event.pageY - winPageY) || x < ( event.pageX - winPageX ) ) { + + // Some Android browsers have totally bogus values for clientX/Y + // when scrolling/zooming a page. Detectable since clientX/clientY + // should never be smaller than pageX/pageY minus page scroll + x = event.pageX - winPageX; + y = event.pageY - winPageY; + } + + return { + x: x, + y: y + }; + }, + + start: function( event ) { + var data = event.originalEvent.touches ? + event.originalEvent.touches[ 0 ] : event, + location = $.event.special.swipe.getLocation( data ); + return { + time: ( new Date() ).getTime(), + coords: [ location.x, location.y ], + origin: $( event.target ) + }; + }, + + stop: function( event ) { + var data = event.originalEvent.touches ? + event.originalEvent.touches[ 0 ] : event, + location = $.event.special.swipe.getLocation( data ); + return { + time: ( new Date() ).getTime(), + coords: [ location.x, location.y ] + }; + }, + + handleSwipe: function( start, stop, thisObject, origTarget ) { + if ( stop.time - start.time < $.event.special.swipe.durationThreshold && + Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold && + Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) { + var direction = start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight"; + + triggerCustomEvent( thisObject, "swipe", $.Event( "swipe", { target: origTarget, swipestart: start, swipestop: stop }), true ); + triggerCustomEvent( thisObject, direction,$.Event( direction, { target: origTarget, swipestart: start, swipestop: stop } ), true ); + return true; + } + return false; + + }, + + // This serves as a flag to ensure that at most one swipe event event is + // in work at any given time + eventInProgress: false, + + setup: function() { + var events, + thisObject = this, + $this = $( thisObject ), + context = {}; + + // Retrieve the events data for this element and add the swipe context + events = $.data( this, "mobile-events" ); + if ( !events ) { + events = { length: 0 }; + $.data( this, "mobile-events", events ); + } + events.length++; + events.swipe = context; + + context.start = function( event ) { + + // Bail if we're already working on a swipe event + if ( $.event.special.swipe.eventInProgress ) { + return; + } + $.event.special.swipe.eventInProgress = true; + + var stop, + start = $.event.special.swipe.start( event ), + origTarget = event.target, + emitted = false; + + context.move = function( event ) { + if ( !start || event.isDefaultPrevented() ) { + return; + } + + stop = $.event.special.swipe.stop( event ); + if ( !emitted ) { + emitted = $.event.special.swipe.handleSwipe( start, stop, thisObject, origTarget ); + if ( emitted ) { + + // Reset the context to make way for the next swipe event + $.event.special.swipe.eventInProgress = false; + } + } + // prevent scrolling + if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) { + event.preventDefault(); + } + }; + + context.stop = function() { + emitted = true; + + // Reset the context to make way for the next swipe event + $.event.special.swipe.eventInProgress = false; + $document.off( touchMoveEvent, context.move ); + context.move = null; + }; + + $document.on( touchMoveEvent, context.move ) + .one( touchStopEvent, context.stop ); + }; + $this.on( touchStartEvent, context.start ); + }, + + teardown: function() { + var events, context; + + events = $.data( this, "mobile-events" ); + if ( events ) { + context = events.swipe; + delete events.swipe; + events.length--; + if ( events.length === 0 ) { + $.removeData( this, "mobile-events" ); + } + } + + if ( context ) { + if ( context.start ) { + $( this ).off( touchStartEvent, context.start ); + } + if ( context.move ) { + $document.off( touchMoveEvent, context.move ); + } + if ( context.stop ) { + $document.off( touchStopEvent, context.stop ); + } + } + } + }; + $.each({ + swipeleft: "swipe.left", + swiperight: "swipe.right" + }, function( event, sourceEvent ) { + + $.event.special[ event ] = { + setup: function() { + $( this ).bind( sourceEvent, $.noop ); + }, + teardown: function() { + $( this ).unbind( sourceEvent ); + } + }; + }); +})( jQuery, this ); +*/ diff --git a/libraries/foundation-6/js/foundation.util.triggers.js b/libraries/foundation-6/js/foundation.util.triggers.js new file mode 100755 index 00000000..c904c994 --- /dev/null +++ b/libraries/foundation-6/js/foundation.util.triggers.js @@ -0,0 +1,239 @@ +'use strict'; + +!function($) { + +const MutationObserver = (function () { + var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; + for (var i=0; i < prefixes.length; i++) { + if (`${prefixes[i]}MutationObserver` in window) { + return window[`${prefixes[i]}MutationObserver`]; + } + } + return false; +}()); + +const triggers = (el, type) => { + el.data(type).split(' ').forEach(id => { + $(`#${id}`)[ type === 'close' ? 'trigger' : 'triggerHandler'](`${type}.zf.trigger`, [el]); + }); +}; +// Elements with [data-open] will reveal a plugin that supports it when clicked. +$(document).on('click.zf.trigger', '[data-open]', function() { + triggers($(this), 'open'); +}); + +// Elements with [data-close] will close a plugin that supports it when clicked. +// If used without a value on [data-close], the event will bubble, allowing it to close a parent component. +$(document).on('click.zf.trigger', '[data-close]', function() { + let id = $(this).data('close'); + if (id) { + triggers($(this), 'close'); + } + else { + $(this).trigger('close.zf.trigger'); + } +}); + +// Elements with [data-toggle] will toggle a plugin that supports it when clicked. +$(document).on('click.zf.trigger', '[data-toggle]', function() { + triggers($(this), 'toggle'); +}); + +// Elements with [data-closable] will respond to close.zf.trigger events. +$(document).on('close.zf.trigger', '[data-closable]', function(e){ + e.stopPropagation(); + let animation = $(this).data('closable'); + + if(animation !== ''){ + Foundation.Motion.animateOut($(this), animation, function() { + $(this).trigger('closed.zf'); + }); + }else{ + $(this).fadeOut().trigger('closed.zf'); + } +}); + +$(document).on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', function() { + let id = $(this).data('toggle-focus'); + $(`#${id}`).triggerHandler('toggle.zf.trigger', [$(this)]); +}); + +/** +* Fires once after all other scripts have loaded +* @function +* @private +*/ +$(window).load(() => { + checkListeners(); +}); + +function checkListeners() { + eventsListener(); + resizeListener(); + scrollListener(); + closemeListener(); +} + +//******** only fires this function once on load, if there's something to watch ******** +function closemeListener(pluginName) { + var yetiBoxes = $('[data-yeti-box]'), + plugNames = ['dropdown', 'tooltip', 'reveal']; + + if(pluginName){ + if(typeof pluginName === 'string'){ + plugNames.push(pluginName); + }else if(typeof pluginName === 'object' && typeof pluginName[0] === 'string'){ + plugNames.concat(pluginName); + }else{ + console.error('Plugin names must be strings'); + } + } + if(yetiBoxes.length){ + let listeners = plugNames.map((name) => { + return `closeme.zf.${name}`; + }).join(' '); + + $(window).off(listeners).on(listeners, function(e, pluginId){ + let plugin = e.namespace.split('.')[0]; + let plugins = $(`[data-${plugin}]`).not(`[data-yeti-box="${pluginId}"]`); + + plugins.each(function(){ + let _this = $(this); + + _this.triggerHandler('close.zf.trigger', [_this]); + }); + }); + } +} + +function resizeListener(debounce){ + let timer, + $nodes = $('[data-resize]'); + if($nodes.length){ + $(window).off('resize.zf.trigger') + .on('resize.zf.trigger', function(e) { + if (timer) { clearTimeout(timer); } + + timer = setTimeout(function(){ + + if(!MutationObserver){//fallback for IE 9 + $nodes.each(function(){ + $(this).triggerHandler('resizeme.zf.trigger'); + }); + } + //trigger all listening elements and signal a resize event + $nodes.attr('data-events', "resize"); + }, debounce || 10);//default time to emit resize event + }); + } +} + +function scrollListener(debounce){ + let timer, + $nodes = $('[data-scroll]'); + if($nodes.length){ + $(window).off('scroll.zf.trigger') + .on('scroll.zf.trigger', function(e){ + if(timer){ clearTimeout(timer); } + + timer = setTimeout(function(){ + + if(!MutationObserver){//fallback for IE 9 + $nodes.each(function(){ + $(this).triggerHandler('scrollme.zf.trigger'); + }); + } + //trigger all listening elements and signal a scroll event + $nodes.attr('data-events', "scroll"); + }, debounce || 10);//default time to emit scroll event + }); + } +} + +function eventsListener() { + if(!MutationObserver){ return false; } + let nodes = document.querySelectorAll('[data-resize], [data-scroll], [data-mutate]'); + + //element callback + var listeningElementsMutation = function(mutationRecordsList) { + var $target = $(mutationRecordsList[0].target); + //trigger the event handler for the element depending on type + switch ($target.attr("data-events")) { + + case "resize" : + $target.triggerHandler('resizeme.zf.trigger', [$target]); + break; + + case "scroll" : + $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); + break; + + // case "mutate" : + // console.log('mutate', $target); + // $target.triggerHandler('mutate.zf.trigger'); + // + // //make sure we don't get stuck in an infinite loop from sloppy codeing + // if ($target.index('[data-mutate]') == $("[data-mutate]").length-1) { + // domMutationObserver(); + // } + // break; + + default : + return false; + //nothing + } + } + + if(nodes.length){ + //for each element that needs to listen for resizing, scrolling, (or coming soon mutation) add a single observer + for (var i = 0; i <= nodes.length-1; i++) { + let elementObserver = new MutationObserver(listeningElementsMutation); + elementObserver.observe(nodes[i], { attributes: true, childList: false, characterData: false, subtree:false, attributeFilter:["data-events"]}); + } + } +} + +// ------------------------------------ + +// [PH] +// Foundation.CheckWatchers = checkWatchers; +Foundation.IHearYou = checkListeners; +// Foundation.ISeeYou = scrollListener; +// Foundation.IFeelYou = closemeListener; + +}(jQuery); + +// function domMutationObserver(debounce) { +// // !!! This is coming soon and needs more work; not active !!! // +// var timer, +// nodes = document.querySelectorAll('[data-mutate]'); +// // +// if (nodes.length) { +// // var MutationObserver = (function () { +// // var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; +// // for (var i=0; i < prefixes.length; i++) { +// // if (prefixes[i] + 'MutationObserver' in window) { +// // return window[prefixes[i] + 'MutationObserver']; +// // } +// // } +// // return false; +// // }()); +// +// +// //for the body, we need to listen for all changes effecting the style and class attributes +// var bodyObserver = new MutationObserver(bodyMutation); +// bodyObserver.observe(document.body, { attributes: true, childList: true, characterData: false, subtree:true, attributeFilter:["style", "class"]}); +// +// +// //body callback +// function bodyMutation(mutate) { +// //trigger all listening elements and signal a mutation event +// if (timer) { clearTimeout(timer); } +// +// timer = setTimeout(function() { +// bodyObserver.disconnect(); +// $('[data-mutate]').attr('data-events',"mutate"); +// }, debounce || 150); +// } +// } +// } diff --git a/libraries/foundation-6/js/jquery.js b/libraries/foundation-6/js/jquery.js deleted file mode 100644 index f942984f..00000000 --- a/libraries/foundation-6/js/jquery.js +++ /dev/null @@ -1,9842 +0,0 @@ -/*! - * jQuery JavaScript Library v2.2.2 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-03-17T17:51Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -//"use strict"; -var arr = []; - -var document = window.document; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "2.2.2", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = jQuery.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - var realStringObj = obj && obj.toString(); - return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; - }, - - isPlainObject: function( obj ) { - var key; - - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call( obj, "constructor" ) && - !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android<4.0, iOS<6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf( "use strict" ) === 1 ) { - script = document.createElement( "script" ); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE9-11+ - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -// JSHint would error on this code due to the Symbol not being defined in ES5. -// Defining this global in .jshintrc would create a danger of using the global -// unguarded in another place, it seems safer to just disable JSHint for these -// three lines. -/* jshint ignore: start */ -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} -/* jshint ignore: end */ - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, nidselect, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; - while ( i-- ) { - groups[i] = nidselect + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( (parent = document.defaultView) && parent.top !== parent ) { - // Support: IE 11 - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( document.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - return m ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" + - "<select id='" + expando + "-\r\\' msallowcapture=''>" + - "<option selected=''></option></select>"; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( (oldCache = uniqueCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = "<a href='#'></a>"; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = "<input/>"; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - } ); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, - len = this.length, - ret = [], - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - // Support: Blackberry 4.6 - // gEBID returns nodes no longer in the document (#6963) - if ( elem && elem.parentNode ) { - - // Inject the element directly into the jQuery object - this.length = 1; - this[ 0 ] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( pos ? - pos.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnotwhite = ( /\S+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], - [ "notify", "progress", jQuery.Callbacks( "memory" ) ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this === promise ? newDefer.promise() : this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( function() { - - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || - ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. - // If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // Add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .progress( updateFunc( i, progressContexts, progressValues ) ) - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ); - } else { - --remaining; - } - } - } - - // If we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -} ); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -} ); - -/** - * The ready event handler and self cleanup method - */ -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called - // after the browser event has already occurred. - // Support: IE9-10 only - // Older IE sometimes signals "interactive" too soon - if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[ 0 ], key ) : emptyGet; -}; -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - /* jshint -W018 */ - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - register: function( owner, initial ) { - var value = initial || {}; - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable, non-writable property - // configurability must be true to allow the property to be - // deleted with the delete operator - } else { - Object.defineProperty( owner, this.expando, { - value: value, - writable: true, - configurable: true - } ); - } - return owner[ this.expando ]; - }, - cache: function( owner ) { - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( !acceptData( owner ) ) { - return {}; - } - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - owner[ this.expando ] && owner[ this.expando ][ key ]; - }, - access: function( owner, key, value ) { - var stored; - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase( key ) ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, camel, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key === undefined ) { - this.register( owner ); - - } else { - - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - camel = jQuery.camelCase( key ); - - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } - } - - i = name.length; - - while ( i-- ) { - delete cache[ name[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <= 35-45+ - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://code.google.com/p/chromium/issues/detail?id=378607 - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data, camelKey; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // with the key as-is - data = dataUser.get( elem, key ) || - - // Try to find dashed key if it exists (gh-2779) - // This is for 2.2.x only - dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() ); - - if ( data !== undefined ) { - return data; - } - - camelKey = jQuery.camelCase( key ); - - // Attempt to get data from the cache - // with the key camelized - data = dataUser.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - camelKey = jQuery.camelCase( key ); - this.each( function() { - - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = dataUser.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - dataUser.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf( "-" ) > -1 && data !== undefined ) { - dataUser.set( this, key, value ); - } - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || - !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, - maxIterations = 20, - currentValue = tween ? - function() { return tween.cur(); } : - function() { return jQuery.css( elem, prop, "" ); }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - do { - - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([\w:-]+)/ ); - -var rscriptType = ( /^$|\/(?:java|ecma)script/i ); - - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // Support: IE9 - option: [ 1, "<select multiple='multiple'>", "</select>" ], - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting <tbody> or other required elements. - thead: [ 1, "<table>", "</table>" ], - col: [ 2, "<table><colgroup>", "</colgroup></table>" ], - tr: [ 2, "<table><tbody>", "</tbody></table>" ], - td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], - - _default: [ 0, "", "" ] -}; - -// Support: IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - - // Support: IE9-11+ - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== "undefined" ? - context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0-4.3, Safari<=5.1 - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari<=5.1, Android<4.2 - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<=11+ - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = "<textarea>x</textarea>"; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE9 -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Support (at least): Chrome, IE9 - // Find delegate handlers - // Black-hole SVG <use> instance trees (#13180) - // - // Support: Firefox<=42+ - // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) - if ( delegateCount && cur.nodeType && - ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push( { elem: cur, handlers: matches } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + - "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split( " " ), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " + - "screenX screenY toElement" ).split( " " ), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + - ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + - ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome<28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android<4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://code.google.com/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, - - // Support: IE 10-11, Edge 10240+ - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /<script|<style|<link/i, - - // checked="checked" or checked - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rscriptTypeMasked = /^true\/(.*)/, - rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g; - -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName( "tbody" )[ 0 ] || - elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1></$2>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <= 35-45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <= 35-45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - - // Keep domManip exposed until 3.0 (gh-2225) - domManip: domManip, - - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); - - -var iframe, - elemdisplay = { - - // Support: Firefox - // We have to pre-define these values for FF (#10227) - HTML: "block", - BODY: "block" - }; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ - -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - display = jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = ( iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" ) ) - .appendTo( doc.documentElement ); - - // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse - doc = iframe[ 0 ].contentDocument; - - // Support: IE - doc.write(); - doc.close(); - - display = actualDisplay( nodeName, doc ); - iframe.detach(); - } - - // Store the correct default display - elemdisplay[ nodeName ] = display; - } - - return display; -} -var rmargin = ( /^margin/ ); - -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE<=11+, Firefox<=30+ (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var documentElement = document.documentElement; - - - -( function() { - var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE9-11+ - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + - "padding:0;margin-top:1px;position:absolute"; - container.appendChild( div ); - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - div.style.cssText = - - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;" + - "position:relative;display:block;" + - "margin:auto;border:1px;padding:1px;" + - "top:1%;width:50%"; - div.innerHTML = ""; - documentElement.appendChild( container ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - reliableMarginLeftVal = divStyle.marginLeft === "2px"; - boxSizingReliableVal = divStyle.width === "4px"; - - // Support: Android 4.0 - 4.3 only - // Some styles come back with percentage values, even though they shouldn't - div.style.marginRight = "50%"; - pixelMarginRightVal = divStyle.marginRight === "4px"; - - documentElement.removeChild( container ); - } - - jQuery.extend( support, { - pixelPosition: function() { - - // This test is executed only once but we still do memoizing - // since we can use the boxSizingReliable pre-computing. - // No need to check if the test was already performed, though. - computeStyleTests(); - return pixelPositionVal; - }, - boxSizingReliable: function() { - if ( boxSizingReliableVal == null ) { - computeStyleTests(); - } - return boxSizingReliableVal; - }, - pixelMarginRight: function() { - - // Support: Android 4.0-4.3 - // We're checking for boxSizingReliableVal here instead of pixelMarginRightVal - // since that compresses better and they're computed together anyway. - if ( boxSizingReliableVal == null ) { - computeStyleTests(); - } - return pixelMarginRightVal; - }, - reliableMarginLeft: function() { - - // Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37 - if ( boxSizingReliableVal == null ) { - computeStyleTests(); - } - return reliableMarginLeftVal; - }, - reliableMarginRight: function() { - - // Support: Android 2.3 - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. (#3333) - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - // This support function is only executed once so no memoizing is needed. - var ret, - marginDiv = div.appendChild( document.createElement( "div" ) ); - - // Reset CSS: box-sizing; display; margin; border; padding - marginDiv.style.cssText = div.style.cssText = - - // Support: Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;box-sizing:content-box;" + - "display:block;margin:0;border:0;padding:0"; - marginDiv.style.marginRight = marginDiv.style.width = "0"; - div.style.width = "1px"; - documentElement.appendChild( container ); - - ret = !parseFloat( window.getComputedStyle( marginDiv ).marginRight ); - - documentElement.removeChild( container ); - div.removeChild( marginDiv ); - - return ret; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - style = elem.style; - - computed = computed || getStyles( elem ); - ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined; - - // Support: Opera 12.1x only - // Fall back to style even without computed - // computed is undefined for elems on document fragments - if ( ( ret === "" || ret === undefined ) && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // Support: IE9 - // getPropertyValue is only needed for .css('filter') (#12537) - if ( computed ) { - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // http://dev.w3.org/csswg/cssom/#resolved-values - if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE9-11+ - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "O", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style; - -// Return a css property mapped to a potentially vendor prefixed property -function vendorPropName( name ) { - - // Shortcut for names that are not vendor prefixed - if ( name in emptyStyle ) { - return name; - } - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -function setPositiveNumber( elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i = extra === ( isBorderBox ? "border" : "content" ) ? - - // If we already have the right measurement, avoid augmentation - 4 : - - // Otherwise initialize for horizontal or vertical properties - name === "width" ? 1 : 0, - - val = 0; - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // At this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - - // At this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // At this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with offset property, which is equivalent to the border-box value - var valueIsBorderBox = true, - val = name === "width" ? elem.offsetWidth : elem.offsetHeight, - styles = getStyles( elem ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Support: IE11 only - // In IE 11 fullscreen elements inside of an iframe have - // 100x too small dimensions (gh-1764). - if ( document.msFullscreenElement && window.top !== window ) { - - // Support: IE11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - if ( elem.getClientRects().length ) { - val = Math.round( elem.getBoundingClientRect()[ name ] * 100 ); - } - } - - // Some non-html elements return undefined for offsetWidth, so check for null/undefined - // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 - // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 - if ( val <= 0 || val == null ) { - - // Fall back to computed then uncomputed css if necessary - val = curCSS( elem, name, styles ); - if ( val < 0 || val == null ) { - val = elem.style[ name ]; - } - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test( val ) ) { - return val; - } - - // Check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && - ( support.boxSizingReliable() || val === elem.style[ name ] ); - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - } - - // Use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -function showHide( elements, show ) { - var display, elem, hidden, - values = [], - index = 0, - length = elements.length; - - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - values[ index ] = dataPriv.get( elem, "olddisplay" ); - display = elem.style.display; - if ( show ) { - - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !values[ index ] && display === "none" ) { - elem.style.display = ""; - } - - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( elem.style.display === "" && isHidden( elem ) ) { - values[ index ] = dataPriv.access( - elem, - "olddisplay", - defaultDisplay( elem.nodeName ) - ); - } - } else { - hidden = isHidden( elem ); - - if ( display !== "none" || !hidden ) { - dataPriv.set( - elem, - "olddisplay", - hidden ? display : jQuery.css( elem, "display" ) - ); - } - } - } - - // Set the display of most of the elements in a second loop - // to avoid the constant reflow - for ( index = 0; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - if ( !show || elem.style.display === "none" || elem.style.display === "" ) { - elem.style.display = show ? values[ index ] || "" : "none"; - } - } - - return elements; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - "float": "cssFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - style = elem.style; - - name = jQuery.cssProps[ origName ] || - ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName ); - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - if ( type === "number" ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // Support: IE9-11+ - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - style[ name ] = value; - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = jQuery.camelCase( name ); - - // Make sure that we're working with the right name - name = jQuery.cssProps[ origName ] || - ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName ); - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( i, name ) { - jQuery.cssHooks[ name ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - elem.offsetWidth === 0 ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, name, extra ); - } ) : - getWidthOrHeight( elem, name, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = extra && getStyles( elem ), - subtract = extra && augmentWidthOrHeight( - elem, - name, - extra, - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - styles - ); - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ name ] = value; - value = jQuery.css( elem, name ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// Support: Android 2.3 -jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight, - function( elem, computed ) { - if ( computed ) { - return swap( elem, { "display": "inline-block" }, - curCSS, [ elem, "marginRight" ] ); - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( !rmargin.test( prefix ) ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( jQuery.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - }, - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHidden( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && - ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || - jQuery.cssHooks[ tween.prop ] ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE9 -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back Compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, timerId, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = jQuery.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4 ; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - /* jshint validthis: true */ - var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHidden( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Handle queue: false promises - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Height/width overflow pass - if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { - - // Make sure that nothing sneaks out - // Record all 3 overflow attributes because IE9-10 do not - // change the overflow attribute when overflowX and - // overflowY are set to the same value - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Set display property to inline-block for height/width - // animations on inline elements that are having width/height animated - display = jQuery.css( elem, "display" ); - - // Test default display if display is currently "none" - checkDisplay = display === "none" ? - dataPriv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display; - - if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) { - style.display = "inline-block"; - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // show/hide pass - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.exec( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // If there is dataShow left over from a stopped hide or show - // and we are going to proceed with show, we should pretend to be hidden - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - - // Any non-fx value stops us from restoring the original display value - } else { - display = undefined; - } - } - - if ( !jQuery.isEmptyObject( orig ) ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", {} ); - } - - // Store state if its toggle - enables .stop().toggle() to "reverse" - if ( toggle ) { - dataShow.hidden = !hidden; - } - if ( hidden ) { - jQuery( elem ).show(); - } else { - anim.done( function() { - jQuery( elem ).hide(); - } ); - } - anim.done( function() { - var prop; - - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - for ( prop in orig ) { - tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = tween.start; - if ( hidden ) { - tween.end = tween.start; - tween.start = prop === "width" || prop === "height" ? 1 : 0; - } - } - } - - // If this is a noop like .hide().hide(), restore an overwritten display value - } else if ( ( display === "none" ? defaultDisplay( elem.nodeName ) : display ) === "inline" ) { - style.display = display; - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = jQuery.camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( jQuery.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length ; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - if ( percent < 1 && length ) { - return remaining; - } else { - deferred.resolveWith( elem, [ animation ] ); - return false; - } - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length ; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length ; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( jQuery.isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - jQuery.proxy( result.stop, result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( jQuery.isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - // attach callbacks from options - return animation.progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); -} - -jQuery.Animation = jQuery.extend( Animation, { - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( jQuery.isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnotwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length ; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - jQuery.isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing - }; - - opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? - opt.duration : opt.duration in jQuery.fx.speeds ? - jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( jQuery.isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHidden ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = jQuery.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Checks the timer has not already been removed - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - if ( timer() ) { - jQuery.fx.start(); - } else { - jQuery.timers.pop(); - } -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( !timerId ) { - timerId = window.setInterval( jQuery.fx.tick, jQuery.fx.interval ); - } -}; - -jQuery.fx.stop = function() { - window.clearInterval( timerId ); - - timerId = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: iOS<=5.1, Android<=4.2+ - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE<=11+ - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: Android<=2.3 - // Options inside disabled selects are incorrectly marked as disabled - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Support: IE<=11+ - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // All attributes are lowercase - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - name = name.toLowerCase(); - hooks = jQuery.attrHooks[ name ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - jQuery.nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, propName, - i = 0, - attrNames = value && value.match( rnotwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - propName = jQuery.propFix[ name ] || name; - - // Boolean attributes get special treatment (#10870) - if ( jQuery.expr.match.bool.test( name ) ) { - - // Set corresponding property to false - elem[ propName ] = false; - } - - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle; - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ name ]; - attrHandle[ name ] = ret; - ret = getter( elem, name, isXML ) != null ? - name.toLowerCase() : - null; - attrHandle[ name ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - return tabindex ? - parseInt( tabindex, 10 ) : - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && elem.href ? - 0 : - -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - -var rclass = /[\t\r\n\f]/g; - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( jQuery.isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( typeof value === "string" && value ) { - classes = value.match( rnotwhite ) || []; - - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && - ( " " + curValue + " " ).replace( rclass, " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = jQuery.trim( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( jQuery.isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - if ( typeof value === "string" && value ) { - classes = value.match( rnotwhite ) || []; - - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && - ( " " + curValue + " " ).replace( rclass, " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = jQuery.trim( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value; - - if ( typeof stateVal === "boolean" && type === "string" ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( jQuery.isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( type === "string" ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = value.match( rnotwhite ) || []; - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + getClass( elem ) + " " ).replace( rclass, " " ) - .indexOf( className ) > -1 - ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g, - rspaces = /[\x20\t\r\n\f]+/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, isFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - - // Handle most common string cases - ret.replace( rreturn, "" ) : - - // Handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE10-11+ - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " ); - } - }, - select: { - get: function( elem ) { - var value, option, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? - max : - one ? index : 0; - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - ( support.optDisabled ? - !option.disabled : option.getAttribute( "disabled" ) === null ) && - ( !option.parentNode.disabled || - !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - - // Previously, `originalEvent: {}` was set here, so stopPropagation call - // would not be triggered on donor event, since in our own - // jQuery.event.stopPropagation function we had a check for existence of - // originalEvent.stopPropagation method, so, consequently it would be a noop. - // - // But now, this "simulate" function is used only for events - // for which stopPropagation() is noop, so there is no need for that anymore. - // - // For the 1.x branch though, guard for "click" and "submit" - // events is still used, but was moved to jQuery.event.stopPropagation function - // because `originalEvent` should point to the original event for the constancy - // with other events and for more focused logic - } - ); - - jQuery.event.trigger( e, null, elem ); - - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -jQuery.each( ( "blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error contextmenu" ).split( " " ), - function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; -} ); - -jQuery.fn.extend( { - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -} ); - - - - -support.focusin = "onfocusin" in window; - - -// Support: Firefox -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome, Safari -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = jQuery.now(); - -var rquery = ( /\?/ ); - - - -// Support: Android 2.3 -// Workaround failure to string-cast null input -jQuery.parseJSON = function( data ) { - return JSON.parse( data + "" ); -}; - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE9 - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rhash = /#.*$/, - rts = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || []; - - if ( jQuery.isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": jQuery.parseJSON, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // The jqXHR state - state = 0, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( state === 2 ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match == null ? null : match; - }, - - // Raw string - getAllResponseHeaders: function() { - return state === 2 ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - var lname = name.toLowerCase(); - if ( !state ) { - name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( !state ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( state < 2 ) { - for ( code in map ) { - - // Lazy-add the new callback in a way that preserves old ones - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } else { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ).complete = completeDeferred.add; - jqXHR.success = jqXHR.done; - jqXHR.error = jqXHR.fail; - - // Remove hash character (#7531: and string promotion) - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ).replace( rhash, "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE8-11+ - // IE throws exception if url is malformed, e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE8-11+ - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( state === 2 ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - cacheURL = s.url; - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // If data is available, append data to url - if ( s.data ) { - cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data ); - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add anti-cache in url if needed - if ( s.cache === false ) { - s.url = rts.test( cacheURL ) ? - - // If there is already a '_' parameter, set its value - cacheURL.replace( rts, "$1_=" + nonce++ ) : - - // Otherwise add one to the end - cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++; - } - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - for ( i in { success: 1, error: 1, complete: 1 } ) { - jqXHR[ i ]( s[ i ] ); - } - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( state === 2 ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - state = 1; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Propagate exception as error if not done - if ( state < 2 ) { - done( -1, e ); - - // Simply rethrow otherwise - } else { - throw e; - } - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Called once - if ( state === 2 ) { - return; - } - - // State is "done" now - state = 2; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( jQuery.isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - - -jQuery._evalUrl = function( url ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - async: false, - global: false, - "throws": true - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( jQuery.isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapAll( html.call( this, i ) ); - } ); - } - - if ( this[ 0 ] ) { - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function() { - return this.parent().each( function() { - if ( !jQuery.nodeName( this, "body" ) ) { - jQuery( this ).replaceWith( this.childNodes ); - } - } ).end(); - } -} ); - - -jQuery.expr.filters.hidden = function( elem ) { - return !jQuery.expr.filters.visible( elem ); -}; -jQuery.expr.filters.visible = function( elem ) { - - // Support: Opera <= 12.12 - // Opera reports offsetWidths and offsetHeights less than zero on some elements - // Use OR instead of AND as the element is not visible if either is true - // See tickets #10406 and #13132 - return elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0; -}; - - - - -var r20 = /%20/g, - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( jQuery.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && jQuery.type( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, value ) { - - // If value is a function, invoke it and return its value - value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); - s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); - }; - - // Set traditional to true for jQuery <= 1.3.2 behavior. - if ( traditional === undefined ) { - traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ).replace( r20, "+" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( i, elem ) { - var val = jQuery( this ).val(); - - return val == null ? - null : - jQuery.isArray( val ) ? - jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ) : - { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE9 - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE9 - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = callback( "error" ); - - // Support: IE9 - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain requests - if ( s.crossDomain ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( "<script>" ).prop( { - charset: s.scriptCharset, - src: s.url - } ).on( - "load error", - callback = function( evt ) { - script.remove(); - callback = null; - if ( evt ) { - complete( evt.type === "error" ? 404 : 200, evt.type ); - } - } - ); - - // Use native DOM manipulation to avoid our domManip AJAX trickery - document.head.appendChild( script[ 0 ] ); - }, - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -var oldCallbacks = [], - rjsonp = /(=)\?(?=&|$)|\?\?/; - -// Default jsonp settings -jQuery.ajaxSetup( { - jsonp: "callback", - jsonpCallback: function() { - var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); - this[ callback ] = true; - return callback; - } -} ); - -// Detect, normalize options and install callbacks for jsonp requests -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { - - var callbackName, overwritten, responseContainer, - jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? - "url" : - typeof s.data === "string" && - ( s.contentType || "" ) - .indexOf( "application/x-www-form-urlencoded" ) === 0 && - rjsonp.test( s.data ) && "data" - ); - - // Handle iff the expected data type is "jsonp" or we have a parameter to set - if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { - - // Get callback name, remembering preexisting value associated with it - callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? - s.jsonpCallback() : - s.jsonpCallback; - - // Insert callback into url or form data - if ( jsonProp ) { - s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); - } else if ( s.jsonp !== false ) { - s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; - } - - // Use data converter to retrieve json after script execution - s.converters[ "script json" ] = function() { - if ( !responseContainer ) { - jQuery.error( callbackName + " was not called" ); - } - return responseContainer[ 0 ]; - }; - - // Force json dataType - s.dataTypes[ 0 ] = "json"; - - // Install callback - overwritten = window[ callbackName ]; - window[ callbackName ] = function() { - responseContainer = arguments; - }; - - // Clean-up function (fires after converters) - jqXHR.always( function() { - - // If previous value didn't exist - remove it - if ( overwritten === undefined ) { - jQuery( window ).removeProp( callbackName ); - - // Otherwise restore preexisting value - } else { - window[ callbackName ] = overwritten; - } - - // Save back as free - if ( s[ callbackName ] ) { - - // Make sure that re-using the options doesn't screw things around - s.jsonpCallback = originalSettings.jsonpCallback; - - // Save the callback name for future use - oldCallbacks.push( callbackName ); - } - - // Call if it was a function and we have a response - if ( responseContainer && jQuery.isFunction( overwritten ) ) { - overwritten( responseContainer[ 0 ] ); - } - - responseContainer = overwritten = undefined; - } ); - - // Delegate to script - return "script"; - } -} ); - - - - -// Argument "data" should be string of html -// context (optional): If specified, the fragment will be created in this context, -// defaults to document -// keepScripts (optional): If true, will include scripts passed in the html string -jQuery.parseHTML = function( data, context, keepScripts ) { - if ( !data || typeof data !== "string" ) { - return null; - } - if ( typeof context === "boolean" ) { - keepScripts = context; - context = false; - } - context = context || document; - - var parsed = rsingleTag.exec( data ), - scripts = !keepScripts && []; - - // Single tag - if ( parsed ) { - return [ context.createElement( parsed[ 1 ] ) ]; - } - - parsed = buildFragment( [ data ], context, scripts ); - - if ( scripts && scripts.length ) { - jQuery( scripts ).remove(); - } - - return jQuery.merge( [], parsed.childNodes ); -}; - - -// Keep a copy of the old load method -var _load = jQuery.fn.load; - -/** - * Load a url into a page - */ -jQuery.fn.load = function( url, params, callback ) { - if ( typeof url !== "string" && _load ) { - return _load.apply( this, arguments ); - } - - var selector, type, response, - self = this, - off = url.indexOf( " " ); - - if ( off > -1 ) { - selector = jQuery.trim( url.slice( off ) ); - url = url.slice( 0, off ); - } - - // If it's a function - if ( jQuery.isFunction( params ) ) { - - // We assume that it's the callback - callback = params; - params = undefined; - - // Otherwise, build a param string - } else if ( params && typeof params === "object" ) { - type = "POST"; - } - - // If we have elements to modify, make the request - if ( self.length > 0 ) { - jQuery.ajax( { - url: url, - - // If "type" variable is undefined, then "GET" method will be used. - // Make value of this field explicit since - // user can override it through ajaxSetup method - type: type || "GET", - dataType: "html", - data: params - } ).done( function( responseText ) { - - // Save response for use in complete callback - response = arguments; - - self.html( selector ? - - // If a selector was specified, locate the right elements in a dummy div - // Exclude scripts to avoid IE 'Permission Denied' errors - jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : - - // Otherwise use the full result - responseText ); - - // If the request succeeds, this function gets "data", "status", "jqXHR" - // but they are ignored because response was set above. - // If it fails, this function gets "jqXHR", "status", "error" - } ).always( callback && function( jqXHR, status ) { - self.each( function() { - callback.apply( self, response || [ jqXHR.responseText, status, jqXHR ] ); - } ); - } ); - } - - return this; -}; - - - - -// Attach a bunch of functions for handling common AJAX events -jQuery.each( [ - "ajaxStart", - "ajaxStop", - "ajaxComplete", - "ajaxError", - "ajaxSuccess", - "ajaxSend" -], function( i, type ) { - jQuery.fn[ type ] = function( fn ) { - return this.on( type, fn ); - }; -} ); - - - - -jQuery.expr.filters.animated = function( elem ) { - return jQuery.grep( jQuery.timers, function( fn ) { - return elem === fn.elem; - } ).length; -}; - - - - -/** - * Gets a window from an element - */ -function getWindow( elem ) { - return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView; -} - -jQuery.offset = { - setOffset: function( elem, options, i ) { - var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, - position = jQuery.css( elem, "position" ), - curElem = jQuery( elem ), - props = {}; - - // Set position first, in-case top/left are set even on static elem - if ( position === "static" ) { - elem.style.position = "relative"; - } - - curOffset = curElem.offset(); - curCSSTop = jQuery.css( elem, "top" ); - curCSSLeft = jQuery.css( elem, "left" ); - calculatePosition = ( position === "absolute" || position === "fixed" ) && - ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1; - - // Need to be able to calculate position if either - // top or left is auto and position is either absolute or fixed - if ( calculatePosition ) { - curPosition = curElem.position(); - curTop = curPosition.top; - curLeft = curPosition.left; - - } else { - curTop = parseFloat( curCSSTop ) || 0; - curLeft = parseFloat( curCSSLeft ) || 0; - } - - if ( jQuery.isFunction( options ) ) { - - // Use jQuery.extend here to allow modification of coordinates argument (gh-1848) - options = options.call( elem, i, jQuery.extend( {}, curOffset ) ); - } - - if ( options.top != null ) { - props.top = ( options.top - curOffset.top ) + curTop; - } - if ( options.left != null ) { - props.left = ( options.left - curOffset.left ) + curLeft; - } - - if ( "using" in options ) { - options.using.call( elem, props ); - - } else { - curElem.css( props ); - } - } -}; - -jQuery.fn.extend( { - offset: function( options ) { - if ( arguments.length ) { - return options === undefined ? - this : - this.each( function( i ) { - jQuery.offset.setOffset( this, options, i ); - } ); - } - - var docElem, win, - elem = this[ 0 ], - box = { top: 0, left: 0 }, - doc = elem && elem.ownerDocument; - - if ( !doc ) { - return; - } - - docElem = doc.documentElement; - - // Make sure it's not a disconnected DOM node - if ( !jQuery.contains( docElem, elem ) ) { - return box; - } - - box = elem.getBoundingClientRect(); - win = getWindow( doc ); - return { - top: box.top + win.pageYOffset - docElem.clientTop, - left: box.left + win.pageXOffset - docElem.clientLeft - }; - }, - - position: function() { - if ( !this[ 0 ] ) { - return; - } - - var offsetParent, offset, - elem = this[ 0 ], - parentOffset = { top: 0, left: 0 }; - - // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, - // because it is its only offset parent - if ( jQuery.css( elem, "position" ) === "fixed" ) { - - // Assume getBoundingClientRect is there when computed position is fixed - offset = elem.getBoundingClientRect(); - - } else { - - // Get *real* offsetParent - offsetParent = this.offsetParent(); - - // Get correct offsets - offset = this.offset(); - if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) { - parentOffset = offsetParent.offset(); - } - - // Add offsetParent borders - parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ); - parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true ); - } - - // Subtract parent offsets and element margins - return { - top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), - left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) - }; - }, - - // This method will return documentElement in the following cases: - // 1) For the element inside the iframe without offsetParent, this method will return - // documentElement of the parent window - // 2) For the hidden or detached element - // 3) For body or html element, i.e. in case of the html node - it will return itself - // - // but those exceptions were never presented as a real life use-cases - // and might be considered as more preferable results. - // - // This logic, however, is not guaranteed and can change at any point in the future - offsetParent: function() { - return this.map( function() { - var offsetParent = this.offsetParent; - - while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) { - offsetParent = offsetParent.offsetParent; - } - - return offsetParent || documentElement; - } ); - } -} ); - -// Create scrollLeft and scrollTop methods -jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { - var top = "pageYOffset" === prop; - - jQuery.fn[ method ] = function( val ) { - return access( this, function( elem, method, val ) { - var win = getWindow( elem ); - - if ( val === undefined ) { - return win ? win[ prop ] : elem[ method ]; - } - - if ( win ) { - win.scrollTo( - !top ? val : win.pageXOffset, - top ? val : win.pageYOffset - ); - - } else { - elem[ method ] = val; - } - }, method, val, arguments.length ); - }; -} ); - -// Support: Safari<7-8+, Chrome<37-44+ -// Add the top/left cssHooks using jQuery.fn.position -// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 -// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280 -// getComputedStyle returns percent when specified for top/left/bottom/right; -// rather than make the css module depend on the offset module, just check for it here -jQuery.each( [ "top", "left" ], function( i, prop ) { - jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, - function( elem, computed ) { - if ( computed ) { - computed = curCSS( elem, prop ); - - // If curCSS returns percentage, fallback to offset - return rnumnonpx.test( computed ) ? - jQuery( elem ).position()[ prop ] + "px" : - computed; - } - } - ); -} ); - - -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, - function( defaultExtra, funcName ) { - - // Margin is only for outerHeight, outerWidth - jQuery.fn[ funcName ] = function( margin, value ) { - var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), - extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); - - return access( this, function( elem, type, value ) { - var doc; - - if ( jQuery.isWindow( elem ) ) { - - // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there - // isn't a whole lot we can do. See pull request at this URL for discussion: - // https://github.com/jquery/jquery/pull/764 - return elem.document.documentElement[ "client" + name ]; - } - - // Get document width or height - if ( elem.nodeType === 9 ) { - doc = elem.documentElement; - - // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], - // whichever is greatest - return Math.max( - elem.body[ "scroll" + name ], doc[ "scroll" + name ], - elem.body[ "offset" + name ], doc[ "offset" + name ], - doc[ "client" + name ] - ); - } - - return value === undefined ? - - // Get width or height on the element, requesting but not forcing parseFloat - jQuery.css( elem, type, extra ) : - - // Set width or height on the element - jQuery.style( elem, type, value, extra ); - }, type, chainable ? margin : undefined, chainable, null ); - }; - } ); -} ); - - -jQuery.fn.extend( { - - bind: function( types, data, fn ) { - return this.on( types, null, data, fn ); - }, - unbind: function( types, fn ) { - return this.off( types, null, fn ); - }, - - delegate: function( selector, types, data, fn ) { - return this.on( types, selector, data, fn ); - }, - undelegate: function( selector, types, fn ) { - - // ( namespace ) or ( selector, types [, fn] ) - return arguments.length === 1 ? - this.off( selector, "**" ) : - this.off( types, selector || "**", fn ); - }, - size: function() { - return this.length; - } -} ); - -jQuery.fn.andSelf = jQuery.fn.addBack; - - - - -// Register as a named AMD module, since jQuery can be concatenated with other -// files that may use define, but not via a proper concatenation script that -// understands anonymous AMD modules. A named AMD is safest and most robust -// way to register. Lowercase jquery is used because AMD module names are -// derived from file names, and jQuery is normally delivered in a lowercase -// file name. Do this after creating the global so that if an AMD module wants -// to call noConflict to hide this version of jQuery, it will work. - -// Note that for maximum portability, libraries that are not jQuery should -// declare themselves as anonymous modules, and avoid setting a global if an -// AMD loader is present. jQuery is a special case. For more information, see -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon - -if ( typeof define === "function" && define.amd ) { - define( "jquery", [], function() { - return jQuery; - } ); -} - - - -var - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$; - -jQuery.noConflict = function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; -}; - -// Expose jQuery and $ identifiers, even in AMD -// (#7102#comment:10, https://github.com/jquery/jquery/pull/557) -// and CommonJS for browser emulators (#13566) -if ( !noGlobal ) { - window.jQuery = window.$ = jQuery; -} - -return jQuery; -})); diff --git a/libraries/foundation-6/js/plugins/foundation.abide.js b/libraries/foundation-6/js/plugins/foundation.abide.js new file mode 100755 index 00000000..5cfe562b --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.abide.js @@ -0,0 +1,600 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Abide module. + * @module foundation.abide + */ + + var Abide = function () { + /** + * Creates a new instance of Abide. + * @class + * @fires Abide#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Abide(element) { + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + + _classCallCheck(this, Abide); + + this.$element = element; + this.options = $.extend({}, Abide.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Abide'); + } + + /** + * Initializes the Abide plugin and calls functions to get Abide functioning on load. + * @private + */ + + + _createClass(Abide, [{ + key: '_init', + value: function _init() { + this.$inputs = this.$element.find('input, textarea, select'); + + this._events(); + } + + /** + * Initializes events for Abide. + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this2 = this; + + this.$element.off('.abide').on('reset.zf.abide', function () { + _this2.resetForm(); + }).on('submit.zf.abide', function () { + return _this2.validateForm(); + }); + + if (this.options.validateOn === 'fieldChange') { + this.$inputs.off('change.zf.abide').on('change.zf.abide', function (e) { + _this2.validateInput($(e.target)); + }); + } + + if (this.options.liveValidate) { + this.$inputs.off('input.zf.abide').on('input.zf.abide', function (e) { + _this2.validateInput($(e.target)); + }); + } + } + + /** + * Calls necessary functions to update Abide upon DOM change + * @private + */ + + }, { + key: '_reflow', + value: function _reflow() { + this._init(); + } + + /** + * Checks whether or not a form element has the required attribute and if it's checked or not + * @param {Object} element - jQuery object to check for required attribute + * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty + */ + + }, { + key: 'requiredCheck', + value: function requiredCheck($el) { + if (!$el.attr('required')) return true; + + var isGood = true; + + switch ($el[0].type) { + case 'checkbox': + isGood = $el[0].checked; + break; + + case 'select': + case 'select-one': + case 'select-multiple': + var opt = $el.find('option:selected'); + if (!opt.length || !opt.val()) isGood = false; + break; + + default: + if (!$el.val() || !$el.val().length) isGood = false; + } + + return isGood; + } + + /** + * Based on $el, get the first element with selector in this order: + * 1. The element's direct sibling('s). + * 3. The element's parent's children. + * + * This allows for multiple form errors per input, though if none are found, no form errors will be shown. + * + * @param {Object} $el - jQuery object to use as reference to find the form error selector. + * @returns {Object} jQuery object with the selector. + */ + + }, { + key: 'findFormError', + value: function findFormError($el) { + var $error = $el.siblings(this.options.formErrorSelector); + + if (!$error.length) { + $error = $el.parent().find(this.options.formErrorSelector); + } + + return $error; + } + + /** + * Get the first element in this order: + * 2. The <label> with the attribute `[for="someInputId"]` + * 3. The `.closest()` <label> + * + * @param {Object} $el - jQuery object to check for required attribute + * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty + */ + + }, { + key: 'findLabel', + value: function findLabel($el) { + var id = $el[0].id; + var $label = this.$element.find('label[for="' + id + '"]'); + + if (!$label.length) { + return $el.closest('label'); + } + + return $label; + } + + /** + * Get the set of labels associated with a set of radio els in this order + * 2. The <label> with the attribute `[for="someInputId"]` + * 3. The `.closest()` <label> + * + * @param {Object} $el - jQuery object to check for required attribute + * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty + */ + + }, { + key: 'findRadioLabels', + value: function findRadioLabels($els) { + var _this3 = this; + + var labels = $els.map(function (i, el) { + var id = el.id; + var $label = _this3.$element.find('label[for="' + id + '"]'); + + if (!$label.length) { + $label = $(el).closest('label'); + } + return $label[0]; + }); + + return $(labels); + } + + /** + * Adds the CSS error class as specified by the Abide settings to the label, input, and the form + * @param {Object} $el - jQuery object to add the class to + */ + + }, { + key: 'addErrorClasses', + value: function addErrorClasses($el) { + var $label = this.findLabel($el); + var $formError = this.findFormError($el); + + if ($label.length) { + $label.addClass(this.options.labelErrorClass); + } + + if ($formError.length) { + $formError.addClass(this.options.formErrorClass); + } + + $el.addClass(this.options.inputErrorClass).attr('data-invalid', ''); + } + + /** + * Remove CSS error classes etc from an entire radio button group + * @param {String} groupName - A string that specifies the name of a radio button group + * + */ + + }, { + key: 'removeRadioErrorClasses', + value: function removeRadioErrorClasses(groupName) { + var $els = this.$element.find(':radio[name="' + groupName + '"]'); + var $labels = this.findRadioLabels($els); + var $formErrors = this.findFormError($els); + + if ($labels.length) { + $labels.removeClass(this.options.labelErrorClass); + } + + if ($formErrors.length) { + $formErrors.removeClass(this.options.formErrorClass); + } + + $els.removeClass(this.options.inputErrorClass).removeAttr('data-invalid'); + } + + /** + * Removes CSS error class as specified by the Abide settings from the label, input, and the form + * @param {Object} $el - jQuery object to remove the class from + */ + + }, { + key: 'removeErrorClasses', + value: function removeErrorClasses($el) { + // radios need to clear all of the els + if ($el[0].type == 'radio') { + return this.removeRadioErrorClasses($el.attr('name')); + } + + var $label = this.findLabel($el); + var $formError = this.findFormError($el); + + if ($label.length) { + $label.removeClass(this.options.labelErrorClass); + } + + if ($formError.length) { + $formError.removeClass(this.options.formErrorClass); + } + + $el.removeClass(this.options.inputErrorClass).removeAttr('data-invalid'); + } + + /** + * Goes through a form to find inputs and proceeds to validate them in ways specific to their type + * @fires Abide#invalid + * @fires Abide#valid + * @param {Object} element - jQuery object to validate, should be an HTML input + * @returns {Boolean} goodToGo - If the input is valid or not. + */ + + }, { + key: 'validateInput', + value: function validateInput($el) { + var clearRequire = this.requiredCheck($el), + validated = false, + customValidator = true, + validator = $el.attr('data-validator'), + equalTo = true; + + // don't validate ignored inputs or hidden inputs + if ($el.is('[data-abide-ignore]') || $el.is('[type="hidden"]')) { + return true; + } + + switch ($el[0].type) { + case 'radio': + validated = this.validateRadio($el.attr('name')); + break; + + case 'checkbox': + validated = clearRequire; + break; + + case 'select': + case 'select-one': + case 'select-multiple': + validated = clearRequire; + break; + + default: + validated = this.validateText($el); + } + + if (validator) { + customValidator = this.matchValidation($el, validator, $el.attr('required')); + } + + if ($el.attr('data-equalto')) { + equalTo = this.options.validators.equalTo($el); + } + + var goodToGo = [clearRequire, validated, customValidator, equalTo].indexOf(false) === -1; + var message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide'; + + this[goodToGo ? 'removeErrorClasses' : 'addErrorClasses']($el); + + /** + * Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide` + * Trigger includes the DOM element of the input. + * @event Abide#valid + * @event Abide#invalid + */ + $el.trigger(message, [$el]); + + return goodToGo; + } + + /** + * Goes through a form and if there are any invalid inputs, it will display the form error element + * @returns {Boolean} noError - true if no errors were detected... + * @fires Abide#formvalid + * @fires Abide#forminvalid + */ + + }, { + key: 'validateForm', + value: function validateForm() { + var acc = []; + var _this = this; + + this.$inputs.each(function () { + acc.push(_this.validateInput($(this))); + }); + + var noError = acc.indexOf(false) === -1; + + this.$element.find('[data-abide-error]').css('display', noError ? 'none' : 'block'); + + /** + * Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`. + * Trigger includes the element of the form. + * @event Abide#formvalid + * @event Abide#forminvalid + */ + this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]); + + return noError; + } + + /** + * Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true. + * @param {Object} $el - jQuery object to validate, should be a text input HTML element + * @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns + * @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified + */ + + }, { + key: 'validateText', + value: function validateText($el, pattern) { + // A pattern can be passed to this function, or it will be infered from the input's "pattern" attribute, or it's "type" attribute + pattern = pattern || $el.attr('pattern') || $el.attr('type'); + var inputText = $el.val(); + var valid = false; + + if (inputText.length) { + // If the pattern attribute on the element is in Abide's list of patterns, then test that regexp + if (this.options.patterns.hasOwnProperty(pattern)) { + valid = this.options.patterns[pattern].test(inputText); + } + // If the pattern name isn't also the type attribute of the field, then test it as a regexp + else if (pattern !== $el.attr('type')) { + valid = new RegExp(pattern).test(inputText); + } else { + valid = true; + } + } + // An empty field is valid if it's not required + else if (!$el.prop('required')) { + valid = true; + } + + return valid; + } + + /** + * Determines whether or a not a radio input is valid based on whether or not it is required and selected. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all radio buttons in its group. + * @param {String} groupName - A string that specifies the name of a radio button group + * @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required) + */ + + }, { + key: 'validateRadio', + value: function validateRadio(groupName) { + // If at least one radio in the group has the `required` attribute, the group is considered required + // Per W3C spec, all radio buttons in a group should have `required`, but we're being nice + var $group = this.$element.find(':radio[name="' + groupName + '"]'); + var valid = false, + required = false; + + // For the group to be required, at least one radio needs to be required + $group.each(function (i, e) { + if ($(e).attr('required')) { + required = true; + } + }); + if (!required) valid = true; + + if (!valid) { + // For the group to be valid, at least one radio needs to be checked + $group.each(function (i, e) { + if ($(e).prop('checked')) { + valid = true; + } + }); + }; + + return valid; + } + + /** + * Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator="foo bar baz"` in a space separated listed. + * @param {Object} $el - jQuery input element. + * @param {String} validators - a string of function names matching functions in the Abide.options.validators object. + * @param {Boolean} required - self explanatory? + * @returns {Boolean} - true if validations passed. + */ + + }, { + key: 'matchValidation', + value: function matchValidation($el, validators, required) { + var _this4 = this; + + required = required ? true : false; + + var clear = validators.split(' ').map(function (v) { + return _this4.options.validators[v]($el, required, $el.parent()); + }); + return clear.indexOf(false) === -1; + } + + /** + * Resets form inputs and styles + * @fires Abide#formreset + */ + + }, { + key: 'resetForm', + value: function resetForm() { + var $form = this.$element, + opts = this.options; + + $('.' + opts.labelErrorClass, $form).not('small').removeClass(opts.labelErrorClass); + $('.' + opts.inputErrorClass, $form).not('small').removeClass(opts.inputErrorClass); + $(opts.formErrorSelector + '.' + opts.formErrorClass).removeClass(opts.formErrorClass); + $form.find('[data-abide-error]').css('display', 'none'); + $(':input', $form).not(':button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]').val('').removeAttr('data-invalid'); + $(':input:radio', $form).not('[data-abide-ignore]').prop('checked', false).removeAttr('data-invalid'); + $(':input:checkbox', $form).not('[data-abide-ignore]').prop('checked', false).removeAttr('data-invalid'); + /** + * Fires when the form has been reset. + * @event Abide#formreset + */ + $form.trigger('formreset.zf.abide', [$form]); + } + + /** + * Destroys an instance of Abide. + * Removes error styles and classes from elements, without resetting their values. + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this = this; + this.$element.off('.abide').find('[data-abide-error]').css('display', 'none'); + + this.$inputs.off('.abide').each(function () { + _this.removeErrorClasses($(this)); + }); + + Foundation.unregisterPlugin(this); + } + }]); + + return Abide; + }(); + + /** + * Default settings for plugin + */ + + + Abide.defaults = { + /** + * The default event to validate inputs. Checkboxes and radios validate immediately. + * Remove or change this value for manual validation. + * @option + * @example 'fieldChange' + */ + validateOn: 'fieldChange', + + /** + * Class to be applied to input labels on failed validation. + * @option + * @example 'is-invalid-label' + */ + labelErrorClass: 'is-invalid-label', + + /** + * Class to be applied to inputs on failed validation. + * @option + * @example 'is-invalid-input' + */ + inputErrorClass: 'is-invalid-input', + + /** + * Class selector to use to target Form Errors for show/hide. + * @option + * @example '.form-error' + */ + formErrorSelector: '.form-error', + + /** + * Class added to Form Errors on failed validation. + * @option + * @example 'is-visible' + */ + formErrorClass: 'is-visible', + + /** + * Set to true to validate text inputs on any value change. + * @option + * @example false + */ + liveValidate: false, + + patterns: { + alpha: /^[a-zA-Z]+$/, + alpha_numeric: /^[a-zA-Z0-9]+$/, + integer: /^[-+]?\d+$/, + number: /^[-+]?\d*(?:[\.\,]\d+)?$/, + + // amex, visa, diners + card: /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/, + cvv: /^([0-9]){3,4}$/, + + // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address + email: /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/, + + url: /^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, + // abc.de + domain: /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/, + + datetime: /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/, + // YYYY-MM-DD + date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/, + // HH:MM:SS + time: /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/, + dateISO: /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/, + // MM/DD/YYYY + month_day_year: /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/, + // DD/MM/YYYY + day_month_year: /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/, + + // #FFF or #FFFFFF + color: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/ + }, + + /** + * Optional validation functions to be used. `equalTo` being the only default included function. + * Functions should return only a boolean if the input is valid or not. Functions are given the following arguments: + * el : The jQuery element to validate. + * required : Boolean value of the required attribute be present or not. + * parent : The direct parent of the input. + * @option + */ + validators: { + equalTo: function (el, required, parent) { + return $('#' + el.attr('data-equalto')).val() === el.val(); + } + } + }; + + // Window exports + Foundation.plugin(Abide, 'Abide'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.accordion.js b/libraries/foundation-6/js/plugins/foundation.accordion.js new file mode 100755 index 00000000..ce0f9b3a --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.accordion.js @@ -0,0 +1,262 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Accordion module. + * @module foundation.accordion + * @requires foundation.util.keyboard + * @requires foundation.util.motion + */ + + var Accordion = function () { + /** + * Creates a new instance of an accordion. + * @class + * @fires Accordion#init + * @param {jQuery} element - jQuery object to make into an accordion. + * @param {Object} options - a plain object with settings to override the default options. + */ + + function Accordion(element, options) { + _classCallCheck(this, Accordion); + + this.$element = element; + this.options = $.extend({}, Accordion.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Accordion'); + Foundation.Keyboard.register('Accordion', { + 'ENTER': 'toggle', + 'SPACE': 'toggle', + 'ARROW_DOWN': 'next', + 'ARROW_UP': 'previous' + }); + } + + /** + * Initializes the accordion by animating the preset active pane(s). + * @private + */ + + + _createClass(Accordion, [{ + key: '_init', + value: function _init() { + this.$element.attr('role', 'tablist'); + this.$tabs = this.$element.children('li, [data-accordion-item]'); + + this.$tabs.each(function (idx, el) { + var $el = $(el), + $content = $el.children('[data-tab-content]'), + id = $content[0].id || Foundation.GetYoDigits(6, 'accordion'), + linkId = el.id || id + '-label'; + + $el.find('a:first').attr({ + 'aria-controls': id, + 'role': 'tab', + 'id': linkId, + 'aria-expanded': false, + 'aria-selected': false + }); + + $content.attr({ 'role': 'tabpanel', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id }); + }); + var $initActive = this.$element.find('.is-active').children('[data-tab-content]'); + if ($initActive.length) { + this.down($initActive, true); + } + this._events(); + } + + /** + * Adds event handlers for items within the accordion. + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + + this.$tabs.each(function () { + var $elem = $(this); + var $tabContent = $elem.children('[data-tab-content]'); + if ($tabContent.length) { + $elem.children('a').off('click.zf.accordion keydown.zf.accordion').on('click.zf.accordion', function (e) { + // $(this).children('a').on('click.zf.accordion', function(e) { + e.preventDefault(); + if ($elem.hasClass('is-active')) { + if (_this.options.allowAllClosed || $elem.siblings().hasClass('is-active')) { + _this.up($tabContent); + } + } else { + _this.down($tabContent); + } + }).on('keydown.zf.accordion', function (e) { + Foundation.Keyboard.handleKey(e, 'Accordion', { + toggle: function () { + _this.toggle($tabContent); + }, + next: function () { + var $a = $elem.next().find('a').focus(); + if (!_this.options.multiExpand) { + $a.trigger('click.zf.accordion'); + } + }, + previous: function () { + var $a = $elem.prev().find('a').focus(); + if (!_this.options.multiExpand) { + $a.trigger('click.zf.accordion'); + } + }, + handled: function () { + e.preventDefault(); + e.stopPropagation(); + } + }); + }); + } + }); + } + + /** + * Toggles the selected content pane's open/close state. + * @param {jQuery} $target - jQuery object of the pane to toggle. + * @function + */ + + }, { + key: 'toggle', + value: function toggle($target) { + if ($target.parent().hasClass('is-active')) { + if (this.options.allowAllClosed || $target.parent().siblings().hasClass('is-active')) { + this.up($target); + } else { + return; + } + } else { + this.down($target); + } + } + + /** + * Opens the accordion tab defined by `$target`. + * @param {jQuery} $target - Accordion pane to open. + * @param {Boolean} firstTime - flag to determine if reflow should happen. + * @fires Accordion#down + * @function + */ + + }, { + key: 'down', + value: function down($target, firstTime) { + var _this2 = this; + + if (!this.options.multiExpand && !firstTime) { + var $currentActive = this.$element.children('.is-active').children('[data-tab-content]'); + if ($currentActive.length) { + this.up($currentActive); + } + } + + $target.attr('aria-hidden', false).parent('[data-tab-content]').addBack().parent().addClass('is-active'); + + $target.slideDown(this.options.slideSpeed, function () { + /** + * Fires when the tab is done opening. + * @event Accordion#down + */ + _this2.$element.trigger('down.zf.accordion', [$target]); + }); + + $('#' + $target.attr('aria-labelledby')).attr({ + 'aria-expanded': true, + 'aria-selected': true + }); + } + + /** + * Closes the tab defined by `$target`. + * @param {jQuery} $target - Accordion tab to close. + * @fires Accordion#up + * @function + */ + + }, { + key: 'up', + value: function up($target) { + var $aunts = $target.parent().siblings(), + _this = this; + var canClose = this.options.multiExpand ? $aunts.hasClass('is-active') : $target.parent().hasClass('is-active'); + + if (!this.options.allowAllClosed && !canClose) { + return; + } + + // Foundation.Move(this.options.slideSpeed, $target, function(){ + $target.slideUp(_this.options.slideSpeed, function () { + /** + * Fires when the tab is done collapsing up. + * @event Accordion#up + */ + _this.$element.trigger('up.zf.accordion', [$target]); + }); + // }); + + $target.attr('aria-hidden', true).parent().removeClass('is-active'); + + $('#' + $target.attr('aria-labelledby')).attr({ + 'aria-expanded': false, + 'aria-selected': false + }); + } + + /** + * Destroys an instance of an accordion. + * @fires Accordion#destroyed + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', ''); + this.$element.find('a').off('.zf.accordion'); + + Foundation.unregisterPlugin(this); + } + }]); + + return Accordion; + }(); + + Accordion.defaults = { + /** + * Amount of time to animate the opening of an accordion pane. + * @option + * @example 250 + */ + slideSpeed: 250, + /** + * Allow the accordion to have multiple open panes. + * @option + * @example false + */ + multiExpand: false, + /** + * Allow the accordion to close all panes. + * @option + * @example false + */ + allowAllClosed: false + }; + + // Window exports + Foundation.plugin(Accordion, 'Accordion'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.accordionMenu.js b/libraries/foundation-6/js/plugins/foundation.accordionMenu.js new file mode 100755 index 00000000..cbd4127e --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.accordionMenu.js @@ -0,0 +1,307 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * AccordionMenu module. + * @module foundation.accordionMenu + * @requires foundation.util.keyboard + * @requires foundation.util.motion + * @requires foundation.util.nest + */ + + var AccordionMenu = function () { + /** + * Creates a new instance of an accordion menu. + * @class + * @fires AccordionMenu#init + * @param {jQuery} element - jQuery object to make into an accordion menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function AccordionMenu(element, options) { + _classCallCheck(this, AccordionMenu); + + this.$element = element; + this.options = $.extend({}, AccordionMenu.defaults, this.$element.data(), options); + + Foundation.Nest.Feather(this.$element, 'accordion'); + + this._init(); + + Foundation.registerPlugin(this, 'AccordionMenu'); + Foundation.Keyboard.register('AccordionMenu', { + 'ENTER': 'toggle', + 'SPACE': 'toggle', + 'ARROW_RIGHT': 'open', + 'ARROW_UP': 'up', + 'ARROW_DOWN': 'down', + 'ARROW_LEFT': 'close', + 'ESCAPE': 'closeAll', + 'TAB': 'down', + 'SHIFT_TAB': 'up' + }); + } + + /** + * Initializes the accordion menu by hiding all nested menus. + * @private + */ + + + _createClass(AccordionMenu, [{ + key: '_init', + value: function _init() { + this.$element.find('[data-submenu]').not('.is-active').slideUp(0); //.find('a').css('padding-left', '1rem'); + this.$element.attr({ + 'role': 'tablist', + 'aria-multiselectable': this.options.multiOpen + }); + + this.$menuLinks = this.$element.find('.is-accordion-submenu-parent'); + this.$menuLinks.each(function () { + var linkId = this.id || Foundation.GetYoDigits(6, 'acc-menu-link'), + $elem = $(this), + $sub = $elem.children('[data-submenu]'), + subId = $sub[0].id || Foundation.GetYoDigits(6, 'acc-menu'), + isActive = $sub.hasClass('is-active'); + $elem.attr({ + 'aria-controls': subId, + 'aria-expanded': isActive, + 'role': 'tab', + 'id': linkId + }); + $sub.attr({ + 'aria-labelledby': linkId, + 'aria-hidden': !isActive, + 'role': 'tabpanel', + 'id': subId + }); + }); + var initPanes = this.$element.find('.is-active'); + if (initPanes.length) { + var _this = this; + initPanes.each(function () { + _this.down($(this)); + }); + } + this._events(); + } + + /** + * Adds event handlers for items within the menu. + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + + this.$element.find('li').each(function () { + var $submenu = $(this).children('[data-submenu]'); + + if ($submenu.length) { + $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function (e) { + e.preventDefault(); + + _this.toggle($submenu); + }); + } + }).on('keydown.zf.accordionmenu', function (e) { + var $element = $(this), + $elements = $element.parent('ul').children('li'), + $prevElement, + $nextElement, + $target = $element.children('[data-submenu]'); + + $elements.each(function (i) { + if ($(this).is($element)) { + $prevElement = $elements.eq(Math.max(0, i - 1)).find('a').first(); + $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)).find('a').first(); + + if ($(this).children('[data-submenu]:visible').length) { + // has open sub menu + $nextElement = $element.find('li:first-child').find('a').first(); + } + if ($(this).is(':first-child')) { + // is first element of sub menu + $prevElement = $element.parents('li').first().find('a').first(); + } else if ($prevElement.children('[data-submenu]:visible').length) { + // if previous element has open sub menu + $prevElement = $prevElement.find('li:last-child').find('a').first(); + } + if ($(this).is(':last-child')) { + // is last element of sub menu + $nextElement = $element.parents('li').first().next('li').find('a').first(); + } + + return; + } + }); + Foundation.Keyboard.handleKey(e, 'AccordionMenu', { + open: function () { + if ($target.is(':hidden')) { + _this.down($target); + $target.find('li').first().find('a').first().focus(); + } + }, + close: function () { + if ($target.length && !$target.is(':hidden')) { + // close active sub of this item + _this.up($target); + } else if ($element.parent('[data-submenu]').length) { + // close currently open sub + _this.up($element.parent('[data-submenu]')); + $element.parents('li').first().find('a').first().focus(); + } + }, + up: function () { + $prevElement.attr('tabindex', -1).focus(); + return true; + }, + down: function () { + $nextElement.attr('tabindex', -1).focus(); + return true; + }, + toggle: function () { + if ($element.children('[data-submenu]').length) { + _this.toggle($element.children('[data-submenu]')); + } + }, + closeAll: function () { + _this.hideAll(); + }, + handled: function (preventDefault) { + if (preventDefault) { + e.preventDefault(); + } + e.stopImmediatePropagation(); + } + }); + }); //.attr('tabindex', 0); + } + + /** + * Closes all panes of the menu. + * @function + */ + + }, { + key: 'hideAll', + value: function hideAll() { + this.$element.find('[data-submenu]').slideUp(this.options.slideSpeed); + } + + /** + * Toggles the open/close state of a submenu. + * @function + * @param {jQuery} $target - the submenu to toggle + */ + + }, { + key: 'toggle', + value: function toggle($target) { + if (!$target.is(':animated')) { + if (!$target.is(':hidden')) { + this.up($target); + } else { + this.down($target); + } + } + } + + /** + * Opens the sub-menu defined by `$target`. + * @param {jQuery} $target - Sub-menu to open. + * @fires AccordionMenu#down + */ + + }, { + key: 'down', + value: function down($target) { + var _this = this; + + if (!this.options.multiOpen) { + this.up(this.$element.find('.is-active').not($target.parentsUntil(this.$element).add($target))); + } + + $target.addClass('is-active').attr({ 'aria-hidden': false }).parent('.is-accordion-submenu-parent').attr({ 'aria-expanded': true }); + + //Foundation.Move(this.options.slideSpeed, $target, function() { + $target.slideDown(_this.options.slideSpeed, function () { + /** + * Fires when the menu is done opening. + * @event AccordionMenu#down + */ + _this.$element.trigger('down.zf.accordionMenu', [$target]); + }); + //}); + } + + /** + * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well. + * @param {jQuery} $target - Sub-menu to close. + * @fires AccordionMenu#up + */ + + }, { + key: 'up', + value: function up($target) { + var _this = this; + //Foundation.Move(this.options.slideSpeed, $target, function(){ + $target.slideUp(_this.options.slideSpeed, function () { + /** + * Fires when the menu is done collapsing up. + * @event AccordionMenu#up + */ + _this.$element.trigger('up.zf.accordionMenu', [$target]); + }); + //}); + + var $menus = $target.find('[data-submenu]').slideUp(0).addBack().attr('aria-hidden', true); + + $menus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false); + } + + /** + * Destroys an instance of accordion menu. + * @fires AccordionMenu#destroyed + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.find('[data-submenu]').slideDown(0).css('display', ''); + this.$element.find('a').off('click.zf.accordionMenu'); + + Foundation.Nest.Burn(this.$element, 'accordion'); + Foundation.unregisterPlugin(this); + } + }]); + + return AccordionMenu; + }(); + + AccordionMenu.defaults = { + /** + * Amount of time to animate the opening of a submenu in ms. + * @option + * @example 250 + */ + slideSpeed: 250, + /** + * Allow the menu to have multiple open panes. + * @option + * @example true + */ + multiOpen: true + }; + + // Window exports + Foundation.plugin(AccordionMenu, 'AccordionMenu'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.core.js b/libraries/foundation-6/js/plugins/foundation.core.js new file mode 100755 index 00000000..002c7a0e --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.core.js @@ -0,0 +1,386 @@ +!function ($) { + + "use strict"; + + var FOUNDATION_VERSION = '6.2.2'; + + // Global Foundation object + // This is attached to the window, or used as a module for AMD/Browserify + var Foundation = { + version: FOUNDATION_VERSION, + + /** + * Stores initialized plugins. + */ + _plugins: {}, + + /** + * Stores generated unique ids for plugin instances + */ + _uuids: [], + + /** + * Returns a boolean for RTL support + */ + rtl: function () { + return $('html').attr('dir') === 'rtl'; + }, + /** + * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing. + * @param {Object} plugin - The constructor of the plugin. + */ + plugin: function (plugin, name) { + // Object key to use when adding to global Foundation object + // Examples: Foundation.Reveal, Foundation.OffCanvas + var className = name || functionName(plugin); + // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin + // Examples: data-reveal, data-off-canvas + var attrName = hyphenate(className); + + // Add to the Foundation object and the plugins list (for reflowing) + this._plugins[attrName] = this[className] = plugin; + }, + /** + * @function + * Populates the _uuids array with pointers to each individual plugin instance. + * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls. + * Also fires the initialization event for each plugin, consolidating repetitive code. + * @param {Object} plugin - an instance of a plugin, usually `this` in context. + * @param {String} name - the name of the plugin, passed as a camelCased string. + * @fires Plugin#init + */ + registerPlugin: function (plugin, name) { + var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase(); + plugin.uuid = this.GetYoDigits(6, pluginName); + + if (!plugin.$element.attr('data-' + pluginName)) { + plugin.$element.attr('data-' + pluginName, plugin.uuid); + } + if (!plugin.$element.data('zfPlugin')) { + plugin.$element.data('zfPlugin', plugin); + } + /** + * Fires when the plugin has initialized. + * @event Plugin#init + */ + plugin.$element.trigger('init.zf.' + pluginName); + + this._uuids.push(plugin.uuid); + + return; + }, + /** + * @function + * Removes the plugins uuid from the _uuids array. + * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute. + * Also fires the destroyed event for the plugin, consolidating repetitive code. + * @param {Object} plugin - an instance of a plugin, usually `this` in context. + * @fires Plugin#destroyed + */ + unregisterPlugin: function (plugin) { + var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor)); + + this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1); + plugin.$element.removeAttr('data-' + pluginName).removeData('zfPlugin') + /** + * Fires when the plugin has been destroyed. + * @event Plugin#destroyed + */ + .trigger('destroyed.zf.' + pluginName); + for (var prop in plugin) { + plugin[prop] = null; //clean up script to prep for garbage collection. + } + return; + }, + + /** + * @function + * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc. + * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'` + * @default If no argument is passed, reflow all currently active plugins. + */ + reInit: function (plugins) { + var isJQ = plugins instanceof $; + try { + if (isJQ) { + plugins.each(function () { + $(this).data('zfPlugin')._init(); + }); + } else { + var type = typeof plugins, + _this = this, + fns = { + 'object': function (plgs) { + plgs.forEach(function (p) { + p = hyphenate(p); + $('[data-' + p + ']').foundation('_init'); + }); + }, + 'string': function () { + plugins = hyphenate(plugins); + $('[data-' + plugins + ']').foundation('_init'); + }, + 'undefined': function () { + this['object'](Object.keys(_this._plugins)); + } + }; + fns[type](plugins); + } + } catch (err) { + console.error(err); + } finally { + return plugins; + } + }, + + /** + * returns a random base-36 uid with namespacing + * @function + * @param {Number} length - number of random base-36 digits desired. Increase for more random strings. + * @param {String} namespace - name of plugin to be incorporated in uid, optional. + * @default {String} '' - if no plugin name is provided, nothing is appended to the uid. + * @returns {String} - unique id + */ + GetYoDigits: function (length, namespace) { + length = length || 6; + return Math.round(Math.pow(36, length + 1) - Math.random() * Math.pow(36, length)).toString(36).slice(1) + (namespace ? '-' + namespace : ''); + }, + /** + * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized. + * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object. + * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything. + */ + reflow: function (elem, plugins) { + + // If plugins is undefined, just grab everything + if (typeof plugins === 'undefined') { + plugins = Object.keys(this._plugins); + } + // If plugins is a string, convert it to an array with one item + else if (typeof plugins === 'string') { + plugins = [plugins]; + } + + var _this = this; + + // Iterate through each plugin + $.each(plugins, function (i, name) { + // Get the current plugin + var plugin = _this._plugins[name]; + + // Localize the search to all elements inside elem, as well as elem itself, unless elem === document + var $elem = $(elem).find('[data-' + name + ']').addBack('[data-' + name + ']'); + + // For each plugin found, initialize it + $elem.each(function () { + var $el = $(this), + opts = {}; + // Don't double-dip on plugins + if ($el.data('zfPlugin')) { + console.warn("Tried to initialize " + name + " on an element that already has a Foundation plugin."); + return; + } + + if ($el.attr('data-options')) { + var thing = $el.attr('data-options').split(';').forEach(function (e, i) { + var opt = e.split(':').map(function (el) { + return el.trim(); + }); + if (opt[0]) opts[opt[0]] = parseValue(opt[1]); + }); + } + try { + $el.data('zfPlugin', new plugin($(this), opts)); + } catch (er) { + console.error(er); + } finally { + return; + } + }); + }); + }, + getFnName: functionName, + transitionend: function ($elem) { + var transitions = { + 'transition': 'transitionend', + 'WebkitTransition': 'webkitTransitionEnd', + 'MozTransition': 'transitionend', + 'OTransition': 'otransitionend' + }; + var elem = document.createElement('div'), + end; + + for (var t in transitions) { + if (typeof elem.style[t] !== 'undefined') { + end = transitions[t]; + } + } + if (end) { + return end; + } else { + end = setTimeout(function () { + $elem.triggerHandler('transitionend', [$elem]); + }, 1); + return 'transitionend'; + } + } + }; + + Foundation.util = { + /** + * Function for applying a debounce effect to a function call. + * @function + * @param {Function} func - Function to be called at end of timeout. + * @param {Number} delay - Time in ms to delay the call of `func`. + * @returns function + */ + throttle: function (func, delay) { + var timer = null; + + return function () { + var context = this, + args = arguments; + + if (timer === null) { + timer = setTimeout(function () { + func.apply(context, args); + timer = null; + }, delay); + } + }; + } + }; + + // TODO: consider not making this a jQuery function + // TODO: need way to reflow vs. re-initialize + /** + * The Foundation jQuery method. + * @param {String|Array} method - An action to perform on the current jQuery object. + */ + var foundation = function (method) { + var type = typeof method, + $meta = $('meta.foundation-mq'), + $noJS = $('.no-js'); + + if (!$meta.length) { + $('<meta class="foundation-mq">').appendTo(document.head); + } + if ($noJS.length) { + $noJS.removeClass('no-js'); + } + + if (type === 'undefined') { + //needs to initialize the Foundation object, or an individual plugin. + Foundation.MediaQuery._init(); + Foundation.reflow(this); + } else if (type === 'string') { + //an individual method to invoke on a plugin or group of plugins + var args = Array.prototype.slice.call(arguments, 1); //collect all the arguments, if necessary + var plugClass = this.data('zfPlugin'); //determine the class of plugin + + if (plugClass !== undefined && plugClass[method] !== undefined) { + //make sure both the class and method exist + if (this.length === 1) { + //if there's only one, call it directly. + plugClass[method].apply(plugClass, args); + } else { + this.each(function (i, el) { + //otherwise loop through the jQuery collection and invoke the method on each + plugClass[method].apply($(el).data('zfPlugin'), args); + }); + } + } else { + //error for no class or no method + throw new ReferenceError("We're sorry, '" + method + "' is not an available method for " + (plugClass ? functionName(plugClass) : 'this element') + '.'); + } + } else { + //error for invalid argument type + throw new TypeError('We\'re sorry, ' + type + ' is not a valid parameter. You must use a string representing the method you wish to invoke.'); + } + return this; + }; + + window.Foundation = Foundation; + $.fn.foundation = foundation; + + // Polyfill for requestAnimationFrame + (function () { + if (!Date.now || !window.Date.now) window.Date.now = Date.now = function () { + return new Date().getTime(); + }; + + var vendors = ['webkit', 'moz']; + for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) { + var vp = vendors[i]; + window.requestAnimationFrame = window[vp + 'RequestAnimationFrame']; + window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame']; + } + if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) { + var lastTime = 0; + window.requestAnimationFrame = function (callback) { + var now = Date.now(); + var nextTime = Math.max(lastTime + 16, now); + return setTimeout(function () { + callback(lastTime = nextTime); + }, nextTime - now); + }; + window.cancelAnimationFrame = clearTimeout; + } + /** + * Polyfill for performance.now, required by rAF + */ + if (!window.performance || !window.performance.now) { + window.performance = { + start: Date.now(), + now: function () { + return Date.now() - this.start; + } + }; + } + })(); + if (!Function.prototype.bind) { + Function.prototype.bind = function (oThis) { + if (typeof this !== 'function') { + // closest thing possible to the ECMAScript 5 + // internal IsCallable function + throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); + } + + var aArgs = Array.prototype.slice.call(arguments, 1), + fToBind = this, + fNOP = function () {}, + fBound = function () { + return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))); + }; + + if (this.prototype) { + // native functions don't have a prototype + fNOP.prototype = this.prototype; + } + fBound.prototype = new fNOP(); + + return fBound; + }; + } + // Polyfill to get the name of a function in IE9 + function functionName(fn) { + if (Function.prototype.name === undefined) { + var funcNameRegex = /function\s([^(]{1,})\(/; + var results = funcNameRegex.exec(fn.toString()); + return results && results.length > 1 ? results[1].trim() : ""; + } else if (fn.prototype === undefined) { + return fn.constructor.name; + } else { + return fn.prototype.constructor.name; + } + } + function parseValue(str) { + if (/true/.test(str)) return true;else if (/false/.test(str)) return false;else if (!isNaN(str * 1)) return parseFloat(str); + return str; + } + // Convert PascalCase to kebab-case + // Thank you: http://stackoverflow.com/a/8955580 + function hyphenate(str) { + return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); + } +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.drilldown.js b/libraries/foundation-6/js/plugins/foundation.drilldown.js new file mode 100755 index 00000000..f16f4c8b --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.drilldown.js @@ -0,0 +1,409 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Drilldown module. + * @module foundation.drilldown + * @requires foundation.util.keyboard + * @requires foundation.util.motion + * @requires foundation.util.nest + */ + + var Drilldown = function () { + /** + * Creates a new instance of a drilldown menu. + * @class + * @param {jQuery} element - jQuery object to make into an accordion menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Drilldown(element, options) { + _classCallCheck(this, Drilldown); + + this.$element = element; + this.options = $.extend({}, Drilldown.defaults, this.$element.data(), options); + + Foundation.Nest.Feather(this.$element, 'drilldown'); + + this._init(); + + Foundation.registerPlugin(this, 'Drilldown'); + Foundation.Keyboard.register('Drilldown', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ARROW_RIGHT': 'next', + 'ARROW_UP': 'up', + 'ARROW_DOWN': 'down', + 'ARROW_LEFT': 'previous', + 'ESCAPE': 'close', + 'TAB': 'down', + 'SHIFT_TAB': 'up' + }); + } + + /** + * Initializes the drilldown by creating jQuery collections of elements + * @private + */ + + + _createClass(Drilldown, [{ + key: '_init', + value: function _init() { + this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a'); + this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]'); + this.$menuItems = this.$element.find('li').not('.js-drilldown-back').attr('role', 'menuitem').find('a'); + + this._prepareMenu(); + + this._keyboardEvents(); + } + + /** + * prepares drilldown menu by setting attributes to links and elements + * sets a min height to prevent content jumping + * wraps the element if not already wrapped + * @private + * @function + */ + + }, { + key: '_prepareMenu', + value: function _prepareMenu() { + var _this = this; + // if(!this.options.holdOpen){ + // this._menuLinkEvents(); + // } + this.$submenuAnchors.each(function () { + var $link = $(this); + var $sub = $link.parent(); + if (_this.options.parentLink) { + $link.clone().prependTo($sub.children('[data-submenu]')).wrap('<li class="is-submenu-parent-item is-submenu-item is-drilldown-submenu-item" role="menu-item"></li>'); + } + $link.data('savedHref', $link.attr('href')).removeAttr('href'); + $link.children('[data-submenu]').attr({ + 'aria-hidden': true, + 'tabindex': 0, + 'role': 'menu' + }); + _this._events($link); + }); + this.$submenus.each(function () { + var $menu = $(this), + $back = $menu.find('.js-drilldown-back'); + if (!$back.length) { + $menu.prepend(_this.options.backButton); + } + _this._back($menu); + }); + if (!this.$element.parent().hasClass('is-drilldown')) { + this.$wrapper = $(this.options.wrapper).addClass('is-drilldown'); + this.$wrapper = this.$element.wrap(this.$wrapper).parent().css(this._getMaxDims()); + } + } + + /** + * Adds event handlers to elements in the menu. + * @function + * @private + * @param {jQuery} $elem - the current menu item to add handlers to. + */ + + }, { + key: '_events', + value: function _events($elem) { + var _this = this; + + $elem.off('click.zf.drilldown').on('click.zf.drilldown', function (e) { + if ($(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')) { + e.stopImmediatePropagation(); + e.preventDefault(); + } + + // if(e.target !== e.currentTarget.firstElementChild){ + // return false; + // } + _this._show($elem.parent('li')); + + if (_this.options.closeOnClick) { + var $body = $('body'); + $body.off('.zf.drilldown').on('click.zf.drilldown', function (e) { + if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)) { + return; + } + e.preventDefault(); + _this._hideAll(); + $body.off('.zf.drilldown'); + }); + } + }); + } + + /** + * Adds keydown event listener to `li`'s in the menu. + * @private + */ + + }, { + key: '_keyboardEvents', + value: function _keyboardEvents() { + var _this = this; + + this.$menuItems.add(this.$element.find('.js-drilldown-back > a')).on('keydown.zf.drilldown', function (e) { + + var $element = $(this), + $elements = $element.parent('li').parent('ul').children('li').children('a'), + $prevElement, + $nextElement; + + $elements.each(function (i) { + if ($(this).is($element)) { + $prevElement = $elements.eq(Math.max(0, i - 1)); + $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)); + return; + } + }); + + Foundation.Keyboard.handleKey(e, 'Drilldown', { + next: function () { + if ($element.is(_this.$submenuAnchors)) { + _this._show($element.parent('li')); + $element.parent('li').one(Foundation.transitionend($element), function () { + $element.parent('li').find('ul li a').filter(_this.$menuItems).first().focus(); + }); + return true; + } + }, + previous: function () { + _this._hide($element.parent('li').parent('ul')); + $element.parent('li').parent('ul').one(Foundation.transitionend($element), function () { + setTimeout(function () { + $element.parent('li').parent('ul').parent('li').children('a').first().focus(); + }, 1); + }); + return true; + }, + up: function () { + $prevElement.focus(); + return true; + }, + down: function () { + $nextElement.focus(); + return true; + }, + close: function () { + _this._back(); + //_this.$menuItems.first().focus(); // focus to first element + }, + open: function () { + if (!$element.is(_this.$menuItems)) { + // not menu item means back button + _this._hide($element.parent('li').parent('ul')); + $element.parent('li').parent('ul').one(Foundation.transitionend($element), function () { + setTimeout(function () { + $element.parent('li').parent('ul').parent('li').children('a').first().focus(); + }, 1); + }); + } else if ($element.is(_this.$submenuAnchors)) { + _this._show($element.parent('li')); + $element.parent('li').one(Foundation.transitionend($element), function () { + $element.parent('li').find('ul li a').filter(_this.$menuItems).first().focus(); + }); + } + return true; + }, + handled: function (preventDefault) { + if (preventDefault) { + e.preventDefault(); + } + e.stopImmediatePropagation(); + } + }); + }); // end keyboardAccess + } + + /** + * Closes all open elements, and returns to root menu. + * @function + * @fires Drilldown#closed + */ + + }, { + key: '_hideAll', + value: function _hideAll() { + var $elem = this.$element.find('.is-drilldown-submenu.is-active').addClass('is-closing'); + $elem.one(Foundation.transitionend($elem), function (e) { + $elem.removeClass('is-active is-closing'); + }); + /** + * Fires when the menu is fully closed. + * @event Drilldown#closed + */ + this.$element.trigger('closed.zf.drilldown'); + } + + /** + * Adds event listener for each `back` button, and closes open menus. + * @function + * @fires Drilldown#back + * @param {jQuery} $elem - the current sub-menu to add `back` event. + */ + + }, { + key: '_back', + value: function _back($elem) { + var _this = this; + $elem.off('click.zf.drilldown'); + $elem.children('.js-drilldown-back').on('click.zf.drilldown', function (e) { + e.stopImmediatePropagation(); + // console.log('mouseup on back'); + _this._hide($elem); + }); + } + + /** + * Adds event listener to menu items w/o submenus to close open menus on click. + * @function + * @private + */ + + }, { + key: '_menuLinkEvents', + value: function _menuLinkEvents() { + var _this = this; + this.$menuItems.not('.is-drilldown-submenu-parent').off('click.zf.drilldown').on('click.zf.drilldown', function (e) { + // e.stopImmediatePropagation(); + setTimeout(function () { + _this._hideAll(); + }, 0); + }); + } + + /** + * Opens a submenu. + * @function + * @fires Drilldown#open + * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag. + */ + + }, { + key: '_show', + value: function _show($elem) { + $elem.children('[data-submenu]').addClass('is-active'); + /** + * Fires when the submenu has opened. + * @event Drilldown#open + */ + this.$element.trigger('open.zf.drilldown', [$elem]); + } + }, { + key: '_hide', + + + /** + * Hides a submenu + * @function + * @fires Drilldown#hide + * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag. + */ + value: function _hide($elem) { + var _this = this; + $elem.addClass('is-closing').one(Foundation.transitionend($elem), function () { + $elem.removeClass('is-active is-closing'); + $elem.blur(); + }); + /** + * Fires when the submenu has closed. + * @event Drilldown#hide + */ + $elem.trigger('hide.zf.drilldown', [$elem]); + } + + /** + * Iterates through the nested menus to calculate the min-height, and max-width for the menu. + * Prevents content jumping. + * @function + * @private + */ + + }, { + key: '_getMaxDims', + value: function _getMaxDims() { + var max = 0, + result = {}; + this.$submenus.add(this.$element).each(function () { + var numOfElems = $(this).children('li').length; + max = numOfElems > max ? numOfElems : max; + }); + + result['min-height'] = max * this.$menuItems[0].getBoundingClientRect().height + 'px'; + result['max-width'] = this.$element[0].getBoundingClientRect().width + 'px'; + + return result; + } + + /** + * Destroys the Drilldown Menu + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this._hideAll(); + Foundation.Nest.Burn(this.$element, 'drilldown'); + this.$element.unwrap().find('.js-drilldown-back, .is-submenu-parent-item').remove().end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').end().find('[data-submenu]').removeAttr('aria-hidden tabindex role'); + this.$submenuAnchors.each(function () { + $(this).off('.zf.drilldown'); + }); + this.$element.find('a').each(function () { + var $link = $(this); + if ($link.data('savedHref')) { + $link.attr('href', $link.data('savedHref')).removeData('savedHref'); + } else { + return; + } + }); + Foundation.unregisterPlugin(this); + } + }]); + + return Drilldown; + }(); + + Drilldown.defaults = { + /** + * Markup used for JS generated back button. Prepended to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\`) if copy and pasting. + * @option + * @example '<\li><\a>Back<\/a><\/li>' + */ + backButton: '<li class="js-drilldown-back"><a tabindex="0">Back</a></li>', + /** + * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\`) if copy and pasting. + * @option + * @example '<\div class="is-drilldown"><\/div>' + */ + wrapper: '<div></div>', + /** + * Adds the parent link to the submenu. + * @option + * @example false + */ + parentLink: false, + /** + * Allow the menu to return to root list on body click. + * @option + * @example false + */ + closeOnClick: false + // holdOpen: false + }; + + // Window exports + Foundation.plugin(Drilldown, 'Drilldown'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.dropdown.js b/libraries/foundation-6/js/plugins/foundation.dropdown.js new file mode 100755 index 00000000..c6cc98c8 --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.dropdown.js @@ -0,0 +1,447 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Dropdown module. + * @module foundation.dropdown + * @requires foundation.util.keyboard + * @requires foundation.util.box + * @requires foundation.util.triggers + */ + + var Dropdown = function () { + /** + * Creates a new instance of a dropdown. + * @class + * @param {jQuery} element - jQuery object to make into a dropdown. + * Object should be of the dropdown panel, rather than its anchor. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Dropdown(element, options) { + _classCallCheck(this, Dropdown); + + this.$element = element; + this.options = $.extend({}, Dropdown.defaults, this.$element.data(), options); + this._init(); + + Foundation.registerPlugin(this, 'Dropdown'); + Foundation.Keyboard.register('Dropdown', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ESCAPE': 'close', + 'TAB': 'tab_forward', + 'SHIFT_TAB': 'tab_backward' + }); + } + + /** + * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor. + * @function + * @private + */ + + + _createClass(Dropdown, [{ + key: '_init', + value: function _init() { + var $id = this.$element.attr('id'); + + this.$anchor = $('[data-toggle="' + $id + '"]') || $('[data-open="' + $id + '"]'); + this.$anchor.attr({ + 'aria-controls': $id, + 'data-is-focus': false, + 'data-yeti-box': $id, + 'aria-haspopup': true, + 'aria-expanded': false + + }); + + this.options.positionClass = this.getPositionClass(); + this.counter = 4; + this.usedPositions = []; + this.$element.attr({ + 'aria-hidden': 'true', + 'data-yeti-box': $id, + 'data-resize': $id, + 'aria-labelledby': this.$anchor[0].id || Foundation.GetYoDigits(6, 'dd-anchor') + }); + this._events(); + } + + /** + * Helper function to determine current orientation of dropdown pane. + * @function + * @returns {String} position - string value of a position class. + */ + + }, { + key: 'getPositionClass', + value: function getPositionClass() { + var verticalPosition = this.$element[0].className.match(/(top|left|right|bottom)/g); + verticalPosition = verticalPosition ? verticalPosition[0] : ''; + var horizontalPosition = /float-(\S+)\s/.exec(this.$anchor[0].className); + horizontalPosition = horizontalPosition ? horizontalPosition[1] : ''; + var position = horizontalPosition ? horizontalPosition + ' ' + verticalPosition : verticalPosition; + return position; + } + + /** + * Adjusts the dropdown panes orientation by adding/removing positioning classes. + * @function + * @private + * @param {String} position - position class to remove. + */ + + }, { + key: '_reposition', + value: function _reposition(position) { + this.usedPositions.push(position ? position : 'bottom'); + //default, try switching to opposite side + if (!position && this.usedPositions.indexOf('top') < 0) { + this.$element.addClass('top'); + } else if (position === 'top' && this.usedPositions.indexOf('bottom') < 0) { + this.$element.removeClass(position); + } else if (position === 'left' && this.usedPositions.indexOf('right') < 0) { + this.$element.removeClass(position).addClass('right'); + } else if (position === 'right' && this.usedPositions.indexOf('left') < 0) { + this.$element.removeClass(position).addClass('left'); + } + + //if default change didn't work, try bottom or left first + else if (!position && this.usedPositions.indexOf('top') > -1 && this.usedPositions.indexOf('left') < 0) { + this.$element.addClass('left'); + } else if (position === 'top' && this.usedPositions.indexOf('bottom') > -1 && this.usedPositions.indexOf('left') < 0) { + this.$element.removeClass(position).addClass('left'); + } else if (position === 'left' && this.usedPositions.indexOf('right') > -1 && this.usedPositions.indexOf('bottom') < 0) { + this.$element.removeClass(position); + } else if (position === 'right' && this.usedPositions.indexOf('left') > -1 && this.usedPositions.indexOf('bottom') < 0) { + this.$element.removeClass(position); + } + //if nothing cleared, set to bottom + else { + this.$element.removeClass(position); + } + this.classChanged = true; + this.counter--; + } + + /** + * Sets the position and orientation of the dropdown pane, checks for collisions. + * Recursively calls itself if a collision is detected, with a new position class. + * @function + * @private + */ + + }, { + key: '_setPosition', + value: function _setPosition() { + if (this.$anchor.attr('aria-expanded') === 'false') { + return false; + } + var position = this.getPositionClass(), + $eleDims = Foundation.Box.GetDimensions(this.$element), + $anchorDims = Foundation.Box.GetDimensions(this.$anchor), + _this = this, + direction = position === 'left' ? 'left' : position === 'right' ? 'left' : 'top', + param = direction === 'top' ? 'height' : 'width', + offset = param === 'height' ? this.options.vOffset : this.options.hOffset; + + if ($eleDims.width >= $eleDims.windowDims.width || !this.counter && !Foundation.Box.ImNotTouchingYou(this.$element)) { + this.$element.offset(Foundation.Box.GetOffsets(this.$element, this.$anchor, 'center bottom', this.options.vOffset, this.options.hOffset, true)).css({ + 'width': $eleDims.windowDims.width - this.options.hOffset * 2, + 'height': 'auto' + }); + this.classChanged = true; + return false; + } + + this.$element.offset(Foundation.Box.GetOffsets(this.$element, this.$anchor, position, this.options.vOffset, this.options.hOffset)); + + while (!Foundation.Box.ImNotTouchingYou(this.$element, false, true) && this.counter) { + this._reposition(position); + this._setPosition(); + } + } + + /** + * Adds event listeners to the element utilizing the triggers utility library. + * @function + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + this.$element.on({ + 'open.zf.trigger': this.open.bind(this), + 'close.zf.trigger': this.close.bind(this), + 'toggle.zf.trigger': this.toggle.bind(this), + 'resizeme.zf.trigger': this._setPosition.bind(this) + }); + + if (this.options.hover) { + this.$anchor.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function () { + clearTimeout(_this.timeout); + _this.timeout = setTimeout(function () { + _this.open(); + _this.$anchor.data('hover', true); + }, _this.options.hoverDelay); + }).on('mouseleave.zf.dropdown', function () { + clearTimeout(_this.timeout); + _this.timeout = setTimeout(function () { + _this.close(); + _this.$anchor.data('hover', false); + }, _this.options.hoverDelay); + }); + if (this.options.hoverPane) { + this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function () { + clearTimeout(_this.timeout); + }).on('mouseleave.zf.dropdown', function () { + clearTimeout(_this.timeout); + _this.timeout = setTimeout(function () { + _this.close(); + _this.$anchor.data('hover', false); + }, _this.options.hoverDelay); + }); + } + } + this.$anchor.add(this.$element).on('keydown.zf.dropdown', function (e) { + + var $target = $(this), + visibleFocusableElements = Foundation.Keyboard.findFocusable(_this.$element); + + Foundation.Keyboard.handleKey(e, 'Dropdown', { + tab_forward: function () { + if (_this.$element.find(':focus').is(visibleFocusableElements.eq(-1))) { + // left modal downwards, setting focus to first element + if (_this.options.trapFocus) { + // if focus shall be trapped + visibleFocusableElements.eq(0).focus(); + e.preventDefault(); + } else { + // if focus is not trapped, close dropdown on focus out + _this.close(); + } + } + }, + tab_backward: function () { + if (_this.$element.find(':focus').is(visibleFocusableElements.eq(0)) || _this.$element.is(':focus')) { + // left modal upwards, setting focus to last element + if (_this.options.trapFocus) { + // if focus shall be trapped + visibleFocusableElements.eq(-1).focus(); + e.preventDefault(); + } else { + // if focus is not trapped, close dropdown on focus out + _this.close(); + } + } + }, + open: function () { + if ($target.is(_this.$anchor)) { + _this.open(); + _this.$element.attr('tabindex', -1).focus(); + e.preventDefault(); + } + }, + close: function () { + _this.close(); + _this.$anchor.focus(); + } + }); + }); + } + + /** + * Adds an event handler to the body to close any dropdowns on a click. + * @function + * @private + */ + + }, { + key: '_addBodyHandler', + value: function _addBodyHandler() { + var $body = $(document.body).not(this.$element), + _this = this; + $body.off('click.zf.dropdown').on('click.zf.dropdown', function (e) { + if (_this.$anchor.is(e.target) || _this.$anchor.find(e.target).length) { + return; + } + if (_this.$element.find(e.target).length) { + return; + } + _this.close(); + $body.off('click.zf.dropdown'); + }); + } + + /** + * Opens the dropdown pane, and fires a bubbling event to close other dropdowns. + * @function + * @fires Dropdown#closeme + * @fires Dropdown#show + */ + + }, { + key: 'open', + value: function open() { + // var _this = this; + /** + * Fires to close other open dropdowns + * @event Dropdown#closeme + */ + this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id')); + this.$anchor.addClass('hover').attr({ 'aria-expanded': true }); + // this.$element/*.show()*/; + this._setPosition(); + this.$element.addClass('is-open').attr({ 'aria-hidden': false }); + + if (this.options.autoFocus) { + var $focusable = Foundation.Keyboard.findFocusable(this.$element); + if ($focusable.length) { + $focusable.eq(0).focus(); + } + } + + if (this.options.closeOnClick) { + this._addBodyHandler(); + } + + /** + * Fires once the dropdown is visible. + * @event Dropdown#show + */ + this.$element.trigger('show.zf.dropdown', [this.$element]); + } + + /** + * Closes the open dropdown pane. + * @function + * @fires Dropdown#hide + */ + + }, { + key: 'close', + value: function close() { + if (!this.$element.hasClass('is-open')) { + return false; + } + this.$element.removeClass('is-open').attr({ 'aria-hidden': true }); + + this.$anchor.removeClass('hover').attr('aria-expanded', false); + + if (this.classChanged) { + var curPositionClass = this.getPositionClass(); + if (curPositionClass) { + this.$element.removeClass(curPositionClass); + } + this.$element.addClass(this.options.positionClass) + /*.hide()*/.css({ height: '', width: '' }); + this.classChanged = false; + this.counter = 4; + this.usedPositions.length = 0; + } + this.$element.trigger('hide.zf.dropdown', [this.$element]); + } + + /** + * Toggles the dropdown pane's visibility. + * @function + */ + + }, { + key: 'toggle', + value: function toggle() { + if (this.$element.hasClass('is-open')) { + if (this.$anchor.data('hover')) return; + this.close(); + } else { + this.open(); + } + } + + /** + * Destroys the dropdown. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.off('.zf.trigger').hide(); + this.$anchor.off('.zf.dropdown'); + + Foundation.unregisterPlugin(this); + } + }]); + + return Dropdown; + }(); + + Dropdown.defaults = { + /** + * Amount of time to delay opening a submenu on hover event. + * @option + * @example 250 + */ + hoverDelay: 250, + /** + * Allow submenus to open on hover events + * @option + * @example false + */ + hover: false, + /** + * Don't close dropdown when hovering over dropdown pane + * @option + * @example true + */ + hoverPane: false, + /** + * Number of pixels between the dropdown pane and the triggering element on open. + * @option + * @example 1 + */ + vOffset: 1, + /** + * Number of pixels between the dropdown pane and the triggering element on open. + * @option + * @example 1 + */ + hOffset: 1, + /** + * Class applied to adjust open position. JS will test and fill this in. + * @option + * @example 'top' + */ + positionClass: '', + /** + * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands. + * @option + * @example false + */ + trapFocus: false, + /** + * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening. + * @option + * @example true + */ + autoFocus: false, + /** + * Allows a click on the body to close the dropdown. + * @option + * @example false + */ + closeOnClick: false + }; + + // Window exports + Foundation.plugin(Dropdown, 'Dropdown'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.dropdownMenu.js b/libraries/foundation-6/js/plugins/foundation.dropdownMenu.js new file mode 100755 index 00000000..5ae3a3aa --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.dropdownMenu.js @@ -0,0 +1,447 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * DropdownMenu module. + * @module foundation.dropdown-menu + * @requires foundation.util.keyboard + * @requires foundation.util.box + * @requires foundation.util.nest + */ + + var DropdownMenu = function () { + /** + * Creates a new instance of DropdownMenu. + * @class + * @fires DropdownMenu#init + * @param {jQuery} element - jQuery object to make into a dropdown menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function DropdownMenu(element, options) { + _classCallCheck(this, DropdownMenu); + + this.$element = element; + this.options = $.extend({}, DropdownMenu.defaults, this.$element.data(), options); + + Foundation.Nest.Feather(this.$element, 'dropdown'); + this._init(); + + Foundation.registerPlugin(this, 'DropdownMenu'); + Foundation.Keyboard.register('DropdownMenu', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ARROW_RIGHT': 'next', + 'ARROW_UP': 'up', + 'ARROW_DOWN': 'down', + 'ARROW_LEFT': 'previous', + 'ESCAPE': 'close' + }); + } + + /** + * Initializes the plugin, and calls _prepareMenu + * @private + * @function + */ + + + _createClass(DropdownMenu, [{ + key: '_init', + value: function _init() { + var subs = this.$element.find('li.is-dropdown-submenu-parent'); + this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub'); + + this.$menuItems = this.$element.find('[role="menuitem"]'); + this.$tabs = this.$element.children('[role="menuitem"]'); + this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass); + + if (this.$element.hasClass(this.options.rightClass) || this.options.alignment === 'right' || Foundation.rtl() || this.$element.parents('.top-bar-right').is('*')) { + this.options.alignment = 'right'; + subs.addClass('opens-left'); + } else { + subs.addClass('opens-right'); + } + this.changed = false; + this._events(); + } + }, { + key: '_events', + + /** + * Adds event listeners to elements within the menu + * @private + * @function + */ + value: function _events() { + var _this = this, + hasTouch = 'ontouchstart' in window || typeof window.ontouchstart !== 'undefined', + parClass = 'is-dropdown-submenu-parent'; + + // used for onClick and in the keyboard handlers + var handleClickFn = function (e) { + var $elem = $(e.target).parentsUntil('ul', '.' + parClass), + hasSub = $elem.hasClass(parClass), + hasClicked = $elem.attr('data-is-click') === 'true', + $sub = $elem.children('.is-dropdown-submenu'); + + if (hasSub) { + if (hasClicked) { + if (!_this.options.closeOnClick || !_this.options.clickOpen && !hasTouch || _this.options.forceFollow && hasTouch) { + return; + } else { + e.stopImmediatePropagation(); + e.preventDefault(); + _this._hide($elem); + } + } else { + e.preventDefault(); + e.stopImmediatePropagation(); + _this._show($elem.children('.is-dropdown-submenu')); + $elem.add($elem.parentsUntil(_this.$element, '.' + parClass)).attr('data-is-click', true); + } + } else { + return; + } + }; + + if (this.options.clickOpen || hasTouch) { + this.$menuItems.on('click.zf.dropdownmenu touchstart.zf.dropdownmenu', handleClickFn); + } + + if (!this.options.disableHover) { + this.$menuItems.on('mouseenter.zf.dropdownmenu', function (e) { + var $elem = $(this), + hasSub = $elem.hasClass(parClass); + + if (hasSub) { + clearTimeout(_this.delay); + _this.delay = setTimeout(function () { + _this._show($elem.children('.is-dropdown-submenu')); + }, _this.options.hoverDelay); + } + }).on('mouseleave.zf.dropdownmenu', function (e) { + var $elem = $(this), + hasSub = $elem.hasClass(parClass); + if (hasSub && _this.options.autoclose) { + if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) { + return false; + } + + clearTimeout(_this.delay); + _this.delay = setTimeout(function () { + _this._hide($elem); + }, _this.options.closingTime); + } + }); + } + this.$menuItems.on('keydown.zf.dropdownmenu', function (e) { + var $element = $(e.target).parentsUntil('ul', '[role="menuitem"]'), + isTab = _this.$tabs.index($element) > -1, + $elements = isTab ? _this.$tabs : $element.siblings('li').add($element), + $prevElement, + $nextElement; + + $elements.each(function (i) { + if ($(this).is($element)) { + $prevElement = $elements.eq(i - 1); + $nextElement = $elements.eq(i + 1); + return; + } + }); + + var nextSibling = function () { + if (!$element.is(':last-child')) { + $nextElement.children('a:first').focus(); + e.preventDefault(); + } + }, + prevSibling = function () { + $prevElement.children('a:first').focus(); + e.preventDefault(); + }, + openSub = function () { + var $sub = $element.children('ul.is-dropdown-submenu'); + if ($sub.length) { + _this._show($sub); + $element.find('li > a:first').focus(); + e.preventDefault(); + } else { + return; + } + }, + closeSub = function () { + //if ($element.is(':first-child')) { + var close = $element.parent('ul').parent('li'); + close.children('a:first').focus(); + _this._hide(close); + e.preventDefault(); + //} + }; + var functions = { + open: openSub, + close: function () { + _this._hide(_this.$element); + _this.$menuItems.find('a:first').focus(); // focus to first element + e.preventDefault(); + }, + handled: function () { + e.stopImmediatePropagation(); + } + }; + + if (isTab) { + if (_this.$element.hasClass(_this.options.verticalClass)) { + // vertical menu + if (_this.options.alignment === 'left') { + // left aligned + $.extend(functions, { + down: nextSibling, + up: prevSibling, + next: openSub, + previous: closeSub + }); + } else { + // right aligned + $.extend(functions, { + down: nextSibling, + up: prevSibling, + next: closeSub, + previous: openSub + }); + } + } else { + // horizontal menu + $.extend(functions, { + next: nextSibling, + previous: prevSibling, + down: openSub, + up: closeSub + }); + } + } else { + // not tabs -> one sub + if (_this.options.alignment === 'left') { + // left aligned + $.extend(functions, { + next: openSub, + previous: closeSub, + down: nextSibling, + up: prevSibling + }); + } else { + // right aligned + $.extend(functions, { + next: closeSub, + previous: openSub, + down: nextSibling, + up: prevSibling + }); + } + } + Foundation.Keyboard.handleKey(e, 'DropdownMenu', functions); + }); + } + + /** + * Adds an event handler to the body to close any dropdowns on a click. + * @function + * @private + */ + + }, { + key: '_addBodyHandler', + value: function _addBodyHandler() { + var $body = $(document.body), + _this = this; + $body.off('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu').on('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu', function (e) { + var $link = _this.$element.find(e.target); + if ($link.length) { + return; + } + + _this._hide(); + $body.off('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu'); + }); + } + + /** + * Opens a dropdown pane, and checks for collisions first. + * @param {jQuery} $sub - ul element that is a submenu to show + * @function + * @private + * @fires DropdownMenu#show + */ + + }, { + key: '_show', + value: function _show($sub) { + var idx = this.$tabs.index(this.$tabs.filter(function (i, el) { + return $(el).find($sub).length > 0; + })); + var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent'); + this._hide($sibs, idx); + $sub.css('visibility', 'hidden').addClass('js-dropdown-active').attr({ 'aria-hidden': false }).parent('li.is-dropdown-submenu-parent').addClass('is-active').attr({ 'aria-expanded': true }); + var clear = Foundation.Box.ImNotTouchingYou($sub, null, true); + if (!clear) { + var oldClass = this.options.alignment === 'left' ? '-right' : '-left', + $parentLi = $sub.parent('.is-dropdown-submenu-parent'); + $parentLi.removeClass('opens' + oldClass).addClass('opens-' + this.options.alignment); + clear = Foundation.Box.ImNotTouchingYou($sub, null, true); + if (!clear) { + $parentLi.removeClass('opens-' + this.options.alignment).addClass('opens-inner'); + } + this.changed = true; + } + $sub.css('visibility', ''); + if (this.options.closeOnClick) { + this._addBodyHandler(); + } + /** + * Fires when the new dropdown pane is visible. + * @event DropdownMenu#show + */ + this.$element.trigger('show.zf.dropdownmenu', [$sub]); + } + + /** + * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything. + * @function + * @param {jQuery} $elem - element with a submenu to hide + * @param {Number} idx - index of the $tabs collection to hide + * @private + */ + + }, { + key: '_hide', + value: function _hide($elem, idx) { + var $toClose; + if ($elem && $elem.length) { + $toClose = $elem; + } else if (idx !== undefined) { + $toClose = this.$tabs.not(function (i, el) { + return i === idx; + }); + } else { + $toClose = this.$element; + } + var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0; + + if (somethingToClose) { + $toClose.find('li.is-active').add($toClose).attr({ + 'aria-expanded': false, + 'data-is-click': false + }).removeClass('is-active'); + + $toClose.find('ul.js-dropdown-active').attr({ + 'aria-hidden': true + }).removeClass('js-dropdown-active'); + + if (this.changed || $toClose.find('opens-inner').length) { + var oldClass = this.options.alignment === 'left' ? 'right' : 'left'; + $toClose.find('li.is-dropdown-submenu-parent').add($toClose).removeClass('opens-inner opens-' + this.options.alignment).addClass('opens-' + oldClass); + this.changed = false; + } + /** + * Fires when the open menus are closed. + * @event DropdownMenu#hide + */ + this.$element.trigger('hide.zf.dropdownmenu', [$toClose]); + } + } + + /** + * Destroys the plugin. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$menuItems.off('.zf.dropdownmenu').removeAttr('data-is-click').removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner'); + $(document.body).off('.zf.dropdownmenu'); + Foundation.Nest.Burn(this.$element, 'dropdown'); + Foundation.unregisterPlugin(this); + } + }]); + + return DropdownMenu; + }(); + + /** + * Default settings for plugin + */ + + + DropdownMenu.defaults = { + /** + * Disallows hover events from opening submenus + * @option + * @example false + */ + disableHover: false, + /** + * Allow a submenu to automatically close on a mouseleave event, if not clicked open. + * @option + * @example true + */ + autoclose: true, + /** + * Amount of time to delay opening a submenu on hover event. + * @option + * @example 50 + */ + hoverDelay: 50, + /** + * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu. + * @option + * @example true + */ + clickOpen: false, + /** + * Amount of time to delay closing a submenu on a mouseleave event. + * @option + * @example 500 + */ + + closingTime: 500, + /** + * Position of the menu relative to what direction the submenus should open. Handled by JS. + * @option + * @example 'left' + */ + alignment: 'left', + /** + * Allow clicks on the body to close any open submenus. + * @option + * @example true + */ + closeOnClick: true, + /** + * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class. + * @option + * @example 'vertical' + */ + verticalClass: 'vertical', + /** + * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class. + * @option + * @example 'align-right' + */ + rightClass: 'align-right', + /** + * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile. + * @option + * @example false + */ + forceFollow: true + }; + + // Window exports + Foundation.plugin(DropdownMenu, 'DropdownMenu'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.equalizer.js b/libraries/foundation-6/js/plugins/foundation.equalizer.js new file mode 100755 index 00000000..36782aac --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.equalizer.js @@ -0,0 +1,364 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Equalizer module. + * @module foundation.equalizer + */ + + var Equalizer = function () { + /** + * Creates a new instance of Equalizer. + * @class + * @fires Equalizer#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Equalizer(element, options) { + _classCallCheck(this, Equalizer); + + this.$element = element; + this.options = $.extend({}, Equalizer.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Equalizer'); + } + + /** + * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load. + * @private + */ + + + _createClass(Equalizer, [{ + key: '_init', + value: function _init() { + var eqId = this.$element.attr('data-equalizer') || ''; + var $watched = this.$element.find('[data-equalizer-watch="' + eqId + '"]'); + + this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]'); + this.$element.attr('data-resize', eqId || Foundation.GetYoDigits(6, 'eq')); + + this.hasNested = this.$element.find('[data-equalizer]').length > 0; + this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0; + this.isOn = false; + this._bindHandler = { + onResizeMeBound: this._onResizeMe.bind(this), + onPostEqualizedBound: this._onPostEqualized.bind(this) + }; + + var imgs = this.$element.find('img'); + var tooSmall; + if (this.options.equalizeOn) { + tooSmall = this._checkMQ(); + $(window).on('changed.zf.mediaquery', this._checkMQ.bind(this)); + } else { + this._events(); + } + if (tooSmall !== undefined && tooSmall === false || tooSmall === undefined) { + if (imgs.length) { + Foundation.onImagesLoaded(imgs, this._reflow.bind(this)); + } else { + this._reflow(); + } + } + } + + /** + * Removes event listeners if the breakpoint is too small. + * @private + */ + + }, { + key: '_pauseEvents', + value: function _pauseEvents() { + this.isOn = false; + this.$element.off({ + '.zf.equalizer': this._bindHandler.onPostEqualizedBound, + 'resizeme.zf.trigger': this._bindHandler.onResizeMeBound + }); + } + + /** + * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound + * @private + */ + + }, { + key: '_onResizeMe', + value: function _onResizeMe(e) { + this._reflow(); + } + + /** + * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound + * @private + */ + + }, { + key: '_onPostEqualized', + value: function _onPostEqualized(e) { + if (e.target !== this.$element[0]) { + this._reflow(); + } + } + + /** + * Initializes events for Equalizer. + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + this._pauseEvents(); + if (this.hasNested) { + this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound); + } else { + this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound); + } + this.isOn = true; + } + + /** + * Checks the current breakpoint to the minimum required size. + * @private + */ + + }, { + key: '_checkMQ', + value: function _checkMQ() { + var tooSmall = !Foundation.MediaQuery.atLeast(this.options.equalizeOn); + if (tooSmall) { + if (this.isOn) { + this._pauseEvents(); + this.$watched.css('height', 'auto'); + } + } else { + if (!this.isOn) { + this._events(); + } + } + return tooSmall; + } + + /** + * A noop version for the plugin + * @private + */ + + }, { + key: '_killswitch', + value: function _killswitch() { + return; + } + + /** + * Calls necessary functions to update Equalizer upon DOM change + * @private + */ + + }, { + key: '_reflow', + value: function _reflow() { + if (!this.options.equalizeOnStack) { + if (this._isStacked()) { + this.$watched.css('height', 'auto'); + return false; + } + } + if (this.options.equalizeByRow) { + this.getHeightsByRow(this.applyHeightByRow.bind(this)); + } else { + this.getHeights(this.applyHeight.bind(this)); + } + } + + /** + * Manually determines if the first 2 elements are *NOT* stacked. + * @private + */ + + }, { + key: '_isStacked', + value: function _isStacked() { + return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top; + } + + /** + * Finds the outer heights of children contained within an Equalizer parent and returns them in an array + * @param {Function} cb - A non-optional callback to return the heights array to. + * @returns {Array} heights - An array of heights of children within Equalizer container + */ + + }, { + key: 'getHeights', + value: function getHeights(cb) { + var heights = []; + for (var i = 0, len = this.$watched.length; i < len; i++) { + this.$watched[i].style.height = 'auto'; + heights.push(this.$watched[i].offsetHeight); + } + cb(heights); + } + + /** + * Finds the outer heights of children contained within an Equalizer parent and returns them in an array + * @param {Function} cb - A non-optional callback to return the heights array to. + * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child + */ + + }, { + key: 'getHeightsByRow', + value: function getHeightsByRow(cb) { + var lastElTopOffset = this.$watched.length ? this.$watched.first().offset().top : 0, + groups = [], + group = 0; + //group by Row + groups[group] = []; + for (var i = 0, len = this.$watched.length; i < len; i++) { + this.$watched[i].style.height = 'auto'; + //maybe could use this.$watched[i].offsetTop + var elOffsetTop = $(this.$watched[i]).offset().top; + if (elOffsetTop != lastElTopOffset) { + group++; + groups[group] = []; + lastElTopOffset = elOffsetTop; + } + groups[group].push([this.$watched[i], this.$watched[i].offsetHeight]); + } + + for (var j = 0, ln = groups.length; j < ln; j++) { + var heights = $(groups[j]).map(function () { + return this[1]; + }).get(); + var max = Math.max.apply(null, heights); + groups[j].push(max); + } + cb(groups); + } + + /** + * Changes the CSS height property of each child in an Equalizer parent to match the tallest + * @param {array} heights - An array of heights of children within Equalizer container + * @fires Equalizer#preequalized + * @fires Equalizer#postequalized + */ + + }, { + key: 'applyHeight', + value: function applyHeight(heights) { + var max = Math.max.apply(null, heights); + /** + * Fires before the heights are applied + * @event Equalizer#preequalized + */ + this.$element.trigger('preequalized.zf.equalizer'); + + this.$watched.css('height', max); + + /** + * Fires when the heights have been applied + * @event Equalizer#postequalized + */ + this.$element.trigger('postequalized.zf.equalizer'); + } + + /** + * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row + * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child + * @fires Equalizer#preequalized + * @fires Equalizer#preequalizedRow + * @fires Equalizer#postequalizedRow + * @fires Equalizer#postequalized + */ + + }, { + key: 'applyHeightByRow', + value: function applyHeightByRow(groups) { + /** + * Fires before the heights are applied + */ + this.$element.trigger('preequalized.zf.equalizer'); + for (var i = 0, len = groups.length; i < len; i++) { + var groupsILength = groups[i].length, + max = groups[i][groupsILength - 1]; + if (groupsILength <= 2) { + $(groups[i][0][0]).css({ 'height': 'auto' }); + continue; + } + /** + * Fires before the heights per row are applied + * @event Equalizer#preequalizedRow + */ + this.$element.trigger('preequalizedrow.zf.equalizer'); + for (var j = 0, lenJ = groupsILength - 1; j < lenJ; j++) { + $(groups[i][j][0]).css({ 'height': max }); + } + /** + * Fires when the heights per row have been applied + * @event Equalizer#postequalizedRow + */ + this.$element.trigger('postequalizedrow.zf.equalizer'); + } + /** + * Fires when the heights have been applied + */ + this.$element.trigger('postequalized.zf.equalizer'); + } + + /** + * Destroys an instance of Equalizer. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this._pauseEvents(); + this.$watched.css('height', 'auto'); + + Foundation.unregisterPlugin(this); + } + }]); + + return Equalizer; + }(); + + /** + * Default settings for plugin + */ + + + Equalizer.defaults = { + /** + * Enable height equalization when stacked on smaller screens. + * @option + * @example true + */ + equalizeOnStack: true, + /** + * Enable height equalization row by row. + * @option + * @example false + */ + equalizeByRow: false, + /** + * String representing the minimum breakpoint size the plugin should equalize heights on. + * @option + * @example 'medium' + */ + equalizeOn: '' + }; + + // Window exports + Foundation.plugin(Equalizer, 'Equalizer'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.interchange.js b/libraries/foundation-6/js/plugins/foundation.interchange.js new file mode 100755 index 00000000..7531ccde --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.interchange.js @@ -0,0 +1,227 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Interchange module. + * @module foundation.interchange + * @requires foundation.util.mediaQuery + * @requires foundation.util.timerAndImageLoader + */ + + var Interchange = function () { + /** + * Creates a new instance of Interchange. + * @class + * @fires Interchange#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Interchange(element, options) { + _classCallCheck(this, Interchange); + + this.$element = element; + this.options = $.extend({}, Interchange.defaults, options); + this.rules = []; + this.currentPath = ''; + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'Interchange'); + } + + /** + * Initializes the Interchange plugin and calls functions to get interchange functioning on load. + * @function + * @private + */ + + + _createClass(Interchange, [{ + key: '_init', + value: function _init() { + this._addBreakpoints(); + this._generateRules(); + this._reflow(); + } + + /** + * Initializes events for Interchange. + * @function + * @private + */ + + }, { + key: '_events', + value: function _events() { + $(window).on('resize.zf.interchange', Foundation.util.throttle(this._reflow.bind(this), 50)); + } + + /** + * Calls necessary functions to update Interchange upon DOM change + * @function + * @private + */ + + }, { + key: '_reflow', + value: function _reflow() { + var match; + + // Iterate through each rule, but only save the last match + for (var i in this.rules) { + if (this.rules.hasOwnProperty(i)) { + var rule = this.rules[i]; + + if (window.matchMedia(rule.query).matches) { + match = rule; + } + } + } + + if (match) { + this.replace(match.path); + } + } + + /** + * Gets the Foundation breakpoints and adds them to the Interchange.SPECIAL_QUERIES object. + * @function + * @private + */ + + }, { + key: '_addBreakpoints', + value: function _addBreakpoints() { + for (var i in Foundation.MediaQuery.queries) { + if (Foundation.MediaQuery.queries.hasOwnProperty(i)) { + var query = Foundation.MediaQuery.queries[i]; + Interchange.SPECIAL_QUERIES[query.name] = query.value; + } + } + } + + /** + * Checks the Interchange element for the provided media query + content pairings + * @function + * @private + * @param {Object} element - jQuery object that is an Interchange instance + * @returns {Array} scenarios - Array of objects that have 'mq' and 'path' keys with corresponding keys + */ + + }, { + key: '_generateRules', + value: function _generateRules(element) { + var rulesList = []; + var rules; + + if (this.options.rules) { + rules = this.options.rules; + } else { + rules = this.$element.data('interchange').match(/\[.*?\]/g); + } + + for (var i in rules) { + if (rules.hasOwnProperty(i)) { + var rule = rules[i].slice(1, -1).split(', '); + var path = rule.slice(0, -1).join(''); + var query = rule[rule.length - 1]; + + if (Interchange.SPECIAL_QUERIES[query]) { + query = Interchange.SPECIAL_QUERIES[query]; + } + + rulesList.push({ + path: path, + query: query + }); + } + } + + this.rules = rulesList; + } + + /** + * Update the `src` property of an image, or change the HTML of a container, to the specified path. + * @function + * @param {String} path - Path to the image or HTML partial. + * @fires Interchange#replaced + */ + + }, { + key: 'replace', + value: function replace(path) { + if (this.currentPath === path) return; + + var _this = this, + trigger = 'replaced.zf.interchange'; + + // Replacing images + if (this.$element[0].nodeName === 'IMG') { + this.$element.attr('src', path).load(function () { + _this.currentPath = path; + }).trigger(trigger); + } + // Replacing background images + else if (path.match(/\.(gif|jpg|jpeg|png|svg|tiff)([?#].*)?/i)) { + this.$element.css({ 'background-image': 'url(' + path + ')' }).trigger(trigger); + } + // Replacing HTML + else { + $.get(path, function (response) { + _this.$element.html(response).trigger(trigger); + $(response).foundation(); + _this.currentPath = path; + }); + } + + /** + * Fires when content in an Interchange element is done being loaded. + * @event Interchange#replaced + */ + // this.$element.trigger('replaced.zf.interchange'); + } + + /** + * Destroys an instance of interchange. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + //TODO this. + } + }]); + + return Interchange; + }(); + + /** + * Default settings for plugin + */ + + + Interchange.defaults = { + /** + * Rules to be applied to Interchange elements. Set with the `data-interchange` array notation. + * @option + */ + rules: null + }; + + Interchange.SPECIAL_QUERIES = { + 'landscape': 'screen and (orientation: landscape)', + 'portrait': 'screen and (orientation: portrait)', + 'retina': 'only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)' + }; + + // Window exports + Foundation.plugin(Interchange, 'Interchange'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.magellan.js b/libraries/foundation-6/js/plugins/foundation.magellan.js new file mode 100755 index 00000000..f4ef0b98 --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.magellan.js @@ -0,0 +1,257 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Magellan module. + * @module foundation.magellan + */ + + var Magellan = function () { + /** + * Creates a new instance of Magellan. + * @class + * @fires Magellan#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Magellan(element, options) { + _classCallCheck(this, Magellan); + + this.$element = element; + this.options = $.extend({}, Magellan.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Magellan'); + } + + /** + * Initializes the Magellan plugin and calls functions to get equalizer functioning on load. + * @private + */ + + + _createClass(Magellan, [{ + key: '_init', + value: function _init() { + var id = this.$element[0].id || Foundation.GetYoDigits(6, 'magellan'); + var _this = this; + this.$targets = $('[data-magellan-target]'); + this.$links = this.$element.find('a'); + this.$element.attr({ + 'data-resize': id, + 'data-scroll': id, + 'id': id + }); + this.$active = $(); + this.scrollPos = parseInt(window.pageYOffset, 10); + + this._events(); + } + + /** + * Calculates an array of pixel values that are the demarcation lines between locations on the page. + * Can be invoked if new elements are added or the size of a location changes. + * @function + */ + + }, { + key: 'calcPoints', + value: function calcPoints() { + var _this = this, + body = document.body, + html = document.documentElement; + + this.points = []; + this.winHeight = Math.round(Math.max(window.innerHeight, html.clientHeight)); + this.docHeight = Math.round(Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight)); + + this.$targets.each(function () { + var $tar = $(this), + pt = Math.round($tar.offset().top - _this.options.threshold); + $tar.targetPoint = pt; + _this.points.push(pt); + }); + } + + /** + * Initializes events for Magellan. + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this, + $body = $('html, body'), + opts = { + duration: _this.options.animationDuration, + easing: _this.options.animationEasing + }; + $(window).one('load', function () { + if (_this.options.deepLinking) { + if (location.hash) { + _this.scrollToLoc(location.hash); + } + } + _this.calcPoints(); + _this._updateActive(); + }); + + this.$element.on({ + 'resizeme.zf.trigger': this.reflow.bind(this), + 'scrollme.zf.trigger': this._updateActive.bind(this) + }).on('click.zf.magellan', 'a[href^="#"]', function (e) { + e.preventDefault(); + var arrival = this.getAttribute('href'); + _this.scrollToLoc(arrival); + }); + } + + /** + * Function to scroll to a given location on the page. + * @param {String} loc - a properly formatted jQuery id selector. Example: '#foo' + * @function + */ + + }, { + key: 'scrollToLoc', + value: function scrollToLoc(loc) { + var scrollPos = Math.round($(loc).offset().top - this.options.threshold / 2 - this.options.barOffset); + + $('html, body').stop(true).animate({ scrollTop: scrollPos }, this.options.animationDuration, this.options.animationEasing); + } + + /** + * Calls necessary functions to update Magellan upon DOM change + * @function + */ + + }, { + key: 'reflow', + value: function reflow() { + this.calcPoints(); + this._updateActive(); + } + + /** + * Updates the visibility of an active location link, and updates the url hash for the page, if deepLinking enabled. + * @private + * @function + * @fires Magellan#update + */ + + }, { + key: '_updateActive', + value: function _updateActive() /*evt, elem, scrollPos*/{ + var winPos = /*scrollPos ||*/parseInt(window.pageYOffset, 10), + curIdx; + + if (winPos + this.winHeight === this.docHeight) { + curIdx = this.points.length - 1; + } else if (winPos < this.points[0]) { + curIdx = 0; + } else { + var isDown = this.scrollPos < winPos, + _this = this, + curVisible = this.points.filter(function (p, i) { + return isDown ? p - _this.options.barOffset <= winPos : p - _this.options.barOffset - _this.options.threshold <= winPos; + }); + curIdx = curVisible.length ? curVisible.length - 1 : 0; + } + + this.$active.removeClass(this.options.activeClass); + this.$active = this.$links.eq(curIdx).addClass(this.options.activeClass); + + if (this.options.deepLinking) { + var hash = this.$active[0].getAttribute('href'); + if (window.history.pushState) { + window.history.pushState(null, null, hash); + } else { + window.location.hash = hash; + } + } + + this.scrollPos = winPos; + /** + * Fires when magellan is finished updating to the new active element. + * @event Magellan#update + */ + this.$element.trigger('update.zf.magellan', [this.$active]); + } + + /** + * Destroys an instance of Magellan and resets the url of the window. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.off('.zf.trigger .zf.magellan').find('.' + this.options.activeClass).removeClass(this.options.activeClass); + + if (this.options.deepLinking) { + var hash = this.$active[0].getAttribute('href'); + window.location.hash.replace(hash, ''); + } + + Foundation.unregisterPlugin(this); + } + }]); + + return Magellan; + }(); + + /** + * Default settings for plugin + */ + + + Magellan.defaults = { + /** + * Amount of time, in ms, the animated scrolling should take between locations. + * @option + * @example 500 + */ + animationDuration: 500, + /** + * Animation style to use when scrolling between locations. + * @option + * @example 'ease-in-out' + */ + animationEasing: 'linear', + /** + * Number of pixels to use as a marker for location changes. + * @option + * @example 50 + */ + threshold: 50, + /** + * Class applied to the active locations link on the magellan container. + * @option + * @example 'active' + */ + activeClass: 'active', + /** + * Allows the script to manipulate the url of the current page, and if supported, alter the history. + * @option + * @example true + */ + deepLinking: false, + /** + * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar. + * @option + * @example 25 + */ + barOffset: 0 + }; + + // Window exports + Foundation.plugin(Magellan, 'Magellan'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.offcanvas.js b/libraries/foundation-6/js/plugins/foundation.offcanvas.js new file mode 100755 index 00000000..4350c696 --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.offcanvas.js @@ -0,0 +1,438 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * OffCanvas module. + * @module foundation.offcanvas + * @requires foundation.util.mediaQuery + * @requires foundation.util.triggers + * @requires foundation.util.motion + */ + + var OffCanvas = function () { + /** + * Creates a new instance of an off-canvas wrapper. + * @class + * @fires OffCanvas#init + * @param {Object} element - jQuery object to initialize. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function OffCanvas(element, options) { + _classCallCheck(this, OffCanvas); + + this.$element = element; + this.options = $.extend({}, OffCanvas.defaults, this.$element.data(), options); + this.$lastTrigger = $(); + this.$triggers = $(); + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'OffCanvas'); + } + + /** + * Initializes the off-canvas wrapper by adding the exit overlay (if needed). + * @function + * @private + */ + + + _createClass(OffCanvas, [{ + key: '_init', + value: function _init() { + var id = this.$element.attr('id'); + + this.$element.attr('aria-hidden', 'true'); + + // Find triggers that affect this element and add aria-expanded to them + this.$triggers = $(document).find('[data-open="' + id + '"], [data-close="' + id + '"], [data-toggle="' + id + '"]').attr('aria-expanded', 'false').attr('aria-controls', id); + + // Add a close trigger over the body if necessary + if (this.options.closeOnClick) { + if ($('.js-off-canvas-exit').length) { + this.$exiter = $('.js-off-canvas-exit'); + } else { + var exiter = document.createElement('div'); + exiter.setAttribute('class', 'js-off-canvas-exit'); + $('[data-off-canvas-content]').append(exiter); + + this.$exiter = $(exiter); + } + } + + this.options.isRevealed = this.options.isRevealed || new RegExp(this.options.revealClass, 'g').test(this.$element[0].className); + + if (this.options.isRevealed) { + this.options.revealOn = this.options.revealOn || this.$element[0].className.match(/(reveal-for-medium|reveal-for-large)/g)[0].split('-')[2]; + this._setMQChecker(); + } + if (!this.options.transitionTime) { + this.options.transitionTime = parseFloat(window.getComputedStyle($('[data-off-canvas-wrapper]')[0]).transitionDuration) * 1000; + } + } + + /** + * Adds event handlers to the off-canvas wrapper and the exit overlay. + * @function + * @private + */ + + }, { + key: '_events', + value: function _events() { + this.$element.off('.zf.trigger .zf.offcanvas').on({ + 'open.zf.trigger': this.open.bind(this), + 'close.zf.trigger': this.close.bind(this), + 'toggle.zf.trigger': this.toggle.bind(this), + 'keydown.zf.offcanvas': this._handleKeyboard.bind(this) + }); + + if (this.options.closeOnClick && this.$exiter.length) { + this.$exiter.on({ 'click.zf.offcanvas': this.close.bind(this) }); + } + } + + /** + * Applies event listener for elements that will reveal at certain breakpoints. + * @private + */ + + }, { + key: '_setMQChecker', + value: function _setMQChecker() { + var _this = this; + + $(window).on('changed.zf.mediaquery', function () { + if (Foundation.MediaQuery.atLeast(_this.options.revealOn)) { + _this.reveal(true); + } else { + _this.reveal(false); + } + }).one('load.zf.offcanvas', function () { + if (Foundation.MediaQuery.atLeast(_this.options.revealOn)) { + _this.reveal(true); + } + }); + } + + /** + * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open. + * @param {Boolean} isRevealed - true if element should be revealed. + * @function + */ + + }, { + key: 'reveal', + value: function reveal(isRevealed) { + var $closer = this.$element.find('[data-close]'); + if (isRevealed) { + this.close(); + this.isRevealed = true; + // if (!this.options.forceTop) { + // var scrollPos = parseInt(window.pageYOffset); + // this.$element[0].style.transform = 'translate(0,' + scrollPos + 'px)'; + // } + // if (this.options.isSticky) { this._stick(); } + this.$element.off('open.zf.trigger toggle.zf.trigger'); + if ($closer.length) { + $closer.hide(); + } + } else { + this.isRevealed = false; + // if (this.options.isSticky || !this.options.forceTop) { + // this.$element[0].style.transform = ''; + // $(window).off('scroll.zf.offcanvas'); + // } + this.$element.on({ + 'open.zf.trigger': this.open.bind(this), + 'toggle.zf.trigger': this.toggle.bind(this) + }); + if ($closer.length) { + $closer.show(); + } + } + } + + /** + * Opens the off-canvas menu. + * @function + * @param {Object} event - Event object passed from listener. + * @param {jQuery} trigger - element that triggered the off-canvas to open. + * @fires OffCanvas#opened + */ + + }, { + key: 'open', + value: function open(event, trigger) { + if (this.$element.hasClass('is-open') || this.isRevealed) { + return; + } + var _this = this, + $body = $(document.body); + + if (this.options.forceTop) { + $('body').scrollTop(0); + } + // window.pageYOffset = 0; + + // if (!this.options.forceTop) { + // var scrollPos = parseInt(window.pageYOffset); + // this.$element[0].style.transform = 'translate(0,' + scrollPos + 'px)'; + // if (this.$exiter.length) { + // this.$exiter[0].style.transform = 'translate(0,' + scrollPos + 'px)'; + // } + // } + /** + * Fires when the off-canvas menu opens. + * @event OffCanvas#opened + */ + Foundation.Move(this.options.transitionTime, this.$element, function () { + $('[data-off-canvas-wrapper]').addClass('is-off-canvas-open is-open-' + _this.options.position); + + _this.$element.addClass('is-open'); + + // if (_this.options.isSticky) { + // _this._stick(); + // } + }); + + this.$triggers.attr('aria-expanded', 'true'); + this.$element.attr('aria-hidden', 'false').trigger('opened.zf.offcanvas'); + + if (this.options.closeOnClick) { + this.$exiter.addClass('is-visible'); + } + + if (trigger) { + this.$lastTrigger = trigger; + } + + if (this.options.autoFocus) { + this.$element.one(Foundation.transitionend(this.$element), function () { + _this.$element.find('a, button').eq(0).focus(); + }); + } + + if (this.options.trapFocus) { + $('[data-off-canvas-content]').attr('tabindex', '-1'); + this._trapFocus(); + } + } + + /** + * Traps focus within the offcanvas on open. + * @private + */ + + }, { + key: '_trapFocus', + value: function _trapFocus() { + var focusable = Foundation.Keyboard.findFocusable(this.$element), + first = focusable.eq(0), + last = focusable.eq(-1); + + focusable.off('.zf.offcanvas').on('keydown.zf.offcanvas', function (e) { + if (e.which === 9 || e.keycode === 9) { + if (e.target === last[0] && !e.shiftKey) { + e.preventDefault(); + first.focus(); + } + if (e.target === first[0] && e.shiftKey) { + e.preventDefault(); + last.focus(); + } + } + }); + } + + /** + * Allows the offcanvas to appear sticky utilizing translate properties. + * @private + */ + // OffCanvas.prototype._stick = function() { + // var elStyle = this.$element[0].style; + // + // if (this.options.closeOnClick) { + // var exitStyle = this.$exiter[0].style; + // } + // + // $(window).on('scroll.zf.offcanvas', function(e) { + // console.log(e); + // var pageY = window.pageYOffset; + // elStyle.transform = 'translate(0,' + pageY + 'px)'; + // if (exitStyle !== undefined) { exitStyle.transform = 'translate(0,' + pageY + 'px)'; } + // }); + // // this.$element.trigger('stuck.zf.offcanvas'); + // }; + /** + * Closes the off-canvas menu. + * @function + * @param {Function} cb - optional cb to fire after closure. + * @fires OffCanvas#closed + */ + + }, { + key: 'close', + value: function close(cb) { + if (!this.$element.hasClass('is-open') || this.isRevealed) { + return; + } + + var _this = this; + + // Foundation.Move(this.options.transitionTime, this.$element, function() { + $('[data-off-canvas-wrapper]').removeClass('is-off-canvas-open is-open-' + _this.options.position); + _this.$element.removeClass('is-open'); + // Foundation._reflow(); + // }); + this.$element.attr('aria-hidden', 'true') + /** + * Fires when the off-canvas menu opens. + * @event OffCanvas#closed + */ + .trigger('closed.zf.offcanvas'); + // if (_this.options.isSticky || !_this.options.forceTop) { + // setTimeout(function() { + // _this.$element[0].style.transform = ''; + // $(window).off('scroll.zf.offcanvas'); + // }, this.options.transitionTime); + // } + if (this.options.closeOnClick) { + this.$exiter.removeClass('is-visible'); + } + + this.$triggers.attr('aria-expanded', 'false'); + if (this.options.trapFocus) { + $('[data-off-canvas-content]').removeAttr('tabindex'); + } + } + + /** + * Toggles the off-canvas menu open or closed. + * @function + * @param {Object} event - Event object passed from listener. + * @param {jQuery} trigger - element that triggered the off-canvas to open. + */ + + }, { + key: 'toggle', + value: function toggle(event, trigger) { + if (this.$element.hasClass('is-open')) { + this.close(event, trigger); + } else { + this.open(event, trigger); + } + } + + /** + * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu. + * @function + * @private + */ + + }, { + key: '_handleKeyboard', + value: function _handleKeyboard(event) { + if (event.which !== 27) return; + + event.stopPropagation(); + event.preventDefault(); + this.close(); + this.$lastTrigger.focus(); + } + + /** + * Destroys the offcanvas plugin. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.close(); + this.$element.off('.zf.trigger .zf.offcanvas'); + this.$exiter.off('.zf.offcanvas'); + + Foundation.unregisterPlugin(this); + } + }]); + + return OffCanvas; + }(); + + OffCanvas.defaults = { + /** + * Allow the user to click outside of the menu to close it. + * @option + * @example true + */ + closeOnClick: true, + + /** + * Amount of time in ms the open and close transition requires. If none selected, pulls from body style. + * @option + * @example 500 + */ + transitionTime: 0, + + /** + * Direction the offcanvas opens from. Determines class applied to body. + * @option + * @example left + */ + position: 'left', + + /** + * Force the page to scroll to top on open. + * @option + * @example true + */ + forceTop: true, + + /** + * Allow the offcanvas to remain open for certain breakpoints. + * @option + * @example false + */ + isRevealed: false, + + /** + * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option. + * @option + * @example reveal-for-large + */ + revealOn: null, + + /** + * Force focus to the offcanvas on open. If true, will focus the opening trigger on close. + * @option + * @example true + */ + autoFocus: true, + + /** + * Class used to force an offcanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`. + * @option + * TODO improve the regex testing for this. + * @example reveal-for-large + */ + revealClass: 'reveal-for-', + + /** + * Triggers optional focus trapping when opening an offcanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes. + * @option + * @example true + */ + trapFocus: false + }; + + // Window exports + Foundation.plugin(OffCanvas, 'OffCanvas'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.orbit.js b/libraries/foundation-6/js/plugins/foundation.orbit.js new file mode 100755 index 00000000..7ecae386 --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.orbit.js @@ -0,0 +1,484 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Orbit module. + * @module foundation.orbit + * @requires foundation.util.keyboard + * @requires foundation.util.motion + * @requires foundation.util.timerAndImageLoader + * @requires foundation.util.touch + */ + + var Orbit = function () { + /** + * Creates a new instance of an orbit carousel. + * @class + * @param {jQuery} element - jQuery object to make into an Orbit Carousel. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Orbit(element, options) { + _classCallCheck(this, Orbit); + + this.$element = element; + this.options = $.extend({}, Orbit.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Orbit'); + Foundation.Keyboard.register('Orbit', { + 'ltr': { + 'ARROW_RIGHT': 'next', + 'ARROW_LEFT': 'previous' + }, + 'rtl': { + 'ARROW_LEFT': 'next', + 'ARROW_RIGHT': 'previous' + } + }); + } + + /** + * Initializes the plugin by creating jQuery collections, setting attributes, and starting the animation. + * @function + * @private + */ + + + _createClass(Orbit, [{ + key: '_init', + value: function _init() { + this.$wrapper = this.$element.find('.' + this.options.containerClass); + this.$slides = this.$element.find('.' + this.options.slideClass); + var $images = this.$element.find('img'), + initActive = this.$slides.filter('.is-active'); + + if (!initActive.length) { + this.$slides.eq(0).addClass('is-active'); + } + + if (!this.options.useMUI) { + this.$slides.addClass('no-motionui'); + } + + if ($images.length) { + Foundation.onImagesLoaded($images, this._prepareForOrbit.bind(this)); + } else { + this._prepareForOrbit(); //hehe + } + + if (this.options.bullets) { + this._loadBullets(); + } + + this._events(); + + if (this.options.autoPlay && this.$slides.length > 1) { + this.geoSync(); + } + + if (this.options.accessible) { + // allow wrapper to be focusable to enable arrow navigation + this.$wrapper.attr('tabindex', 0); + } + } + + /** + * Creates a jQuery collection of bullets, if they are being used. + * @function + * @private + */ + + }, { + key: '_loadBullets', + value: function _loadBullets() { + this.$bullets = this.$element.find('.' + this.options.boxOfBullets).find('button'); + } + + /** + * Sets a `timer` object on the orbit, and starts the counter for the next slide. + * @function + */ + + }, { + key: 'geoSync', + value: function geoSync() { + var _this = this; + this.timer = new Foundation.Timer(this.$element, { + duration: this.options.timerDelay, + infinite: false + }, function () { + _this.changeSlide(true); + }); + this.timer.start(); + } + + /** + * Sets wrapper and slide heights for the orbit. + * @function + * @private + */ + + }, { + key: '_prepareForOrbit', + value: function _prepareForOrbit() { + var _this = this; + this._setWrapperHeight(function (max) { + _this._setSlideHeight(max); + }); + } + + /** + * Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height. + * @function + * @private + * @param {Function} cb - a callback function to fire when complete. + */ + + }, { + key: '_setWrapperHeight', + value: function _setWrapperHeight(cb) { + //rewrite this to `for` loop + var max = 0, + temp, + counter = 0; + + this.$slides.each(function () { + temp = this.getBoundingClientRect().height; + $(this).attr('data-slide', counter); + + if (counter) { + //if not the first slide, set css position and display property + $(this).css({ 'position': 'relative', 'display': 'none' }); + } + max = temp > max ? temp : max; + counter++; + }); + + if (counter === this.$slides.length) { + this.$wrapper.css({ 'height': max }); //only change the wrapper height property once. + cb(max); //fire callback with max height dimension. + } + } + + /** + * Sets the max-height of each slide. + * @function + * @private + */ + + }, { + key: '_setSlideHeight', + value: function _setSlideHeight(height) { + this.$slides.each(function () { + $(this).css('max-height', height); + }); + } + + /** + * Adds event listeners to basically everything within the element. + * @function + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + + //*************************************** + //**Now using custom event - thanks to:** + //** Yohai Ararat of Toronto ** + //*************************************** + if (this.$slides.length > 1) { + + if (this.options.swipe) { + this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit').on('swipeleft.zf.orbit', function (e) { + e.preventDefault(); + _this.changeSlide(true); + }).on('swiperight.zf.orbit', function (e) { + e.preventDefault(); + _this.changeSlide(false); + }); + } + //*************************************** + + if (this.options.autoPlay) { + this.$slides.on('click.zf.orbit', function () { + _this.$element.data('clickedOn', _this.$element.data('clickedOn') ? false : true); + _this.timer[_this.$element.data('clickedOn') ? 'pause' : 'start'](); + }); + + if (this.options.pauseOnHover) { + this.$element.on('mouseenter.zf.orbit', function () { + _this.timer.pause(); + }).on('mouseleave.zf.orbit', function () { + if (!_this.$element.data('clickedOn')) { + _this.timer.start(); + } + }); + } + } + + if (this.options.navButtons) { + var $controls = this.$element.find('.' + this.options.nextClass + ', .' + this.options.prevClass); + $controls.attr('tabindex', 0) + //also need to handle enter/return and spacebar key presses + .on('click.zf.orbit touchend.zf.orbit', function (e) { + e.preventDefault(); + _this.changeSlide($(this).hasClass(_this.options.nextClass)); + }); + } + + if (this.options.bullets) { + this.$bullets.on('click.zf.orbit touchend.zf.orbit', function () { + if (/is-active/g.test(this.className)) { + return false; + } //if this is active, kick out of function. + var idx = $(this).data('slide'), + ltr = idx > _this.$slides.filter('.is-active').data('slide'), + $slide = _this.$slides.eq(idx); + + _this.changeSlide(ltr, $slide, idx); + }); + } + + this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function (e) { + // handle keyboard event with keyboard util + Foundation.Keyboard.handleKey(e, 'Orbit', { + next: function () { + _this.changeSlide(true); + }, + previous: function () { + _this.changeSlide(false); + }, + handled: function () { + // if bullet is focused, make sure focus moves + if ($(e.target).is(_this.$bullets)) { + _this.$bullets.filter('.is-active').focus(); + } + } + }); + }); + } + } + + /** + * Changes the current slide to a new one. + * @function + * @param {Boolean} isLTR - flag if the slide should move left to right. + * @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected. + * @param {Number} idx - the index of the new slide in its collection, if one chosen. + * @fires Orbit#slidechange + */ + + }, { + key: 'changeSlide', + value: function changeSlide(isLTR, chosenSlide, idx) { + var $curSlide = this.$slides.filter('.is-active').eq(0); + + if (/mui/g.test($curSlide[0].className)) { + return false; + } //if the slide is currently animating, kick out of the function + + var $firstSlide = this.$slides.first(), + $lastSlide = this.$slides.last(), + dirIn = isLTR ? 'Right' : 'Left', + dirOut = isLTR ? 'Left' : 'Right', + _this = this, + $newSlide; + + if (!chosenSlide) { + //most of the time, this will be auto played or clicked from the navButtons. + $newSlide = isLTR ? //if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!! + this.options.infiniteWrap ? $curSlide.next('.' + this.options.slideClass).length ? $curSlide.next('.' + this.options.slideClass) : $firstSlide : $curSlide.next('.' + this.options.slideClass) : //pick next slide if moving left to right + this.options.infiniteWrap ? $curSlide.prev('.' + this.options.slideClass).length ? $curSlide.prev('.' + this.options.slideClass) : $lastSlide : $curSlide.prev('.' + this.options.slideClass); //pick prev slide if moving right to left + } else { + $newSlide = chosenSlide; + } + + if ($newSlide.length) { + if (this.options.bullets) { + idx = idx || this.$slides.index($newSlide); //grab index to update bullets + this._updateBullets(idx); + } + + if (this.options.useMUI) { + Foundation.Motion.animateIn($newSlide.addClass('is-active').css({ 'position': 'absolute', 'top': 0 }), this.options['animInFrom' + dirIn], function () { + $newSlide.css({ 'position': 'relative', 'display': 'block' }).attr('aria-live', 'polite'); + }); + + Foundation.Motion.animateOut($curSlide.removeClass('is-active'), this.options['animOutTo' + dirOut], function () { + $curSlide.removeAttr('aria-live'); + if (_this.options.autoPlay && !_this.timer.isPaused) { + _this.timer.restart(); + } + //do stuff? + }); + } else { + $curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide(); + $newSlide.addClass('is-active is-in').attr('aria-live', 'polite').show(); + if (this.options.autoPlay && !this.timer.isPaused) { + this.timer.restart(); + } + } + /** + * Triggers when the slide has finished animating in. + * @event Orbit#slidechange + */ + this.$element.trigger('slidechange.zf.orbit', [$newSlide]); + } + } + + /** + * Updates the active state of the bullets, if displayed. + * @function + * @private + * @param {Number} idx - the index of the current slide. + */ + + }, { + key: '_updateBullets', + value: function _updateBullets(idx) { + var $oldBullet = this.$element.find('.' + this.options.boxOfBullets).find('.is-active').removeClass('is-active').blur(), + span = $oldBullet.find('span:last').detach(), + $newBullet = this.$bullets.eq(idx).addClass('is-active').append(span); + } + + /** + * Destroys the carousel and hides the element. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.off('.zf.orbit').find('*').off('.zf.orbit').end().hide(); + Foundation.unregisterPlugin(this); + } + }]); + + return Orbit; + }(); + + Orbit.defaults = { + /** + * Tells the JS to look for and loadBullets. + * @option + * @example true + */ + bullets: true, + /** + * Tells the JS to apply event listeners to nav buttons + * @option + * @example true + */ + navButtons: true, + /** + * motion-ui animation class to apply + * @option + * @example 'slide-in-right' + */ + animInFromRight: 'slide-in-right', + /** + * motion-ui animation class to apply + * @option + * @example 'slide-out-right' + */ + animOutToRight: 'slide-out-right', + /** + * motion-ui animation class to apply + * @option + * @example 'slide-in-left' + * + */ + animInFromLeft: 'slide-in-left', + /** + * motion-ui animation class to apply + * @option + * @example 'slide-out-left' + */ + animOutToLeft: 'slide-out-left', + /** + * Allows Orbit to automatically animate on page load. + * @option + * @example true + */ + autoPlay: true, + /** + * Amount of time, in ms, between slide transitions + * @option + * @example 5000 + */ + timerDelay: 5000, + /** + * Allows Orbit to infinitely loop through the slides + * @option + * @example true + */ + infiniteWrap: true, + /** + * Allows the Orbit slides to bind to swipe events for mobile, requires an additional util library + * @option + * @example true + */ + swipe: true, + /** + * Allows the timing function to pause animation on hover. + * @option + * @example true + */ + pauseOnHover: true, + /** + * Allows Orbit to bind keyboard events to the slider, to animate frames with arrow keys + * @option + * @example true + */ + accessible: true, + /** + * Class applied to the container of Orbit + * @option + * @example 'orbit-container' + */ + containerClass: 'orbit-container', + /** + * Class applied to individual slides. + * @option + * @example 'orbit-slide' + */ + slideClass: 'orbit-slide', + /** + * Class applied to the bullet container. You're welcome. + * @option + * @example 'orbit-bullets' + */ + boxOfBullets: 'orbit-bullets', + /** + * Class applied to the `next` navigation button. + * @option + * @example 'orbit-next' + */ + nextClass: 'orbit-next', + /** + * Class applied to the `previous` navigation button. + * @option + * @example 'orbit-previous' + */ + prevClass: 'orbit-previous', + /** + * Boolean to flag the js to use motion ui classes or not. Default to true for backwards compatability. + * @option + * @example true + */ + useMUI: true + }; + + // Window exports + Foundation.plugin(Orbit, 'Orbit'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.responsiveMenu.js b/libraries/foundation-6/js/plugins/foundation.responsiveMenu.js new file mode 100755 index 00000000..8ba0f7b0 --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.responsiveMenu.js @@ -0,0 +1,171 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * ResponsiveMenu module. + * @module foundation.responsiveMenu + * @requires foundation.util.triggers + * @requires foundation.util.mediaQuery + * @requires foundation.util.accordionMenu + * @requires foundation.util.drilldown + * @requires foundation.util.dropdown-menu + */ + + var ResponsiveMenu = function () { + /** + * Creates a new instance of a responsive menu. + * @class + * @fires ResponsiveMenu#init + * @param {jQuery} element - jQuery object to make into a dropdown menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function ResponsiveMenu(element, options) { + _classCallCheck(this, ResponsiveMenu); + + this.$element = $(element); + this.rules = this.$element.data('responsive-menu'); + this.currentMq = null; + this.currentPlugin = null; + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'ResponsiveMenu'); + } + + /** + * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element. + * @function + * @private + */ + + + _createClass(ResponsiveMenu, [{ + key: '_init', + value: function _init() { + // The first time an Interchange plugin is initialized, this.rules is converted from a string of "classes" to an object of rules + if (typeof this.rules === 'string') { + var rulesTree = {}; + + // Parse rules from "classes" pulled from data attribute + var rules = this.rules.split(' '); + + // Iterate through every rule found + for (var i = 0; i < rules.length; i++) { + var rule = rules[i].split('-'); + var ruleSize = rule.length > 1 ? rule[0] : 'small'; + var rulePlugin = rule.length > 1 ? rule[1] : rule[0]; + + if (MenuPlugins[rulePlugin] !== null) { + rulesTree[ruleSize] = MenuPlugins[rulePlugin]; + } + } + + this.rules = rulesTree; + } + + if (!$.isEmptyObject(this.rules)) { + this._checkMediaQueries(); + } + } + + /** + * Initializes events for the Menu. + * @function + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + + $(window).on('changed.zf.mediaquery', function () { + _this._checkMediaQueries(); + }); + // $(window).on('resize.zf.ResponsiveMenu', function() { + // _this._checkMediaQueries(); + // }); + } + + /** + * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out. + * @function + * @private + */ + + }, { + key: '_checkMediaQueries', + value: function _checkMediaQueries() { + var matchedMq, + _this = this; + // Iterate through each rule and find the last matching rule + $.each(this.rules, function (key) { + if (Foundation.MediaQuery.atLeast(key)) { + matchedMq = key; + } + }); + + // No match? No dice + if (!matchedMq) return; + + // Plugin already initialized? We good + if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return; + + // Remove existing plugin-specific CSS classes + $.each(MenuPlugins, function (key, value) { + _this.$element.removeClass(value.cssClass); + }); + + // Add the CSS class for the new plugin + this.$element.addClass(this.rules[matchedMq].cssClass); + + // Create an instance of the new plugin + if (this.currentPlugin) this.currentPlugin.destroy(); + this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {}); + } + + /** + * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.currentPlugin.destroy(); + $(window).off('.zf.ResponsiveMenu'); + Foundation.unregisterPlugin(this); + } + }]); + + return ResponsiveMenu; + }(); + + ResponsiveMenu.defaults = {}; + + // The plugin matches the plugin classes with these plugin instances. + var MenuPlugins = { + dropdown: { + cssClass: 'dropdown', + plugin: Foundation._plugins['dropdown-menu'] || null + }, + drilldown: { + cssClass: 'drilldown', + plugin: Foundation._plugins['drilldown'] || null + }, + accordion: { + cssClass: 'accordion-menu', + plugin: Foundation._plugins['accordion-menu'] || null + } + }; + + // Window exports + Foundation.plugin(ResponsiveMenu, 'ResponsiveMenu'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.responsiveToggle.js b/libraries/foundation-6/js/plugins/foundation.responsiveToggle.js new file mode 100755 index 00000000..30360604 --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.responsiveToggle.js @@ -0,0 +1,142 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * ResponsiveToggle module. + * @module foundation.responsiveToggle + * @requires foundation.util.mediaQuery + */ + + var ResponsiveToggle = function () { + /** + * Creates a new instance of Tab Bar. + * @class + * @fires ResponsiveToggle#init + * @param {jQuery} element - jQuery object to attach tab bar functionality to. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function ResponsiveToggle(element, options) { + _classCallCheck(this, ResponsiveToggle); + + this.$element = $(element); + this.options = $.extend({}, ResponsiveToggle.defaults, this.$element.data(), options); + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'ResponsiveToggle'); + } + + /** + * Initializes the tab bar by finding the target element, toggling element, and running update(). + * @function + * @private + */ + + + _createClass(ResponsiveToggle, [{ + key: '_init', + value: function _init() { + var targetID = this.$element.data('responsive-toggle'); + if (!targetID) { + console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.'); + } + + this.$targetMenu = $('#' + targetID); + this.$toggler = this.$element.find('[data-toggle]'); + + this._update(); + } + + /** + * Adds necessary event handlers for the tab bar to work. + * @function + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + + this._updateMqHandler = this._update.bind(this); + + $(window).on('changed.zf.mediaquery', this._updateMqHandler); + + this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this)); + } + + /** + * Checks the current media query to determine if the tab bar should be visible or hidden. + * @function + * @private + */ + + }, { + key: '_update', + value: function _update() { + // Mobile + if (!Foundation.MediaQuery.atLeast(this.options.hideFor)) { + this.$element.show(); + this.$targetMenu.hide(); + } + + // Desktop + else { + this.$element.hide(); + this.$targetMenu.show(); + } + } + + /** + * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it. + * @function + * @fires ResponsiveToggle#toggled + */ + + }, { + key: 'toggleMenu', + value: function toggleMenu() { + if (!Foundation.MediaQuery.atLeast(this.options.hideFor)) { + this.$targetMenu.toggle(0); + + /** + * Fires when the element attached to the tab bar toggles. + * @event ResponsiveToggle#toggled + */ + this.$element.trigger('toggled.zf.responsiveToggle'); + } + } + }, { + key: 'destroy', + value: function destroy() { + this.$element.off('.zf.responsiveToggle'); + this.$toggler.off('.zf.responsiveToggle'); + + $(window).off('changed.zf.mediaquery', this._updateMqHandler); + + Foundation.unregisterPlugin(this); + } + }]); + + return ResponsiveToggle; + }(); + + ResponsiveToggle.defaults = { + /** + * The breakpoint after which the menu is always shown, and the tab bar is hidden. + * @option + * @example 'medium' + */ + hideFor: 'medium' + }; + + // Window exports + Foundation.plugin(ResponsiveToggle, 'ResponsiveToggle'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.reveal.js b/libraries/foundation-6/js/plugins/foundation.reveal.js new file mode 100755 index 00000000..21ed625d --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.reveal.js @@ -0,0 +1,623 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Reveal module. + * @module foundation.reveal + * @requires foundation.util.keyboard + * @requires foundation.util.box + * @requires foundation.util.triggers + * @requires foundation.util.mediaQuery + * @requires foundation.util.motion if using animations + */ + + var Reveal = function () { + /** + * Creates a new instance of Reveal. + * @class + * @param {jQuery} element - jQuery object to use for the modal. + * @param {Object} options - optional parameters. + */ + + function Reveal(element, options) { + _classCallCheck(this, Reveal); + + this.$element = element; + this.options = $.extend({}, Reveal.defaults, this.$element.data(), options); + this._init(); + + Foundation.registerPlugin(this, 'Reveal'); + Foundation.Keyboard.register('Reveal', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ESCAPE': 'close', + 'TAB': 'tab_forward', + 'SHIFT_TAB': 'tab_backward' + }); + } + + /** + * Initializes the modal by adding the overlay and close buttons, (if selected). + * @private + */ + + + _createClass(Reveal, [{ + key: '_init', + value: function _init() { + this.id = this.$element.attr('id'); + this.isActive = false; + this.cached = { mq: Foundation.MediaQuery.current }; + this.isMobile = mobileSniff(); + + this.$anchor = $('[data-open="' + this.id + '"]').length ? $('[data-open="' + this.id + '"]') : $('[data-toggle="' + this.id + '"]'); + this.$anchor.attr({ + 'aria-controls': this.id, + 'aria-haspopup': true, + 'tabindex': 0 + }); + + if (this.options.fullScreen || this.$element.hasClass('full')) { + this.options.fullScreen = true; + this.options.overlay = false; + } + if (this.options.overlay && !this.$overlay) { + this.$overlay = this._makeOverlay(this.id); + } + + this.$element.attr({ + 'role': 'dialog', + 'aria-hidden': true, + 'data-yeti-box': this.id, + 'data-resize': this.id + }); + + if (this.$overlay) { + this.$element.detach().appendTo(this.$overlay); + } else { + this.$element.detach().appendTo($('body')); + this.$element.addClass('without-overlay'); + } + this._events(); + if (this.options.deepLink && window.location.hash === '#' + this.id) { + $(window).one('load.zf.reveal', this.open.bind(this)); + } + } + + /** + * Creates an overlay div to display behind the modal. + * @private + */ + + }, { + key: '_makeOverlay', + value: function _makeOverlay(id) { + var $overlay = $('<div></div>').addClass('reveal-overlay').appendTo('body'); + return $overlay; + } + + /** + * Updates position of modal + * TODO: Figure out if we actually need to cache these values or if it doesn't matter + * @private + */ + + }, { + key: '_updatePosition', + value: function _updatePosition() { + var width = this.$element.outerWidth(); + var outerWidth = $(window).width(); + var height = this.$element.outerHeight(); + var outerHeight = $(window).height(); + var left, top; + if (this.options.hOffset === 'auto') { + left = parseInt((outerWidth - width) / 2, 10); + } else { + left = parseInt(this.options.hOffset, 10); + } + if (this.options.vOffset === 'auto') { + if (height > outerHeight) { + top = parseInt(Math.min(100, outerHeight / 10), 10); + } else { + top = parseInt((outerHeight - height) / 4, 10); + } + } else { + top = parseInt(this.options.vOffset, 10); + } + this.$element.css({ top: top + 'px' }); + // only worry about left if we don't have an overlay or we havea horizontal offset, + // otherwise we're perfectly in the middle + if (!this.$overlay || this.options.hOffset !== 'auto') { + this.$element.css({ left: left + 'px' }); + this.$element.css({ margin: '0px' }); + } + } + + /** + * Adds event handlers for the modal. + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this2 = this; + + var _this = this; + + this.$element.on({ + 'open.zf.trigger': this.open.bind(this), + 'close.zf.trigger': function (event, $element) { + if (event.target === _this.$element[0] || $(event.target).parents('[data-closable]')[0] === $element) { + // only close reveal when it's explicitly called + return _this2.close.apply(_this2); + } + }, + 'toggle.zf.trigger': this.toggle.bind(this), + 'resizeme.zf.trigger': function () { + _this._updatePosition(); + } + }); + + if (this.$anchor.length) { + this.$anchor.on('keydown.zf.reveal', function (e) { + if (e.which === 13 || e.which === 32) { + e.stopPropagation(); + e.preventDefault(); + _this.open(); + } + }); + } + + if (this.options.closeOnClick && this.options.overlay) { + this.$overlay.off('.zf.reveal').on('click.zf.reveal', function (e) { + if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)) { + return; + } + _this.close(); + }); + } + if (this.options.deepLink) { + $(window).on('popstate.zf.reveal:' + this.id, this._handleState.bind(this)); + } + } + + /** + * Handles modal methods on back/forward button clicks or any other event that triggers popstate. + * @private + */ + + }, { + key: '_handleState', + value: function _handleState(e) { + if (window.location.hash === '#' + this.id && !this.isActive) { + this.open(); + } else { + this.close(); + } + } + + /** + * Opens the modal controlled by `this.$anchor`, and closes all others by default. + * @function + * @fires Reveal#closeme + * @fires Reveal#open + */ + + }, { + key: 'open', + value: function open() { + var _this3 = this; + + if (this.options.deepLink) { + var hash = '#' + this.id; + + if (window.history.pushState) { + window.history.pushState(null, null, hash); + } else { + window.location.hash = hash; + } + } + + this.isActive = true; + + // Make elements invisible, but remove display: none so we can get size and positioning + this.$element.css({ 'visibility': 'hidden' }).show().scrollTop(0); + if (this.options.overlay) { + this.$overlay.css({ 'visibility': 'hidden' }).show(); + } + + this._updatePosition(); + + this.$element.hide().css({ 'visibility': '' }); + + if (this.$overlay) { + this.$overlay.css({ 'visibility': '' }).hide(); + if (this.$element.hasClass('fast')) { + this.$overlay.addClass('fast'); + } else if (this.$element.hasClass('slow')) { + this.$overlay.addClass('slow'); + } + } + + if (!this.options.multipleOpened) { + /** + * Fires immediately before the modal opens. + * Closes any other modals that are currently open + * @event Reveal#closeme + */ + this.$element.trigger('closeme.zf.reveal', this.id); + } + // Motion UI method of reveal + if (this.options.animationIn) { + var _this; + + (function () { + var afterAnimationFocus = function () { + _this.$element.attr({ + 'aria-hidden': false, + 'tabindex': -1 + }).focus(); + console.log('focus'); + }; + + _this = _this3; + + if (_this3.options.overlay) { + Foundation.Motion.animateIn(_this3.$overlay, 'fade-in'); + } + Foundation.Motion.animateIn(_this3.$element, _this3.options.animationIn, function () { + _this3.focusableElements = Foundation.Keyboard.findFocusable(_this3.$element); + afterAnimationFocus(); + }); + })(); + } + // jQuery method of reveal + else { + if (this.options.overlay) { + this.$overlay.show(0); + } + this.$element.show(this.options.showDelay); + } + + // handle accessibility + this.$element.attr({ + 'aria-hidden': false, + 'tabindex': -1 + }).focus(); + + /** + * Fires when the modal has successfully opened. + * @event Reveal#open + */ + this.$element.trigger('open.zf.reveal'); + + if (this.isMobile) { + this.originalScrollPos = window.pageYOffset; + $('html, body').addClass('is-reveal-open'); + } else { + $('body').addClass('is-reveal-open'); + } + + setTimeout(function () { + _this3._extraHandlers(); + }, 0); + } + + /** + * Adds extra event handlers for the body and window if necessary. + * @private + */ + + }, { + key: '_extraHandlers', + value: function _extraHandlers() { + var _this = this; + this.focusableElements = Foundation.Keyboard.findFocusable(this.$element); + + if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) { + $('body').on('click.zf.reveal', function (e) { + if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)) { + return; + } + _this.close(); + }); + } + + if (this.options.closeOnEsc) { + $(window).on('keydown.zf.reveal', function (e) { + Foundation.Keyboard.handleKey(e, 'Reveal', { + close: function () { + if (_this.options.closeOnEsc) { + _this.close(); + _this.$anchor.focus(); + } + } + }); + }); + } + + // lock focus within modal while tabbing + this.$element.on('keydown.zf.reveal', function (e) { + var $target = $(this); + // handle keyboard event with keyboard util + Foundation.Keyboard.handleKey(e, 'Reveal', { + tab_forward: function () { + if (_this.$element.find(':focus').is(_this.focusableElements.eq(-1))) { + // left modal downwards, setting focus to first element + _this.focusableElements.eq(0).focus(); + return true; + } + if (_this.focusableElements.length === 0) { + // no focusable elements inside the modal at all, prevent tabbing in general + return true; + } + }, + tab_backward: function () { + if (_this.$element.find(':focus').is(_this.focusableElements.eq(0)) || _this.$element.is(':focus')) { + // left modal upwards, setting focus to last element + _this.focusableElements.eq(-1).focus(); + return true; + } + if (_this.focusableElements.length === 0) { + // no focusable elements inside the modal at all, prevent tabbing in general + return true; + } + }, + open: function () { + if (_this.$element.find(':focus').is(_this.$element.find('[data-close]'))) { + setTimeout(function () { + // set focus back to anchor if close button has been activated + _this.$anchor.focus(); + }, 1); + } else if ($target.is(_this.focusableElements)) { + // dont't trigger if acual element has focus (i.e. inputs, links, ...) + _this.open(); + } + }, + close: function () { + if (_this.options.closeOnEsc) { + _this.close(); + _this.$anchor.focus(); + } + }, + handled: function (preventDefault) { + if (preventDefault) { + e.preventDefault(); + } + } + }); + }); + } + + /** + * Closes the modal. + * @function + * @fires Reveal#closed + */ + + }, { + key: 'close', + value: function close() { + if (!this.isActive || !this.$element.is(':visible')) { + return false; + } + var _this = this; + + // Motion UI method of hiding + if (this.options.animationOut) { + if (this.options.overlay) { + Foundation.Motion.animateOut(this.$overlay, 'fade-out', finishUp); + } else { + finishUp(); + } + + Foundation.Motion.animateOut(this.$element, this.options.animationOut); + } + // jQuery method of hiding + else { + if (this.options.overlay) { + this.$overlay.hide(0, finishUp); + } else { + finishUp(); + } + + this.$element.hide(this.options.hideDelay); + } + + // Conditionals to remove extra event listeners added on open + if (this.options.closeOnEsc) { + $(window).off('keydown.zf.reveal'); + } + + if (!this.options.overlay && this.options.closeOnClick) { + $('body').off('click.zf.reveal'); + } + + this.$element.off('keydown.zf.reveal'); + + function finishUp() { + if (_this.isMobile) { + $('html, body').removeClass('is-reveal-open'); + if (_this.originalScrollPos) { + $('body').scrollTop(_this.originalScrollPos); + _this.originalScrollPos = null; + } + } else { + $('body').removeClass('is-reveal-open'); + } + + _this.$element.attr('aria-hidden', true); + + /** + * Fires when the modal is done closing. + * @event Reveal#closed + */ + _this.$element.trigger('closed.zf.reveal'); + } + + /** + * Resets the modal content + * This prevents a running video to keep going in the background + */ + if (this.options.resetOnClose) { + this.$element.html(this.$element.html()); + } + + this.isActive = false; + if (_this.options.deepLink) { + if (window.history.replaceState) { + window.history.replaceState("", document.title, window.location.pathname); + } else { + window.location.hash = ''; + } + } + } + + /** + * Toggles the open/closed state of a modal. + * @function + */ + + }, { + key: 'toggle', + value: function toggle() { + if (this.isActive) { + this.close(); + } else { + this.open(); + } + } + }, { + key: 'destroy', + + + /** + * Destroys an instance of a modal. + * @function + */ + value: function destroy() { + if (this.options.overlay) { + this.$element.appendTo($('body')); // move $element outside of $overlay to prevent error unregisterPlugin() + this.$overlay.hide().off().remove(); + } + this.$element.hide().off(); + this.$anchor.off('.zf'); + $(window).off('.zf.reveal:' + this.id); + + Foundation.unregisterPlugin(this); + } + }]); + + return Reveal; + }(); + + Reveal.defaults = { + /** + * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide. + * @option + * @example 'slide-in-left' + */ + animationIn: '', + /** + * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide. + * @option + * @example 'slide-out-right' + */ + animationOut: '', + /** + * Time, in ms, to delay the opening of a modal after a click if no animation used. + * @option + * @example 10 + */ + showDelay: 0, + /** + * Time, in ms, to delay the closing of a modal after a click if no animation used. + * @option + * @example 10 + */ + hideDelay: 0, + /** + * Allows a click on the body/overlay to close the modal. + * @option + * @example true + */ + closeOnClick: true, + /** + * Allows the modal to close if the user presses the `ESCAPE` key. + * @option + * @example true + */ + closeOnEsc: true, + /** + * If true, allows multiple modals to be displayed at once. + * @option + * @example false + */ + multipleOpened: false, + /** + * Distance, in pixels, the modal should push down from the top of the screen. + * @option + * @example auto + */ + vOffset: 'auto', + /** + * Distance, in pixels, the modal should push in from the side of the screen. + * @option + * @example auto + */ + hOffset: 'auto', + /** + * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well. + * @option + * @example false + */ + fullScreen: false, + /** + * Percentage of screen height the modal should push up from the bottom of the view. + * @option + * @example 10 + */ + btmOffsetPct: 10, + /** + * Allows the modal to generate an overlay div, which will cover the view when modal opens. + * @option + * @example true + */ + overlay: true, + /** + * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background. + * @option + * @example false + */ + resetOnClose: false, + /** + * Allows the modal to alter the url on open/close, and allows the use of the `back` button to close modals. ALSO, allows a modal to auto-maniacally open on page load IF the hash === the modal's user-set id. + * @option + * @example false + */ + deepLink: false + }; + + // Window exports + Foundation.plugin(Reveal, 'Reveal'); + + function iPhoneSniff() { + return (/iP(ad|hone|od).*OS/.test(window.navigator.userAgent) + ); + } + + function androidSniff() { + return (/Android/.test(window.navigator.userAgent) + ); + } + + function mobileSniff() { + return iPhoneSniff() || androidSniff(); + } +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.slider.js b/libraries/foundation-6/js/plugins/foundation.slider.js new file mode 100755 index 00000000..3cbc0374 --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.slider.js @@ -0,0 +1,648 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Slider module. + * @module foundation.slider + * @requires foundation.util.motion + * @requires foundation.util.triggers + * @requires foundation.util.keyboard + * @requires foundation.util.touch + */ + + var Slider = function () { + /** + * Creates a new instance of a drilldown menu. + * @class + * @param {jQuery} element - jQuery object to make into an accordion menu. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Slider(element, options) { + _classCallCheck(this, Slider); + + this.$element = element; + this.options = $.extend({}, Slider.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Slider'); + Foundation.Keyboard.register('Slider', { + 'ltr': { + 'ARROW_RIGHT': 'increase', + 'ARROW_UP': 'increase', + 'ARROW_DOWN': 'decrease', + 'ARROW_LEFT': 'decrease', + 'SHIFT_ARROW_RIGHT': 'increase_fast', + 'SHIFT_ARROW_UP': 'increase_fast', + 'SHIFT_ARROW_DOWN': 'decrease_fast', + 'SHIFT_ARROW_LEFT': 'decrease_fast' + }, + 'rtl': { + 'ARROW_LEFT': 'increase', + 'ARROW_RIGHT': 'decrease', + 'SHIFT_ARROW_LEFT': 'increase_fast', + 'SHIFT_ARROW_RIGHT': 'decrease_fast' + } + }); + } + + /** + * Initilizes the plugin by reading/setting attributes, creating collections and setting the initial position of the handle(s). + * @function + * @private + */ + + + _createClass(Slider, [{ + key: '_init', + value: function _init() { + this.inputs = this.$element.find('input'); + this.handles = this.$element.find('[data-slider-handle]'); + + this.$handle = this.handles.eq(0); + this.$input = this.inputs.length ? this.inputs.eq(0) : $('#' + this.$handle.attr('aria-controls')); + this.$fill = this.$element.find('[data-slider-fill]').css(this.options.vertical ? 'height' : 'width', 0); + + var isDbl = false, + _this = this; + if (this.options.disabled || this.$element.hasClass(this.options.disabledClass)) { + this.options.disabled = true; + this.$element.addClass(this.options.disabledClass); + } + if (!this.inputs.length) { + this.inputs = $().add(this.$input); + this.options.binding = true; + } + this._setInitAttr(0); + this._events(this.$handle); + + if (this.handles[1]) { + this.options.doubleSided = true; + this.$handle2 = this.handles.eq(1); + this.$input2 = this.inputs.length > 1 ? this.inputs.eq(1) : $('#' + this.$handle2.attr('aria-controls')); + + if (!this.inputs[1]) { + this.inputs = this.inputs.add(this.$input2); + } + isDbl = true; + + this._setHandlePos(this.$handle, this.options.initialStart, true, function () { + + _this._setHandlePos(_this.$handle2, _this.options.initialEnd, true); + }); + // this.$handle.triggerHandler('click.zf.slider'); + this._setInitAttr(1); + this._events(this.$handle2); + } + + if (!isDbl) { + this._setHandlePos(this.$handle, this.options.initialStart, true); + } + } + + /** + * Sets the position of the selected handle and fill bar. + * @function + * @private + * @param {jQuery} $hndl - the selected handle to move. + * @param {Number} location - floating point between the start and end values of the slider bar. + * @param {Function} cb - callback function to fire on completion. + * @fires Slider#moved + * @fires Slider#changed + */ + + }, { + key: '_setHandlePos', + value: function _setHandlePos($hndl, location, noInvert, cb) { + // don't move if the slider has been disabled since its initialization + if (this.$element.hasClass(this.options.disabledClass)) { + return; + } + //might need to alter that slightly for bars that will have odd number selections. + location = parseFloat(location); //on input change events, convert string to number...grumble. + + // prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max + if (location < this.options.start) { + location = this.options.start; + } else if (location > this.options.end) { + location = this.options.end; + } + + var isDbl = this.options.doubleSided; + + if (isDbl) { + //this block is to prevent 2 handles from crossing eachother. Could/should be improved. + if (this.handles.index($hndl) === 0) { + var h2Val = parseFloat(this.$handle2.attr('aria-valuenow')); + location = location >= h2Val ? h2Val - this.options.step : location; + } else { + var h1Val = parseFloat(this.$handle.attr('aria-valuenow')); + location = location <= h1Val ? h1Val + this.options.step : location; + } + } + + //this is for single-handled vertical sliders, it adjusts the value to account for the slider being "upside-down" + //for click and drag events, it's weird due to the scale(-1, 1) css property + if (this.options.vertical && !noInvert) { + location = this.options.end - location; + } + + var _this = this, + vert = this.options.vertical, + hOrW = vert ? 'height' : 'width', + lOrT = vert ? 'top' : 'left', + handleDim = $hndl[0].getBoundingClientRect()[hOrW], + elemDim = this.$element[0].getBoundingClientRect()[hOrW], + + //percentage of bar min/max value based on click or drag point + pctOfBar = percent(location - this.options.start, this.options.end - this.options.start).toFixed(2), + + //number of actual pixels to shift the handle, based on the percentage obtained above + pxToMove = (elemDim - handleDim) * pctOfBar, + + //percentage of bar to shift the handle + movement = (percent(pxToMove, elemDim) * 100).toFixed(this.options.decimal); + //fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value + location = parseFloat(location.toFixed(this.options.decimal)); + // declare empty object for css adjustments, only used with 2 handled-sliders + var css = {}; + + this._setValues($hndl, location); + + // TODO update to calculate based on values set to respective inputs?? + if (isDbl) { + var isLeftHndl = this.handles.index($hndl) === 0, + + //empty variable, will be used for min-height/width for fill bar + dim, + + //percentage w/h of the handle compared to the slider bar + handlePct = ~ ~(percent(handleDim, elemDim) * 100); + //if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar + if (isLeftHndl) { + //left or top percentage value to apply to the fill bar. + css[lOrT] = movement + '%'; + //calculate the new min-height/width for the fill bar. + dim = parseFloat(this.$handle2[0].style[lOrT]) - movement + handlePct; + //this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider + //plus, it means we don't care if 'dim' isNaN on init, it won't be in the future. + if (cb && typeof cb === 'function') { + cb(); + } //this is only needed for the initialization of 2 handled sliders + } else { + //just caching the value of the left/bottom handle's left/top property + var handlePos = parseFloat(this.$handle[0].style[lOrT]); + //calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0 + //based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself + dim = movement - (isNaN(handlePos) ? this.options.initialStart / ((this.options.end - this.options.start) / 100) : handlePos) + handlePct; + } + // assign the min-height/width to our css object + css['min-' + hOrW] = dim + '%'; + } + + this.$element.one('finished.zf.animate', function () { + /** + * Fires when the handle is done moving. + * @event Slider#moved + */ + _this.$element.trigger('moved.zf.slider', [$hndl]); + }); + + //because we don't know exactly how the handle will be moved, check the amount of time it should take to move. + var moveTime = this.$element.data('dragging') ? 1000 / 60 : this.options.moveTime; + + Foundation.Move(moveTime, $hndl, function () { + //adjusting the left/top property of the handle, based on the percentage calculated above + $hndl.css(lOrT, movement + '%'); + + if (!_this.options.doubleSided) { + //if single-handled, a simple method to expand the fill bar + _this.$fill.css(hOrW, pctOfBar * 100 + '%'); + } else { + //otherwise, use the css object we created above + _this.$fill.css(css); + } + }); + + /** + * Fires when the value has not been change for a given time. + * @event Slider#changed + */ + clearTimeout(_this.timeout); + _this.timeout = setTimeout(function () { + _this.$element.trigger('changed.zf.slider', [$hndl]); + }, _this.options.changedDelay); + } + + /** + * Sets the initial attribute for the slider element. + * @function + * @private + * @param {Number} idx - index of the current handle/input to use. + */ + + }, { + key: '_setInitAttr', + value: function _setInitAttr(idx) { + var id = this.inputs.eq(idx).attr('id') || Foundation.GetYoDigits(6, 'slider'); + this.inputs.eq(idx).attr({ + 'id': id, + 'max': this.options.end, + 'min': this.options.start, + 'step': this.options.step + }); + this.handles.eq(idx).attr({ + 'role': 'slider', + 'aria-controls': id, + 'aria-valuemax': this.options.end, + 'aria-valuemin': this.options.start, + 'aria-valuenow': idx === 0 ? this.options.initialStart : this.options.initialEnd, + 'aria-orientation': this.options.vertical ? 'vertical' : 'horizontal', + 'tabindex': 0 + }); + } + + /** + * Sets the input and `aria-valuenow` values for the slider element. + * @function + * @private + * @param {jQuery} $handle - the currently selected handle. + * @param {Number} val - floating point of the new value. + */ + + }, { + key: '_setValues', + value: function _setValues($handle, val) { + var idx = this.options.doubleSided ? this.handles.index($handle) : 0; + this.inputs.eq(idx).val(val); + $handle.attr('aria-valuenow', val); + } + + /** + * Handles events on the slider element. + * Calculates the new location of the current handle. + * If there are two handles and the bar was clicked, it determines which handle to move. + * @function + * @private + * @param {Object} e - the `event` object passed from the listener. + * @param {jQuery} $handle - the current handle to calculate for, if selected. + * @param {Number} val - floating point number for the new value of the slider. + * TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn. + */ + + }, { + key: '_handleEvent', + value: function _handleEvent(e, $handle, val) { + var value, hasVal; + if (!val) { + //click or drag events + e.preventDefault(); + var _this = this, + vertical = this.options.vertical, + param = vertical ? 'height' : 'width', + direction = vertical ? 'top' : 'left', + eventOffset = vertical ? e.pageY : e.pageX, + halfOfHandle = this.$handle[0].getBoundingClientRect()[param] / 2, + barDim = this.$element[0].getBoundingClientRect()[param], + windowScroll = vertical ? $(window).scrollTop() : $(window).scrollLeft(); + + var elemOffset = this.$element.offset()[direction]; + + // touch events emulated by the touch util give position relative to screen, add window.scroll to event coordinates... + // best way to guess this is simulated is if clientY == pageY + if (e.clientY === e.pageY) { + eventOffset = eventOffset + windowScroll; + } + var eventFromBar = eventOffset - elemOffset; + var barXY; + if (eventFromBar < 0) { + barXY = 0; + } else if (eventFromBar > barDim) { + barXY = barDim; + } else { + barXY = eventFromBar; + } + offsetPct = percent(barXY, barDim); + + value = (this.options.end - this.options.start) * offsetPct + this.options.start; + + // turn everything around for RTL, yay math! + if (Foundation.rtl() && !this.options.vertical) { + value = this.options.end - value; + } + + value = _this._adjustValue(null, value); + //boolean flag for the setHandlePos fn, specifically for vertical sliders + hasVal = false; + + if (!$handle) { + //figure out which handle it is, pass it to the next function. + var firstHndlPos = absPosition(this.$handle, direction, barXY, param), + secndHndlPos = absPosition(this.$handle2, direction, barXY, param); + $handle = firstHndlPos <= secndHndlPos ? this.$handle : this.$handle2; + } + } else { + //change event on input + value = this._adjustValue(null, val); + hasVal = true; + } + + this._setHandlePos($handle, value, hasVal); + } + + /** + * Adjustes value for handle in regard to step value. returns adjusted value + * @function + * @private + * @param {jQuery} $handle - the selected handle. + * @param {Number} value - value to adjust. used if $handle is falsy + */ + + }, { + key: '_adjustValue', + value: function _adjustValue($handle, value) { + var val, + step = this.options.step, + div = parseFloat(step / 2), + left, + prev_val, + next_val; + if (!!$handle) { + val = parseFloat($handle.attr('aria-valuenow')); + } else { + val = value; + } + left = val % step; + prev_val = val - left; + next_val = prev_val + step; + if (left === 0) { + return val; + } + val = val >= prev_val + div ? next_val : prev_val; + return val; + } + + /** + * Adds event listeners to the slider elements. + * @function + * @private + * @param {jQuery} $handle - the current handle to apply listeners to. + */ + + }, { + key: '_events', + value: function _events($handle) { + var _this = this, + curHandle, + timer; + + this.inputs.off('change.zf.slider').on('change.zf.slider', function (e) { + var idx = _this.inputs.index($(this)); + _this._handleEvent(e, _this.handles.eq(idx), $(this).val()); + }); + + if (this.options.clickSelect) { + this.$element.off('click.zf.slider').on('click.zf.slider', function (e) { + if (_this.$element.data('dragging')) { + return false; + } + + if (!$(e.target).is('[data-slider-handle]')) { + if (_this.options.doubleSided) { + _this._handleEvent(e); + } else { + _this._handleEvent(e, _this.$handle); + } + } + }); + } + + if (this.options.draggable) { + this.handles.addTouch(); + + var $body = $('body'); + $handle.off('mousedown.zf.slider').on('mousedown.zf.slider', function (e) { + $handle.addClass('is-dragging'); + _this.$fill.addClass('is-dragging'); // + _this.$element.data('dragging', true); + + curHandle = $(e.currentTarget); + + $body.on('mousemove.zf.slider', function (e) { + e.preventDefault(); + _this._handleEvent(e, curHandle); + }).on('mouseup.zf.slider', function (e) { + _this._handleEvent(e, curHandle); + + $handle.removeClass('is-dragging'); + _this.$fill.removeClass('is-dragging'); + _this.$element.data('dragging', false); + + $body.off('mousemove.zf.slider mouseup.zf.slider'); + }); + }) + // prevent events triggered by touch + .on('selectstart.zf.slider touchmove.zf.slider', function (e) { + e.preventDefault(); + }); + } + + $handle.off('keydown.zf.slider').on('keydown.zf.slider', function (e) { + var _$handle = $(this), + idx = _this.options.doubleSided ? _this.handles.index(_$handle) : 0, + oldValue = parseFloat(_this.inputs.eq(idx).val()), + newValue; + + // handle keyboard event with keyboard util + Foundation.Keyboard.handleKey(e, 'Slider', { + decrease: function () { + newValue = oldValue - _this.options.step; + }, + increase: function () { + newValue = oldValue + _this.options.step; + }, + decrease_fast: function () { + newValue = oldValue - _this.options.step * 10; + }, + increase_fast: function () { + newValue = oldValue + _this.options.step * 10; + }, + handled: function () { + // only set handle pos when event was handled specially + e.preventDefault(); + _this._setHandlePos(_$handle, newValue, true); + } + }); + /*if (newValue) { // if pressed key has special function, update value + e.preventDefault(); + _this._setHandlePos(_$handle, newValue); + }*/ + }); + } + + /** + * Destroys the slider plugin. + */ + + }, { + key: 'destroy', + value: function destroy() { + this.handles.off('.zf.slider'); + this.inputs.off('.zf.slider'); + this.$element.off('.zf.slider'); + + Foundation.unregisterPlugin(this); + } + }]); + + return Slider; + }(); + + Slider.defaults = { + /** + * Minimum value for the slider scale. + * @option + * @example 0 + */ + start: 0, + /** + * Maximum value for the slider scale. + * @option + * @example 100 + */ + end: 100, + /** + * Minimum value change per change event. + * @option + * @example 1 + */ + step: 1, + /** + * Value at which the handle/input *(left handle/first input)* should be set to on initialization. + * @option + * @example 0 + */ + initialStart: 0, + /** + * Value at which the right handle/second input should be set to on initialization. + * @option + * @example 100 + */ + initialEnd: 100, + /** + * Allows the input to be located outside the container and visible. Set to by the JS + * @option + * @example false + */ + binding: false, + /** + * Allows the user to click/tap on the slider bar to select a value. + * @option + * @example true + */ + clickSelect: true, + /** + * Set to true and use the `vertical` class to change alignment to vertical. + * @option + * @example false + */ + vertical: false, + /** + * Allows the user to drag the slider handle(s) to select a value. + * @option + * @example true + */ + draggable: true, + /** + * Disables the slider and prevents event listeners from being applied. Double checked by JS with `disabledClass`. + * @option + * @example false + */ + disabled: false, + /** + * Allows the use of two handles. Double checked by the JS. Changes some logic handling. + * @option + * @example false + */ + doubleSided: false, + /** + * Potential future feature. + */ + // steps: 100, + /** + * Number of decimal places the plugin should go to for floating point precision. + * @option + * @example 2 + */ + decimal: 2, + /** + * Time delay for dragged elements. + */ + // dragDelay: 0, + /** + * Time, in ms, to animate the movement of a slider handle if user clicks/taps on the bar. Needs to be manually set if updating the transition time in the Sass settings. + * @option + * @example 200 + */ + moveTime: 200, //update this if changing the transition time in the sass + /** + * Class applied to disabled sliders. + * @option + * @example 'disabled' + */ + disabledClass: 'disabled', + /** + * Will invert the default layout for a vertical<span data-tooltip title="who would do this???"> </span>slider. + * @option + * @example false + */ + invertVertical: false, + /** + * Milliseconds before the `changed.zf-slider` event is triggered after value change. + * @option + * @example 500 + */ + changedDelay: 500 + }; + + function percent(frac, num) { + return frac / num; + } + function absPosition($handle, dir, clickPos, param) { + return Math.abs($handle.position()[dir] + $handle[param]() / 2 - clickPos); + } + + // Window exports + Foundation.plugin(Slider, 'Slider'); +}(jQuery); + +//*********this is in case we go to static, absolute positions instead of dynamic positioning******** +// this.setSteps(function() { +// _this._events(); +// var initStart = _this.options.positions[_this.options.initialStart - 1] || null; +// var initEnd = _this.options.initialEnd ? _this.options.position[_this.options.initialEnd - 1] : null; +// if (initStart || initEnd) { +// _this._handleEvent(initStart, initEnd); +// } +// }); + +//***********the other part of absolute positions************* +// Slider.prototype.setSteps = function(cb) { +// var posChange = this.$element.outerWidth() / this.options.steps; +// var counter = 0 +// while(counter < this.options.steps) { +// if (counter) { +// this.options.positions.push(this.options.positions[counter - 1] + posChange); +// } else { +// this.options.positions.push(posChange); +// } +// counter++; +// } +// cb(); +// }; \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.sticky.js b/libraries/foundation-6/js/plugins/foundation.sticky.js new file mode 100755 index 00000000..d1a4689d --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.sticky.js @@ -0,0 +1,495 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Sticky module. + * @module foundation.sticky + * @requires foundation.util.triggers + * @requires foundation.util.mediaQuery + */ + + var Sticky = function () { + /** + * Creates a new instance of a sticky thing. + * @class + * @param {jQuery} element - jQuery object to make sticky. + * @param {Object} options - options object passed when creating the element programmatically. + */ + + function Sticky(element, options) { + _classCallCheck(this, Sticky); + + this.$element = element; + this.options = $.extend({}, Sticky.defaults, this.$element.data(), options); + + this._init(); + + Foundation.registerPlugin(this, 'Sticky'); + } + + /** + * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes + * @function + * @private + */ + + + _createClass(Sticky, [{ + key: '_init', + value: function _init() { + var $parent = this.$element.parent('[data-sticky-container]'), + id = this.$element[0].id || Foundation.GetYoDigits(6, 'sticky'), + _this = this; + + if (!$parent.length) { + this.wasWrapped = true; + } + this.$container = $parent.length ? $parent : $(this.options.container).wrapInner(this.$element); + this.$container.addClass(this.options.containerClass); + + this.$element.addClass(this.options.stickyClass).attr({ 'data-resize': id }); + + this.scrollCount = this.options.checkEvery; + this.isStuck = false; + $(window).one('load.zf.sticky', function () { + if (_this.options.anchor !== '') { + _this.$anchor = $('#' + _this.options.anchor); + } else { + _this._parsePoints(); + } + + _this._setSizes(function () { + _this._calc(false); + }); + _this._events(id.split('-').reverse().join('-')); + }); + } + + /** + * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on. + * @function + * @private + */ + + }, { + key: '_parsePoints', + value: function _parsePoints() { + var top = this.options.topAnchor == "" ? 1 : this.options.topAnchor, + btm = this.options.btmAnchor == "" ? document.documentElement.scrollHeight : this.options.btmAnchor, + pts = [top, btm], + breaks = {}; + for (var i = 0, len = pts.length; i < len && pts[i]; i++) { + var pt; + if (typeof pts[i] === 'number') { + pt = pts[i]; + } else { + var place = pts[i].split(':'), + anchor = $('#' + place[0]); + + pt = anchor.offset().top; + if (place[1] && place[1].toLowerCase() === 'bottom') { + pt += anchor[0].getBoundingClientRect().height; + } + } + breaks[i] = pt; + } + + this.points = breaks; + return; + } + + /** + * Adds event handlers for the scrolling element. + * @private + * @param {String} id - psuedo-random id for unique scroll event listener. + */ + + }, { + key: '_events', + value: function _events(id) { + var _this = this, + scrollListener = this.scrollListener = 'scroll.zf.' + id; + if (this.isOn) { + return; + } + if (this.canStick) { + this.isOn = true; + $(window).off(scrollListener).on(scrollListener, function (e) { + if (_this.scrollCount === 0) { + _this.scrollCount = _this.options.checkEvery; + _this._setSizes(function () { + _this._calc(false, window.pageYOffset); + }); + } else { + _this.scrollCount--; + _this._calc(false, window.pageYOffset); + } + }); + } + + this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', function (e, el) { + _this._setSizes(function () { + _this._calc(false); + if (_this.canStick) { + if (!_this.isOn) { + _this._events(id); + } + } else if (_this.isOn) { + _this._pauseListeners(scrollListener); + } + }); + }); + } + + /** + * Removes event handlers for scroll and change events on anchor. + * @fires Sticky#pause + * @param {String} scrollListener - unique, namespaced scroll listener attached to `window` + */ + + }, { + key: '_pauseListeners', + value: function _pauseListeners(scrollListener) { + this.isOn = false; + $(window).off(scrollListener); + + /** + * Fires when the plugin is paused due to resize event shrinking the view. + * @event Sticky#pause + * @private + */ + this.$element.trigger('pause.zf.sticky'); + } + + /** + * Called on every `scroll` event and on `_init` + * fires functions based on booleans and cached values + * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints. + * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`. + */ + + }, { + key: '_calc', + value: function _calc(checkSizes, scroll) { + if (checkSizes) { + this._setSizes(); + } + + if (!this.canStick) { + if (this.isStuck) { + this._removeSticky(true); + } + return false; + } + + if (!scroll) { + scroll = window.pageYOffset; + } + + if (scroll >= this.topPoint) { + if (scroll <= this.bottomPoint) { + if (!this.isStuck) { + this._setSticky(); + } + } else { + if (this.isStuck) { + this._removeSticky(false); + } + } + } else { + if (this.isStuck) { + this._removeSticky(true); + } + } + } + + /** + * Causes the $element to become stuck. + * Adds `position: fixed;`, and helper classes. + * @fires Sticky#stuckto + * @function + * @private + */ + + }, { + key: '_setSticky', + value: function _setSticky() { + var _this = this, + stickTo = this.options.stickTo, + mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom', + notStuckTo = stickTo === 'top' ? 'bottom' : 'top', + css = {}; + + css[mrgn] = this.options[mrgn] + 'em'; + css[stickTo] = 0; + css[notStuckTo] = 'auto'; + css['left'] = this.$container.offset().left + parseInt(window.getComputedStyle(this.$container[0])["padding-left"], 10); + this.isStuck = true; + this.$element.removeClass('is-anchored is-at-' + notStuckTo).addClass('is-stuck is-at-' + stickTo).css(css) + /** + * Fires when the $element has become `position: fixed;` + * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top` + * @event Sticky#stuckto + */ + .trigger('sticky.zf.stuckto:' + stickTo); + this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd", function () { + _this._setSizes(); + }); + } + + /** + * Causes the $element to become unstuck. + * Removes `position: fixed;`, and helper classes. + * Adds other helper classes. + * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element. + * @fires Sticky#unstuckfrom + * @private + */ + + }, { + key: '_removeSticky', + value: function _removeSticky(isTop) { + var stickTo = this.options.stickTo, + stickToTop = stickTo === 'top', + css = {}, + anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight, + mrgn = stickToTop ? 'marginTop' : 'marginBottom', + notStuckTo = stickToTop ? 'bottom' : 'top', + topOrBottom = isTop ? 'top' : 'bottom'; + + css[mrgn] = 0; + + css['bottom'] = 'auto'; + if (isTop) { + css['top'] = 0; + } else { + css['top'] = anchorPt; + } + + css['left'] = ''; + this.isStuck = false; + this.$element.removeClass('is-stuck is-at-' + stickTo).addClass('is-anchored is-at-' + topOrBottom).css(css) + /** + * Fires when the $element has become anchored. + * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom` + * @event Sticky#unstuckfrom + */ + .trigger('sticky.zf.unstuckfrom:' + topOrBottom); + } + + /** + * Sets the $element and $container sizes for plugin. + * Calls `_setBreakPoints`. + * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`. + * @private + */ + + }, { + key: '_setSizes', + value: function _setSizes(cb) { + this.canStick = Foundation.MediaQuery.atLeast(this.options.stickyOn); + if (!this.canStick) { + cb(); + } + var _this = this, + newElemWidth = this.$container[0].getBoundingClientRect().width, + comp = window.getComputedStyle(this.$container[0]), + pdng = parseInt(comp['padding-right'], 10); + + if (this.$anchor && this.$anchor.length) { + this.anchorHeight = this.$anchor[0].getBoundingClientRect().height; + } else { + this._parsePoints(); + } + + this.$element.css({ + 'max-width': newElemWidth - pdng + 'px' + }); + + var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight; + if (this.$element.css("display") == "none") { + newContainerHeight = 0; + } + this.containerHeight = newContainerHeight; + this.$container.css({ + height: newContainerHeight + }); + this.elemHeight = newContainerHeight; + + if (this.isStuck) { + this.$element.css({ "left": this.$container.offset().left + parseInt(comp['padding-left'], 10) }); + } + + this._setBreakPoints(newContainerHeight, function () { + if (cb) { + cb(); + } + }); + } + + /** + * Sets the upper and lower breakpoints for the element to become sticky/unsticky. + * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`. + * @param {Function} cb - optional callback function to be called on completion. + * @private + */ + + }, { + key: '_setBreakPoints', + value: function _setBreakPoints(elemHeight, cb) { + if (!this.canStick) { + if (cb) { + cb(); + } else { + return false; + } + } + var mTop = emCalc(this.options.marginTop), + mBtm = emCalc(this.options.marginBottom), + topPoint = this.points ? this.points[0] : this.$anchor.offset().top, + bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight, + + // topPoint = this.$anchor.offset().top || this.points[0], + // bottomPoint = topPoint + this.anchorHeight || this.points[1], + winHeight = window.innerHeight; + + if (this.options.stickTo === 'top') { + topPoint -= mTop; + bottomPoint -= elemHeight + mTop; + } else if (this.options.stickTo === 'bottom') { + topPoint -= winHeight - (elemHeight + mBtm); + bottomPoint -= winHeight - mBtm; + } else { + //this would be the stickTo: both option... tricky + } + + this.topPoint = topPoint; + this.bottomPoint = bottomPoint; + + if (cb) { + cb(); + } + } + + /** + * Destroys the current sticky element. + * Resets the element to the top position first. + * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this._removeSticky(true); + + this.$element.removeClass(this.options.stickyClass + ' is-anchored is-at-top').css({ + height: '', + top: '', + bottom: '', + 'max-width': '' + }).off('resizeme.zf.trigger'); + if (this.$anchor && this.$anchor.length) { + this.$anchor.off('change.zf.sticky'); + } + $(window).off(this.scrollListener); + + if (this.wasWrapped) { + this.$element.unwrap(); + } else { + this.$container.removeClass(this.options.containerClass).css({ + height: '' + }); + } + Foundation.unregisterPlugin(this); + } + }]); + + return Sticky; + }(); + + Sticky.defaults = { + /** + * Customizable container template. Add your own classes for styling and sizing. + * @option + * @example '<div data-sticky-container class="small-6 columns"></div>' + */ + container: '<div data-sticky-container></div>', + /** + * Location in the view the element sticks to. + * @option + * @example 'top' + */ + stickTo: 'top', + /** + * If anchored to a single element, the id of that element. + * @option + * @example 'exampleId' + */ + anchor: '', + /** + * If using more than one element as anchor points, the id of the top anchor. + * @option + * @example 'exampleId:top' + */ + topAnchor: '', + /** + * If using more than one element as anchor points, the id of the bottom anchor. + * @option + * @example 'exampleId:bottom' + */ + btmAnchor: '', + /** + * Margin, in `em`'s to apply to the top of the element when it becomes sticky. + * @option + * @example 1 + */ + marginTop: 1, + /** + * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky. + * @option + * @example 1 + */ + marginBottom: 1, + /** + * Breakpoint string that is the minimum screen size an element should become sticky. + * @option + * @example 'medium' + */ + stickyOn: 'medium', + /** + * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`. + * @option + * @example 'sticky' + */ + stickyClass: 'sticky', + /** + * Class applied to sticky container. Foundation defaults to `sticky-container`. + * @option + * @example 'sticky-container' + */ + containerClass: 'sticky-container', + /** + * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll. + * @option + * @example 50 + */ + checkEvery: -1 + }; + + /** + * Helper function to calculate em values + * @param Number {em} - number of em's to calculate into pixels + */ + function emCalc(em) { + return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em; + } + + // Window exports + Foundation.plugin(Sticky, 'Sticky'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.tabs.js b/libraries/foundation-6/js/plugins/foundation.tabs.js new file mode 100755 index 00000000..47e25b5e --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.tabs.js @@ -0,0 +1,348 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Tabs module. + * @module foundation.tabs + * @requires foundation.util.keyboard + * @requires foundation.util.timerAndImageLoader if tabs contain images + */ + + var Tabs = function () { + /** + * Creates a new instance of tabs. + * @class + * @fires Tabs#init + * @param {jQuery} element - jQuery object to make into tabs. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Tabs(element, options) { + _classCallCheck(this, Tabs); + + this.$element = element; + this.options = $.extend({}, Tabs.defaults, this.$element.data(), options); + + this._init(); + Foundation.registerPlugin(this, 'Tabs'); + Foundation.Keyboard.register('Tabs', { + 'ENTER': 'open', + 'SPACE': 'open', + 'ARROW_RIGHT': 'next', + 'ARROW_UP': 'previous', + 'ARROW_DOWN': 'next', + 'ARROW_LEFT': 'previous' + // 'TAB': 'next', + // 'SHIFT_TAB': 'previous' + }); + } + + /** + * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab. + * @private + */ + + + _createClass(Tabs, [{ + key: '_init', + value: function _init() { + var _this = this; + + this.$tabTitles = this.$element.find('.' + this.options.linkClass); + this.$tabContent = $('[data-tabs-content="' + this.$element[0].id + '"]'); + + this.$tabTitles.each(function () { + var $elem = $(this), + $link = $elem.find('a'), + isActive = $elem.hasClass('is-active'), + hash = $link[0].hash.slice(1), + linkId = $link[0].id ? $link[0].id : hash + '-label', + $tabContent = $('#' + hash); + + $elem.attr({ 'role': 'presentation' }); + + $link.attr({ + 'role': 'tab', + 'aria-controls': hash, + 'aria-selected': isActive, + 'id': linkId + }); + + $tabContent.attr({ + 'role': 'tabpanel', + 'aria-hidden': !isActive, + 'aria-labelledby': linkId + }); + + if (isActive && _this.options.autoFocus) { + $link.focus(); + } + }); + + if (this.options.matchHeight) { + var $images = this.$tabContent.find('img'); + + if ($images.length) { + Foundation.onImagesLoaded($images, this._setHeight.bind(this)); + } else { + this._setHeight(); + } + } + + this._events(); + } + + /** + * Adds event handlers for items within the tabs. + * @private + */ + + }, { + key: '_events', + value: function _events() { + this._addKeyHandler(); + this._addClickHandler(); + this._setHeightMqHandler = null; + + if (this.options.matchHeight) { + this._setHeightMqHandler = this._setHeight.bind(this); + + $(window).on('changed.zf.mediaquery', this._setHeightMqHandler); + } + } + + /** + * Adds click handlers for items within the tabs. + * @private + */ + + }, { + key: '_addClickHandler', + value: function _addClickHandler() { + var _this = this; + + this.$element.off('click.zf.tabs').on('click.zf.tabs', '.' + this.options.linkClass, function (e) { + e.preventDefault(); + e.stopPropagation(); + if ($(this).hasClass('is-active')) { + return; + } + _this._handleTabChange($(this)); + }); + } + + /** + * Adds keyboard event handlers for items within the tabs. + * @private + */ + + }, { + key: '_addKeyHandler', + value: function _addKeyHandler() { + var _this = this; + var $firstTab = _this.$element.find('li:first-of-type'); + var $lastTab = _this.$element.find('li:last-of-type'); + + this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function (e) { + if (e.which === 9) return; + + var $element = $(this), + $elements = $element.parent('ul').children('li'), + $prevElement, + $nextElement; + + $elements.each(function (i) { + if ($(this).is($element)) { + if (_this.options.wrapOnKeys) { + $prevElement = i === 0 ? $elements.last() : $elements.eq(i - 1); + $nextElement = i === $elements.length - 1 ? $elements.first() : $elements.eq(i + 1); + } else { + $prevElement = $elements.eq(Math.max(0, i - 1)); + $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)); + } + return; + } + }); + + // handle keyboard event with keyboard util + Foundation.Keyboard.handleKey(e, 'Tabs', { + open: function () { + $element.find('[role="tab"]').focus(); + _this._handleTabChange($element); + }, + previous: function () { + $prevElement.find('[role="tab"]').focus(); + _this._handleTabChange($prevElement); + }, + next: function () { + $nextElement.find('[role="tab"]').focus(); + _this._handleTabChange($nextElement); + }, + handled: function () { + e.stopPropagation(); + e.preventDefault(); + } + }); + }); + } + + /** + * Opens the tab `$targetContent` defined by `$target`. + * @param {jQuery} $target - Tab to open. + * @fires Tabs#change + * @function + */ + + }, { + key: '_handleTabChange', + value: function _handleTabChange($target) { + var $tabLink = $target.find('[role="tab"]'), + hash = $tabLink[0].hash, + $targetContent = this.$tabContent.find(hash), + $oldTab = this.$element.find('.' + this.options.linkClass + '.is-active').removeClass('is-active').find('[role="tab"]').attr({ 'aria-selected': 'false' }); + + $('#' + $oldTab.attr('aria-controls')).removeClass('is-active').attr({ 'aria-hidden': 'true' }); + + $target.addClass('is-active'); + + $tabLink.attr({ 'aria-selected': 'true' }); + + $targetContent.addClass('is-active').attr({ 'aria-hidden': 'false' }); + + /** + * Fires when the plugin has successfully changed tabs. + * @event Tabs#change + */ + this.$element.trigger('change.zf.tabs', [$target]); + } + + /** + * Public method for selecting a content pane to display. + * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display. + * @function + */ + + }, { + key: 'selectTab', + value: function selectTab(elem) { + var idStr; + + if (typeof elem === 'object') { + idStr = elem[0].id; + } else { + idStr = elem; + } + + if (idStr.indexOf('#') < 0) { + idStr = '#' + idStr; + } + + var $target = this.$tabTitles.find('[href="' + idStr + '"]').parent('.' + this.options.linkClass); + + this._handleTabChange($target); + } + }, { + key: '_setHeight', + + /** + * Sets the height of each panel to the height of the tallest panel. + * If enabled in options, gets called on media query change. + * If loading content via external source, can be called directly or with _reflow. + * @function + * @private + */ + value: function _setHeight() { + var max = 0; + this.$tabContent.find('.' + this.options.panelClass).css('height', '').each(function () { + var panel = $(this), + isActive = panel.hasClass('is-active'); + + if (!isActive) { + panel.css({ 'visibility': 'hidden', 'display': 'block' }); + } + + var temp = this.getBoundingClientRect().height; + + if (!isActive) { + panel.css({ + 'visibility': '', + 'display': '' + }); + } + + max = temp > max ? temp : max; + }).css('height', max + 'px'); + } + + /** + * Destroys an instance of an tabs. + * @fires Tabs#destroyed + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.find('.' + this.options.linkClass).off('.zf.tabs').hide().end().find('.' + this.options.panelClass).hide(); + + if (this.options.matchHeight) { + if (this._setHeightMqHandler != null) { + $(window).off('changed.zf.mediaquery', this._setHeightMqHandler); + } + } + + Foundation.unregisterPlugin(this); + } + }]); + + return Tabs; + }(); + + Tabs.defaults = { + /** + * Allows the window to scroll to content of active pane on load if set to true. + * @option + * @example false + */ + autoFocus: false, + + /** + * Allows keyboard input to 'wrap' around the tab links. + * @option + * @example true + */ + wrapOnKeys: true, + + /** + * Allows the tab content panes to match heights if set to true. + * @option + * @example false + */ + matchHeight: false, + + /** + * Class applied to `li`'s in tab link list. + * @option + * @example 'tabs-title' + */ + linkClass: 'tabs-title', + + /** + * Class applied to the content containers. + * @option + * @example 'tabs-panel' + */ + panelClass: 'tabs-panel' + }; + + function checkClass($elem) { + return $elem.hasClass('is-active'); + } + + // Window exports + Foundation.plugin(Tabs, 'Tabs'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.toggler.js b/libraries/foundation-6/js/plugins/foundation.toggler.js new file mode 100755 index 00000000..3e73b8d6 --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.toggler.js @@ -0,0 +1,166 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Toggler module. + * @module foundation.toggler + * @requires foundation.util.motion + * @requires foundation.util.triggers + */ + + var Toggler = function () { + /** + * Creates a new instance of Toggler. + * @class + * @fires Toggler#init + * @param {Object} element - jQuery object to add the trigger to. + * @param {Object} options - Overrides to the default plugin settings. + */ + + function Toggler(element, options) { + _classCallCheck(this, Toggler); + + this.$element = element; + this.options = $.extend({}, Toggler.defaults, element.data(), options); + this.className = ''; + + this._init(); + this._events(); + + Foundation.registerPlugin(this, 'Toggler'); + } + + /** + * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate. + * @function + * @private + */ + + + _createClass(Toggler, [{ + key: '_init', + value: function _init() { + var input; + // Parse animation classes if they were set + if (this.options.animate) { + input = this.options.animate.split(' '); + + this.animationIn = input[0]; + this.animationOut = input[1] || null; + } + // Otherwise, parse toggle class + else { + input = this.$element.data('toggler'); + // Allow for a . at the beginning of the string + this.className = input[0] === '.' ? input.slice(1) : input; + } + + // Add ARIA attributes to triggers + var id = this.$element[0].id; + $('[data-open="' + id + '"], [data-close="' + id + '"], [data-toggle="' + id + '"]').attr('aria-controls', id); + // If the target is hidden, add aria-hidden + this.$element.attr('aria-expanded', this.$element.is(':hidden') ? false : true); + } + + /** + * Initializes events for the toggle trigger. + * @function + * @private + */ + + }, { + key: '_events', + value: function _events() { + this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this)); + } + + /** + * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was "on" or "off". + * @function + * @fires Toggler#on + * @fires Toggler#off + */ + + }, { + key: 'toggle', + value: function toggle() { + this[this.options.animate ? '_toggleAnimate' : '_toggleClass'](); + } + }, { + key: '_toggleClass', + value: function _toggleClass() { + this.$element.toggleClass(this.className); + + var isOn = this.$element.hasClass(this.className); + if (isOn) { + /** + * Fires if the target element has the class after a toggle. + * @event Toggler#on + */ + this.$element.trigger('on.zf.toggler'); + } else { + /** + * Fires if the target element does not have the class after a toggle. + * @event Toggler#off + */ + this.$element.trigger('off.zf.toggler'); + } + + this._updateARIA(isOn); + } + }, { + key: '_toggleAnimate', + value: function _toggleAnimate() { + var _this = this; + + if (this.$element.is(':hidden')) { + Foundation.Motion.animateIn(this.$element, this.animationIn, function () { + _this._updateARIA(true); + this.trigger('on.zf.toggler'); + }); + } else { + Foundation.Motion.animateOut(this.$element, this.animationOut, function () { + _this._updateARIA(false); + this.trigger('off.zf.toggler'); + }); + } + } + }, { + key: '_updateARIA', + value: function _updateARIA(isOn) { + this.$element.attr('aria-expanded', isOn ? true : false); + } + + /** + * Destroys the instance of Toggler on the element. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.off('.zf.toggler'); + Foundation.unregisterPlugin(this); + } + }]); + + return Toggler; + }(); + + Toggler.defaults = { + /** + * Tells the plugin if the element should animated when toggled. + * @option + * @example false + */ + animate: false + }; + + // Window exports + Foundation.plugin(Toggler, 'Toggler'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.tooltip.js b/libraries/foundation-6/js/plugins/foundation.tooltip.js new file mode 100755 index 00000000..a02bd5ab --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.tooltip.js @@ -0,0 +1,468 @@ +'use strict'; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +!function ($) { + + /** + * Tooltip module. + * @module foundation.tooltip + * @requires foundation.util.box + * @requires foundation.util.triggers + */ + + var Tooltip = function () { + /** + * Creates a new instance of a Tooltip. + * @class + * @fires Tooltip#init + * @param {jQuery} element - jQuery object to attach a tooltip to. + * @param {Object} options - object to extend the default configuration. + */ + + function Tooltip(element, options) { + _classCallCheck(this, Tooltip); + + this.$element = element; + this.options = $.extend({}, Tooltip.defaults, this.$element.data(), options); + + this.isActive = false; + this.isClick = false; + this._init(); + + Foundation.registerPlugin(this, 'Tooltip'); + } + + /** + * Initializes the tooltip by setting the creating the tip element, adding it's text, setting private variables and setting attributes on the anchor. + * @private + */ + + + _createClass(Tooltip, [{ + key: '_init', + value: function _init() { + var elemId = this.$element.attr('aria-describedby') || Foundation.GetYoDigits(6, 'tooltip'); + + this.options.positionClass = this.options.positionClass || this._getPositionClass(this.$element); + this.options.tipText = this.options.tipText || this.$element.attr('title'); + this.template = this.options.template ? $(this.options.template) : this._buildTemplate(elemId); + + this.template.appendTo(document.body).text(this.options.tipText).hide(); + + this.$element.attr({ + 'title': '', + 'aria-describedby': elemId, + 'data-yeti-box': elemId, + 'data-toggle': elemId, + 'data-resize': elemId + }).addClass(this.triggerClass); + + //helper variables to track movement on collisions + this.usedPositions = []; + this.counter = 4; + this.classChanged = false; + + this._events(); + } + + /** + * Grabs the current positioning class, if present, and returns the value or an empty string. + * @private + */ + + }, { + key: '_getPositionClass', + value: function _getPositionClass(element) { + if (!element) { + return ''; + } + // var position = element.attr('class').match(/top|left|right/g); + var position = element[0].className.match(/\b(top|left|right)\b/g); + position = position ? position[0] : ''; + return position; + } + }, { + key: '_buildTemplate', + + /** + * builds the tooltip element, adds attributes, and returns the template. + * @private + */ + value: function _buildTemplate(id) { + var templateClasses = (this.options.tooltipClass + ' ' + this.options.positionClass + ' ' + this.options.templateClasses).trim(); + var $template = $('<div></div>').addClass(templateClasses).attr({ + 'role': 'tooltip', + 'aria-hidden': true, + 'data-is-active': false, + 'data-is-focus': false, + 'id': id + }); + return $template; + } + + /** + * Function that gets called if a collision event is detected. + * @param {String} position - positioning class to try + * @private + */ + + }, { + key: '_reposition', + value: function _reposition(position) { + this.usedPositions.push(position ? position : 'bottom'); + + //default, try switching to opposite side + if (!position && this.usedPositions.indexOf('top') < 0) { + this.template.addClass('top'); + } else if (position === 'top' && this.usedPositions.indexOf('bottom') < 0) { + this.template.removeClass(position); + } else if (position === 'left' && this.usedPositions.indexOf('right') < 0) { + this.template.removeClass(position).addClass('right'); + } else if (position === 'right' && this.usedPositions.indexOf('left') < 0) { + this.template.removeClass(position).addClass('left'); + } + + //if default change didn't work, try bottom or left first + else if (!position && this.usedPositions.indexOf('top') > -1 && this.usedPositions.indexOf('left') < 0) { + this.template.addClass('left'); + } else if (position === 'top' && this.usedPositions.indexOf('bottom') > -1 && this.usedPositions.indexOf('left') < 0) { + this.template.removeClass(position).addClass('left'); + } else if (position === 'left' && this.usedPositions.indexOf('right') > -1 && this.usedPositions.indexOf('bottom') < 0) { + this.template.removeClass(position); + } else if (position === 'right' && this.usedPositions.indexOf('left') > -1 && this.usedPositions.indexOf('bottom') < 0) { + this.template.removeClass(position); + } + //if nothing cleared, set to bottom + else { + this.template.removeClass(position); + } + this.classChanged = true; + this.counter--; + } + + /** + * sets the position class of an element and recursively calls itself until there are no more possible positions to attempt, or the tooltip element is no longer colliding. + * if the tooltip is larger than the screen width, default to full width - any user selected margin + * @private + */ + + }, { + key: '_setPosition', + value: function _setPosition() { + var position = this._getPositionClass(this.template), + $tipDims = Foundation.Box.GetDimensions(this.template), + $anchorDims = Foundation.Box.GetDimensions(this.$element), + direction = position === 'left' ? 'left' : position === 'right' ? 'left' : 'top', + param = direction === 'top' ? 'height' : 'width', + offset = param === 'height' ? this.options.vOffset : this.options.hOffset, + _this = this; + + if ($tipDims.width >= $tipDims.windowDims.width || !this.counter && !Foundation.Box.ImNotTouchingYou(this.template)) { + this.template.offset(Foundation.Box.GetOffsets(this.template, this.$element, 'center bottom', this.options.vOffset, this.options.hOffset, true)).css({ + // this.$element.offset(Foundation.GetOffsets(this.template, this.$element, 'center bottom', this.options.vOffset, this.options.hOffset, true)).css({ + 'width': $anchorDims.windowDims.width - this.options.hOffset * 2, + 'height': 'auto' + }); + return false; + } + + this.template.offset(Foundation.Box.GetOffsets(this.template, this.$element, 'center ' + (position || 'bottom'), this.options.vOffset, this.options.hOffset)); + + while (!Foundation.Box.ImNotTouchingYou(this.template) && this.counter) { + this._reposition(position); + this._setPosition(); + } + } + + /** + * reveals the tooltip, and fires an event to close any other open tooltips on the page + * @fires Tooltip#closeme + * @fires Tooltip#show + * @function + */ + + }, { + key: 'show', + value: function show() { + if (this.options.showOn !== 'all' && !Foundation.MediaQuery.atLeast(this.options.showOn)) { + // console.error('The screen is too small to display this tooltip'); + return false; + } + + var _this = this; + this.template.css('visibility', 'hidden').show(); + this._setPosition(); + + /** + * Fires to close all other open tooltips on the page + * @event Closeme#tooltip + */ + this.$element.trigger('closeme.zf.tooltip', this.template.attr('id')); + + this.template.attr({ + 'data-is-active': true, + 'aria-hidden': false + }); + _this.isActive = true; + // console.log(this.template); + this.template.stop().hide().css('visibility', '').fadeIn(this.options.fadeInDuration, function () { + //maybe do stuff? + }); + /** + * Fires when the tooltip is shown + * @event Tooltip#show + */ + this.$element.trigger('show.zf.tooltip'); + } + + /** + * Hides the current tooltip, and resets the positioning class if it was changed due to collision + * @fires Tooltip#hide + * @function + */ + + }, { + key: 'hide', + value: function hide() { + // console.log('hiding', this.$element.data('yeti-box')); + var _this = this; + this.template.stop().attr({ + 'aria-hidden': true, + 'data-is-active': false + }).fadeOut(this.options.fadeOutDuration, function () { + _this.isActive = false; + _this.isClick = false; + if (_this.classChanged) { + _this.template.removeClass(_this._getPositionClass(_this.template)).addClass(_this.options.positionClass); + + _this.usedPositions = []; + _this.counter = 4; + _this.classChanged = false; + } + }); + /** + * fires when the tooltip is hidden + * @event Tooltip#hide + */ + this.$element.trigger('hide.zf.tooltip'); + } + + /** + * adds event listeners for the tooltip and its anchor + * TODO combine some of the listeners like focus and mouseenter, etc. + * @private + */ + + }, { + key: '_events', + value: function _events() { + var _this = this; + var $template = this.template; + var isFocus = false; + + if (!this.options.disableHover) { + + this.$element.on('mouseenter.zf.tooltip', function (e) { + if (!_this.isActive) { + _this.timeout = setTimeout(function () { + _this.show(); + }, _this.options.hoverDelay); + } + }).on('mouseleave.zf.tooltip', function (e) { + clearTimeout(_this.timeout); + if (!isFocus || _this.isClick && !_this.options.clickOpen) { + _this.hide(); + } + }); + } + + if (this.options.clickOpen) { + this.$element.on('mousedown.zf.tooltip', function (e) { + e.stopImmediatePropagation(); + if (_this.isClick) { + //_this.hide(); + // _this.isClick = false; + } else { + _this.isClick = true; + if ((_this.options.disableHover || !_this.$element.attr('tabindex')) && !_this.isActive) { + _this.show(); + } + } + }); + } else { + this.$element.on('mousedown.zf.tooltip', function (e) { + e.stopImmediatePropagation(); + _this.isClick = true; + }); + } + + if (!this.options.disableForTouch) { + this.$element.on('tap.zf.tooltip touchend.zf.tooltip', function (e) { + _this.isActive ? _this.hide() : _this.show(); + }); + } + + this.$element.on({ + // 'toggle.zf.trigger': this.toggle.bind(this), + // 'close.zf.trigger': this.hide.bind(this) + 'close.zf.trigger': this.hide.bind(this) + }); + + this.$element.on('focus.zf.tooltip', function (e) { + isFocus = true; + if (_this.isClick) { + // If we're not showing open on clicks, we need to pretend a click-launched focus isn't + // a real focus, otherwise on hover and come back we get bad behavior + if (!_this.options.clickOpen) { + isFocus = false; + } + return false; + } else { + _this.show(); + } + }).on('focusout.zf.tooltip', function (e) { + isFocus = false; + _this.isClick = false; + _this.hide(); + }).on('resizeme.zf.trigger', function () { + if (_this.isActive) { + _this._setPosition(); + } + }); + } + + /** + * adds a toggle method, in addition to the static show() & hide() functions + * @function + */ + + }, { + key: 'toggle', + value: function toggle() { + if (this.isActive) { + this.hide(); + } else { + this.show(); + } + } + + /** + * Destroys an instance of tooltip, removes template element from the view. + * @function + */ + + }, { + key: 'destroy', + value: function destroy() { + this.$element.attr('title', this.template.text()).off('.zf.trigger .zf.tootip') + // .removeClass('has-tip') + .removeAttr('aria-describedby').removeAttr('data-yeti-box').removeAttr('data-toggle').removeAttr('data-resize'); + + this.template.remove(); + + Foundation.unregisterPlugin(this); + } + }]); + + return Tooltip; + }(); + + Tooltip.defaults = { + disableForTouch: false, + /** + * Time, in ms, before a tooltip should open on hover. + * @option + * @example 200 + */ + hoverDelay: 200, + /** + * Time, in ms, a tooltip should take to fade into view. + * @option + * @example 150 + */ + fadeInDuration: 150, + /** + * Time, in ms, a tooltip should take to fade out of view. + * @option + * @example 150 + */ + fadeOutDuration: 150, + /** + * Disables hover events from opening the tooltip if set to true + * @option + * @example false + */ + disableHover: false, + /** + * Optional addtional classes to apply to the tooltip template on init. + * @option + * @example 'my-cool-tip-class' + */ + templateClasses: '', + /** + * Non-optional class added to tooltip templates. Foundation default is 'tooltip'. + * @option + * @example 'tooltip' + */ + tooltipClass: 'tooltip', + /** + * Class applied to the tooltip anchor element. + * @option + * @example 'has-tip' + */ + triggerClass: 'has-tip', + /** + * Minimum breakpoint size at which to open the tooltip. + * @option + * @example 'small' + */ + showOn: 'small', + /** + * Custom template to be used to generate markup for tooltip. + * @option + * @example '<div class="tooltip"></div>' + */ + template: '', + /** + * Text displayed in the tooltip template on open. + * @option + * @example 'Some cool space fact here.' + */ + tipText: '', + touchCloseText: 'Tap to close.', + /** + * Allows the tooltip to remain open if triggered with a click or touch event. + * @option + * @example true + */ + clickOpen: true, + /** + * Additional positioning classes, set by the JS + * @option + * @example 'top' + */ + positionClass: '', + /** + * Distance, in pixels, the template should push away from the anchor on the Y axis. + * @option + * @example 10 + */ + vOffset: 10, + /** + * Distance, in pixels, the template should push away from the anchor on the X axis, if aligned to a side. + * @option + * @example 12 + */ + hOffset: 12 + }; + + /** + * TODO utilize resize event trigger + */ + + // Window exports + Foundation.plugin(Tooltip, 'Tooltip'); +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.util.box.js b/libraries/foundation-6/js/plugins/foundation.util.box.js new file mode 100755 index 00000000..b3ff90ee --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.util.box.js @@ -0,0 +1,196 @@ +'use strict'; + +!function ($) { + + Foundation.Box = { + ImNotTouchingYou: ImNotTouchingYou, + GetDimensions: GetDimensions, + GetOffsets: GetOffsets + }; + + /** + * Compares the dimensions of an element to a container and determines collision events with container. + * @function + * @param {jQuery} element - jQuery object to test for collisions. + * @param {jQuery} parent - jQuery object to use as bounding container. + * @param {Boolean} lrOnly - set to true to check left and right values only. + * @param {Boolean} tbOnly - set to true to check top and bottom values only. + * @default if no parent object passed, detects collisions with `window`. + * @returns {Boolean} - true if collision free, false if a collision in any direction. + */ + function ImNotTouchingYou(element, parent, lrOnly, tbOnly) { + var eleDims = GetDimensions(element), + top, + bottom, + left, + right; + + if (parent) { + var parDims = GetDimensions(parent); + + bottom = eleDims.offset.top + eleDims.height <= parDims.height + parDims.offset.top; + top = eleDims.offset.top >= parDims.offset.top; + left = eleDims.offset.left >= parDims.offset.left; + right = eleDims.offset.left + eleDims.width <= parDims.width + parDims.offset.left; + } else { + bottom = eleDims.offset.top + eleDims.height <= eleDims.windowDims.height + eleDims.windowDims.offset.top; + top = eleDims.offset.top >= eleDims.windowDims.offset.top; + left = eleDims.offset.left >= eleDims.windowDims.offset.left; + right = eleDims.offset.left + eleDims.width <= eleDims.windowDims.width; + } + + var allDirs = [bottom, top, left, right]; + + if (lrOnly) { + return left === right === true; + } + + if (tbOnly) { + return top === bottom === true; + } + + return allDirs.indexOf(false) === -1; + }; + + /** + * Uses native methods to return an object of dimension values. + * @function + * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window. + * @returns {Object} - nested object of integer pixel values + * TODO - if element is window, return only those values. + */ + function GetDimensions(elem, test) { + elem = elem.length ? elem[0] : elem; + + if (elem === window || elem === document) { + throw new Error("I'm sorry, Dave. I'm afraid I can't do that."); + } + + var rect = elem.getBoundingClientRect(), + parRect = elem.parentNode.getBoundingClientRect(), + winRect = document.body.getBoundingClientRect(), + winY = window.pageYOffset, + winX = window.pageXOffset; + + return { + width: rect.width, + height: rect.height, + offset: { + top: rect.top + winY, + left: rect.left + winX + }, + parentDims: { + width: parRect.width, + height: parRect.height, + offset: { + top: parRect.top + winY, + left: parRect.left + winX + } + }, + windowDims: { + width: winRect.width, + height: winRect.height, + offset: { + top: winY, + left: winX + } + } + }; + } + + /** + * Returns an object of top and left integer pixel values for dynamically rendered elements, + * such as: Tooltip, Reveal, and Dropdown + * @function + * @param {jQuery} element - jQuery object for the element being positioned. + * @param {jQuery} anchor - jQuery object for the element's anchor point. + * @param {String} position - a string relating to the desired position of the element, relative to it's anchor + * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element. + * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element. + * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset. + * TODO alter/rewrite to work with `em` values as well/instead of pixels + */ + function GetOffsets(element, anchor, position, vOffset, hOffset, isOverflow) { + var $eleDims = GetDimensions(element), + $anchorDims = anchor ? GetDimensions(anchor) : null; + + switch (position) { + case 'top': + return { + left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left, + top: $anchorDims.offset.top - ($eleDims.height + vOffset) + }; + break; + case 'left': + return { + left: $anchorDims.offset.left - ($eleDims.width + hOffset), + top: $anchorDims.offset.top + }; + break; + case 'right': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset, + top: $anchorDims.offset.top + }; + break; + case 'center top': + return { + left: $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2, + top: $anchorDims.offset.top - ($eleDims.height + vOffset) + }; + break; + case 'center bottom': + return { + left: isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2, + top: $anchorDims.offset.top + $anchorDims.height + vOffset + }; + break; + case 'center left': + return { + left: $anchorDims.offset.left - ($eleDims.width + hOffset), + top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2 + }; + break; + case 'center right': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset + 1, + top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2 + }; + break; + case 'center': + return { + left: $eleDims.windowDims.offset.left + $eleDims.windowDims.width / 2 - $eleDims.width / 2, + top: $eleDims.windowDims.offset.top + $eleDims.windowDims.height / 2 - $eleDims.height / 2 + }; + break; + case 'reveal': + return { + left: ($eleDims.windowDims.width - $eleDims.width) / 2, + top: $eleDims.windowDims.offset.top + vOffset + }; + case 'reveal full': + return { + left: $eleDims.windowDims.offset.left, + top: $eleDims.windowDims.offset.top + }; + break; + case 'left bottom': + return { + left: $anchorDims.offset.left - ($eleDims.width + hOffset), + top: $anchorDims.offset.top + $anchorDims.height + }; + break; + case 'right bottom': + return { + left: $anchorDims.offset.left + $anchorDims.width + hOffset - $eleDims.width, + top: $anchorDims.offset.top + $anchorDims.height + }; + break; + default: + return { + left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left, + top: $anchorDims.offset.top + $anchorDims.height + vOffset + }; + } + } +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.util.keyboard.js b/libraries/foundation-6/js/plugins/foundation.util.keyboard.js new file mode 100755 index 00000000..e9e03bbe --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.util.keyboard.js @@ -0,0 +1,123 @@ +/******************************************* + * * + * This util was created by Marius Olbertz * + * Please thank Marius on GitHub /owlbertz * + * or the web http://www.mariusolbertz.de/ * + * * + ******************************************/ + +'use strict'; + +!function ($) { + + var keyCodes = { + 9: 'TAB', + 13: 'ENTER', + 27: 'ESCAPE', + 32: 'SPACE', + 37: 'ARROW_LEFT', + 38: 'ARROW_UP', + 39: 'ARROW_RIGHT', + 40: 'ARROW_DOWN' + }; + + var commands = {}; + + var Keyboard = { + keys: getKeyCodes(keyCodes), + + /** + * Parses the (keyboard) event and returns a String that represents its key + * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE + * @param {Event} event - the event generated by the event handler + * @return String key - String that represents the key pressed + */ + parseKey: function (event) { + var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase(); + if (event.shiftKey) key = 'SHIFT_' + key; + if (event.ctrlKey) key = 'CTRL_' + key; + if (event.altKey) key = 'ALT_' + key; + return key; + }, + + + /** + * Handles the given (keyboard) event + * @param {Event} event - the event generated by the event handler + * @param {String} component - Foundation component's name, e.g. Slider or Reveal + * @param {Objects} functions - collection of functions that are to be executed + */ + handleKey: function (event, component, functions) { + var commandList = commands[component], + keyCode = this.parseKey(event), + cmds, + command, + fn; + + if (!commandList) return console.warn('Component not defined!'); + + if (typeof commandList.ltr === 'undefined') { + // this component does not differentiate between ltr and rtl + cmds = commandList; // use plain list + } else { + // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa + if (Foundation.rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl);else cmds = $.extend({}, commandList.rtl, commandList.ltr); + } + command = cmds[keyCode]; + + fn = functions[command]; + if (fn && typeof fn === 'function') { + // execute function if exists + var returnValue = fn.apply(); + if (functions.handled || typeof functions.handled === 'function') { + // execute function when event was handled + functions.handled(returnValue); + } + } else { + if (functions.unhandled || typeof functions.unhandled === 'function') { + // execute function when event was not handled + functions.unhandled(); + } + } + }, + + + /** + * Finds all focusable elements within the given `$element` + * @param {jQuery} $element - jQuery object to search within + * @return {jQuery} $focusable - all focusable elements within `$element` + */ + findFocusable: function ($element) { + return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function () { + if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { + return false; + } //only have visible elements and those that have a tabindex greater or equal 0 + return true; + }); + }, + + + /** + * Returns the component name name + * @param {Object} component - Foundation component, e.g. Slider or Reveal + * @return String componentName + */ + + register: function (componentName, cmds) { + commands[componentName] = cmds; + } + }; + + /* + * Constants for easier comparing. + * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE + */ + function getKeyCodes(kcs) { + var k = {}; + for (var kc in kcs) { + k[kcs[kc]] = kcs[kc]; + }return k; + } + + Foundation.Keyboard = Keyboard; +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.util.mediaQuery.js b/libraries/foundation-6/js/plugins/foundation.util.mediaQuery.js new file mode 100755 index 00000000..328be8e9 --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.util.mediaQuery.js @@ -0,0 +1,216 @@ +'use strict'; + +!function ($) { + + // Default set of media queries + var defaultQueries = { + 'default': 'only screen', + landscape: 'only screen and (orientation: landscape)', + portrait: 'only screen and (orientation: portrait)', + retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)' + }; + + var MediaQuery = { + queries: [], + + current: '', + + /** + * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher. + * @function + * @private + */ + _init: function () { + var self = this; + var extractedStyles = $('.foundation-mq').css('font-family'); + var namedQueries; + + namedQueries = parseStyleToObject(extractedStyles); + + for (var key in namedQueries) { + if (namedQueries.hasOwnProperty(key)) { + self.queries.push({ + name: key, + value: 'only screen and (min-width: ' + namedQueries[key] + ')' + }); + } + } + + this.current = this._getCurrentSize(); + + this._watcher(); + }, + + + /** + * Checks if the screen is at least as wide as a breakpoint. + * @function + * @param {String} size - Name of the breakpoint to check. + * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller. + */ + atLeast: function (size) { + var query = this.get(size); + + if (query) { + return window.matchMedia(query).matches; + } + + return false; + }, + + + /** + * Gets the media query of a breakpoint. + * @function + * @param {String} size - Name of the breakpoint to get. + * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist. + */ + get: function (size) { + for (var i in this.queries) { + if (this.queries.hasOwnProperty(i)) { + var query = this.queries[i]; + if (size === query.name) return query.value; + } + } + + return null; + }, + + + /** + * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one). + * @function + * @private + * @returns {String} Name of the current breakpoint. + */ + _getCurrentSize: function () { + var matched; + + for (var i = 0; i < this.queries.length; i++) { + var query = this.queries[i]; + + if (window.matchMedia(query.value).matches) { + matched = query; + } + } + + if (typeof matched === 'object') { + return matched.name; + } else { + return matched; + } + }, + + + /** + * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes. + * @function + * @private + */ + _watcher: function () { + var _this = this; + + $(window).on('resize.zf.mediaquery', function () { + var newSize = _this._getCurrentSize(), + currentSize = _this.current; + + if (newSize !== currentSize) { + // Change the current media query + _this.current = newSize; + + // Broadcast the media query change on the window + $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]); + } + }); + } + }; + + Foundation.MediaQuery = MediaQuery; + + // matchMedia() polyfill - Test a CSS media type/query in JS. + // Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license + window.matchMedia || (window.matchMedia = function () { + 'use strict'; + + // For browsers that support matchMedium api such as IE 9 and webkit + + var styleMedia = window.styleMedia || window.media; + + // For those that don't support matchMedium + if (!styleMedia) { + var style = document.createElement('style'), + script = document.getElementsByTagName('script')[0], + info = null; + + style.type = 'text/css'; + style.id = 'matchmediajs-test'; + + script.parentNode.insertBefore(style, script); + + // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers + info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle; + + styleMedia = { + matchMedium: function (media) { + var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; + + // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers + if (style.styleSheet) { + style.styleSheet.cssText = text; + } else { + style.textContent = text; + } + + // Test if media query is true or false + return info.width === '1px'; + } + }; + } + + return function (media) { + return { + matches: styleMedia.matchMedium(media || 'all'), + media: media || 'all' + }; + }; + }()); + + // Thank you: https://github.com/sindresorhus/query-string + function parseStyleToObject(str) { + var styleObject = {}; + + if (typeof str !== 'string') { + return styleObject; + } + + str = str.trim().slice(1, -1); // browsers re-quote string style values + + if (!str) { + return styleObject; + } + + styleObject = str.split('&').reduce(function (ret, param) { + var parts = param.replace(/\+/g, ' ').split('='); + var key = parts[0]; + var val = parts[1]; + key = decodeURIComponent(key); + + // missing `=` should be `null`: + // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters + val = val === undefined ? null : decodeURIComponent(val); + + if (!ret.hasOwnProperty(key)) { + ret[key] = val; + } else if (Array.isArray(ret[key])) { + ret[key].push(val); + } else { + ret[key] = [ret[key], val]; + } + return ret; + }, {}); + + return styleObject; + } + + Foundation.MediaQuery = MediaQuery; +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.util.motion.js b/libraries/foundation-6/js/plugins/foundation.util.motion.js new file mode 100755 index 00000000..c045ec84 --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.util.motion.js @@ -0,0 +1,97 @@ +'use strict'; + +!function ($) { + + /** + * Motion module. + * @module foundation.motion + */ + + var initClasses = ['mui-enter', 'mui-leave']; + var activeClasses = ['mui-enter-active', 'mui-leave-active']; + + var Motion = { + animateIn: function (element, animation, cb) { + animate(true, element, animation, cb); + }, + + animateOut: function (element, animation, cb) { + animate(false, element, animation, cb); + } + }; + + function Move(duration, elem, fn) { + var anim, + prog, + start = null; + // console.log('called'); + + function move(ts) { + if (!start) start = window.performance.now(); + // console.log(start, ts); + prog = ts - start; + fn.apply(elem); + + if (prog < duration) { + anim = window.requestAnimationFrame(move, elem); + } else { + window.cancelAnimationFrame(anim); + elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]); + } + } + anim = window.requestAnimationFrame(move); + } + + /** + * Animates an element in or out using a CSS transition class. + * @function + * @private + * @param {Boolean} isIn - Defines if the animation is in or out. + * @param {Object} element - jQuery or HTML object to animate. + * @param {String} animation - CSS class to use. + * @param {Function} cb - Callback to run when animation is finished. + */ + function animate(isIn, element, animation, cb) { + element = $(element).eq(0); + + if (!element.length) return; + + var initClass = isIn ? initClasses[0] : initClasses[1]; + var activeClass = isIn ? activeClasses[0] : activeClasses[1]; + + // Set up the animation + reset(); + + element.addClass(animation).css('transition', 'none'); + + requestAnimationFrame(function () { + element.addClass(initClass); + if (isIn) element.show(); + }); + + // Start the animation + requestAnimationFrame(function () { + element[0].offsetWidth; + element.css('transition', '').addClass(activeClass); + }); + + // Clean up the animation when it finishes + element.one(Foundation.transitionend(element), finish); + + // Hides the element (for out animations), resets the element, and runs a callback + function finish() { + if (!isIn) element.hide(); + reset(); + if (cb) cb.apply(element); + } + + // Resets transitions and removes motion-specific classes + function reset() { + element[0].style.transitionDuration = 0; + element.removeClass(initClass + ' ' + activeClass + ' ' + animation); + } + } + + Foundation.Move = Move; + Foundation.Motion = Motion; +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.util.nest.js b/libraries/foundation-6/js/plugins/foundation.util.nest.js new file mode 100755 index 00000000..a8433837 --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.util.nest.js @@ -0,0 +1,69 @@ +'use strict'; + +!function ($) { + + var Nest = { + Feather: function (menu) { + var type = arguments.length <= 1 || arguments[1] === undefined ? 'zf' : arguments[1]; + + menu.attr('role', 'menubar'); + + var items = menu.find('li').attr({ 'role': 'menuitem' }), + subMenuClass = 'is-' + type + '-submenu', + subItemClass = subMenuClass + '-item', + hasSubClass = 'is-' + type + '-submenu-parent'; + + menu.find('a:first').attr('tabindex', 0); + + items.each(function () { + var $item = $(this), + $sub = $item.children('ul'); + + if ($sub.length) { + $item.addClass(hasSubClass).attr({ + 'aria-haspopup': true, + 'aria-expanded': false, + 'aria-label': $item.children('a:first').text() + }); + + $sub.addClass('submenu ' + subMenuClass).attr({ + 'data-submenu': '', + 'aria-hidden': true, + 'role': 'menu' + }); + } + + if ($item.parent('[data-submenu]').length) { + $item.addClass('is-submenu-item ' + subItemClass); + } + }); + + return; + }, + Burn: function (menu, type) { + var items = menu.find('li').removeAttr('tabindex'), + subMenuClass = 'is-' + type + '-submenu', + subItemClass = subMenuClass + '-item', + hasSubClass = 'is-' + type + '-submenu-parent'; + + menu.find('*').removeClass(subMenuClass + ' ' + subItemClass + ' ' + hasSubClass + ' is-submenu-item submenu is-active').removeAttr('data-submenu').css('display', ''); + + // console.log( menu.find('.' + subMenuClass + ', .' + subItemClass + ', .has-submenu, .is-submenu-item, .submenu, [data-submenu]') + // .removeClass(subMenuClass + ' ' + subItemClass + ' has-submenu is-submenu-item submenu') + // .removeAttr('data-submenu')); + // items.each(function(){ + // var $item = $(this), + // $sub = $item.children('ul'); + // if($item.parent('[data-submenu]').length){ + // $item.removeClass('is-submenu-item ' + subItemClass); + // } + // if($sub.length){ + // $item.removeClass('has-submenu'); + // $sub.removeClass('submenu ' + subMenuClass).removeAttr('data-submenu'); + // } + // }); + } + }; + + Foundation.Nest = Nest; +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.util.timerAndImageLoader.js b/libraries/foundation-6/js/plugins/foundation.util.timerAndImageLoader.js new file mode 100755 index 00000000..21e3384f --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.util.timerAndImageLoader.js @@ -0,0 +1,84 @@ +'use strict'; + +!function ($) { + + function Timer(elem, options, cb) { + var _this = this, + duration = options.duration, + //options is an object for easily adding features later. + nameSpace = Object.keys(elem.data())[0] || 'timer', + remain = -1, + start, + timer; + + this.isPaused = false; + + this.restart = function () { + remain = -1; + clearTimeout(timer); + this.start(); + }; + + this.start = function () { + this.isPaused = false; + // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things. + clearTimeout(timer); + remain = remain <= 0 ? duration : remain; + elem.data('paused', false); + start = Date.now(); + timer = setTimeout(function () { + if (options.infinite) { + _this.restart(); //rerun the timer. + } + cb(); + }, remain); + elem.trigger('timerstart.zf.' + nameSpace); + }; + + this.pause = function () { + this.isPaused = true; + //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things. + clearTimeout(timer); + elem.data('paused', true); + var end = Date.now(); + remain = remain - (end - start); + elem.trigger('timerpaused.zf.' + nameSpace); + }; + } + + /** + * Runs a callback function when images are fully loaded. + * @param {Object} images - Image(s) to check if loaded. + * @param {Func} callback - Function to execute when image is fully loaded. + */ + function onImagesLoaded(images, callback) { + var self = this, + unloaded = images.length; + + if (unloaded === 0) { + callback(); + } + + images.each(function () { + if (this.complete) { + singleImageLoaded(); + } else if (typeof this.naturalWidth !== 'undefined' && this.naturalWidth > 0) { + singleImageLoaded(); + } else { + $(this).one('load', function () { + singleImageLoaded(); + }); + } + }); + + function singleImageLoaded() { + unloaded--; + if (unloaded === 0) { + callback(); + } + } + } + + Foundation.Timer = Timer; + Foundation.onImagesLoaded = onImagesLoaded; +}(jQuery); \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.util.touch.js b/libraries/foundation-6/js/plugins/foundation.util.touch.js new file mode 100755 index 00000000..b37d0f16 --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.util.touch.js @@ -0,0 +1,352 @@ +//************************************************** +//**Work inspired by multiple jquery swipe plugins** +//**Done by Yohai Ararat *************************** +//************************************************** +(function ($) { + + $.spotSwipe = { + version: '1.0.0', + enabled: 'ontouchstart' in document.documentElement, + preventDefault: false, + moveThreshold: 75, + timeThreshold: 200 + }; + + var startPosX, + startPosY, + startTime, + elapsedTime, + isMoving = false; + + function onTouchEnd() { + // alert(this); + this.removeEventListener('touchmove', onTouchMove); + this.removeEventListener('touchend', onTouchEnd); + isMoving = false; + } + + function onTouchMove(e) { + if ($.spotSwipe.preventDefault) { + e.preventDefault(); + } + if (isMoving) { + var x = e.touches[0].pageX; + var y = e.touches[0].pageY; + var dx = startPosX - x; + var dy = startPosY - y; + var dir; + elapsedTime = new Date().getTime() - startTime; + if (Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) { + dir = dx > 0 ? 'left' : 'right'; + } + // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) { + // dir = dy > 0 ? 'down' : 'up'; + // } + if (dir) { + e.preventDefault(); + onTouchEnd.call(this); + $(this).trigger('swipe', dir).trigger('swipe' + dir); + } + } + } + + function onTouchStart(e) { + if (e.touches.length == 1) { + startPosX = e.touches[0].pageX; + startPosY = e.touches[0].pageY; + isMoving = true; + startTime = new Date().getTime(); + this.addEventListener('touchmove', onTouchMove, false); + this.addEventListener('touchend', onTouchEnd, false); + } + } + + function init() { + this.addEventListener && this.addEventListener('touchstart', onTouchStart, false); + } + + function teardown() { + this.removeEventListener('touchstart', onTouchStart); + } + + $.event.special.swipe = { setup: init }; + + $.each(['left', 'up', 'down', 'right'], function () { + $.event.special['swipe' + this] = { setup: function () { + $(this).on('swipe', $.noop); + } }; + }); +})(jQuery); +/**************************************************** + * Method for adding psuedo drag events to elements * + ***************************************************/ +!function ($) { + $.fn.addTouch = function () { + this.each(function (i, el) { + $(el).bind('touchstart touchmove touchend touchcancel', function () { + //we pass the original event object because the jQuery event + //object is normalized to w3c specs and does not provide the TouchList + handleTouch(event); + }); + }); + + var handleTouch = function (event) { + var touches = event.changedTouches, + first = touches[0], + eventTypes = { + touchstart: 'mousedown', + touchmove: 'mousemove', + touchend: 'mouseup' + }, + type = eventTypes[event.type], + simulatedEvent; + + if ('MouseEvent' in window && typeof window.MouseEvent === 'function') { + simulatedEvent = new window.MouseEvent(type, { + 'bubbles': true, + 'cancelable': true, + 'screenX': first.screenX, + 'screenY': first.screenY, + 'clientX': first.clientX, + 'clientY': first.clientY + }); + } else { + simulatedEvent = document.createEvent('MouseEvent'); + simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0 /*left*/, null); + } + first.target.dispatchEvent(simulatedEvent); + }; + }; +}(jQuery); + +//********************************** +//**From the jQuery Mobile Library** +//**need to recreate functionality** +//**and try to improve if possible** +//********************************** + +/* Removing the jQuery function **** +************************************ + +(function( $, window, undefined ) { + + var $document = $( document ), + // supportTouch = $.mobile.support.touch, + touchStartEvent = 'touchstart'//supportTouch ? "touchstart" : "mousedown", + touchStopEvent = 'touchend'//supportTouch ? "touchend" : "mouseup", + touchMoveEvent = 'touchmove'//supportTouch ? "touchmove" : "mousemove"; + + // setup new event shortcuts + $.each( ( "touchstart touchmove touchend " + + "swipe swipeleft swiperight" ).split( " " ), function( i, name ) { + + $.fn[ name ] = function( fn ) { + return fn ? this.bind( name, fn ) : this.trigger( name ); + }; + + // jQuery < 1.8 + if ( $.attrFn ) { + $.attrFn[ name ] = true; + } + }); + + function triggerCustomEvent( obj, eventType, event, bubble ) { + var originalType = event.type; + event.type = eventType; + if ( bubble ) { + $.event.trigger( event, undefined, obj ); + } else { + $.event.dispatch.call( obj, event ); + } + event.type = originalType; + } + + // also handles taphold + + // Also handles swipeleft, swiperight + $.event.special.swipe = { + + // More than this horizontal displacement, and we will suppress scrolling. + scrollSupressionThreshold: 30, + + // More time than this, and it isn't a swipe. + durationThreshold: 1000, + + // Swipe horizontal displacement must be more than this. + horizontalDistanceThreshold: window.devicePixelRatio >= 2 ? 15 : 30, + + // Swipe vertical displacement must be less than this. + verticalDistanceThreshold: window.devicePixelRatio >= 2 ? 15 : 30, + + getLocation: function ( event ) { + var winPageX = window.pageXOffset, + winPageY = window.pageYOffset, + x = event.clientX, + y = event.clientY; + + if ( event.pageY === 0 && Math.floor( y ) > Math.floor( event.pageY ) || + event.pageX === 0 && Math.floor( x ) > Math.floor( event.pageX ) ) { + + // iOS4 clientX/clientY have the value that should have been + // in pageX/pageY. While pageX/page/ have the value 0 + x = x - winPageX; + y = y - winPageY; + } else if ( y < ( event.pageY - winPageY) || x < ( event.pageX - winPageX ) ) { + + // Some Android browsers have totally bogus values for clientX/Y + // when scrolling/zooming a page. Detectable since clientX/clientY + // should never be smaller than pageX/pageY minus page scroll + x = event.pageX - winPageX; + y = event.pageY - winPageY; + } + + return { + x: x, + y: y + }; + }, + + start: function( event ) { + var data = event.originalEvent.touches ? + event.originalEvent.touches[ 0 ] : event, + location = $.event.special.swipe.getLocation( data ); + return { + time: ( new Date() ).getTime(), + coords: [ location.x, location.y ], + origin: $( event.target ) + }; + }, + + stop: function( event ) { + var data = event.originalEvent.touches ? + event.originalEvent.touches[ 0 ] : event, + location = $.event.special.swipe.getLocation( data ); + return { + time: ( new Date() ).getTime(), + coords: [ location.x, location.y ] + }; + }, + + handleSwipe: function( start, stop, thisObject, origTarget ) { + if ( stop.time - start.time < $.event.special.swipe.durationThreshold && + Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold && + Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) { + var direction = start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight"; + + triggerCustomEvent( thisObject, "swipe", $.Event( "swipe", { target: origTarget, swipestart: start, swipestop: stop }), true ); + triggerCustomEvent( thisObject, direction,$.Event( direction, { target: origTarget, swipestart: start, swipestop: stop } ), true ); + return true; + } + return false; + + }, + + // This serves as a flag to ensure that at most one swipe event event is + // in work at any given time + eventInProgress: false, + + setup: function() { + var events, + thisObject = this, + $this = $( thisObject ), + context = {}; + + // Retrieve the events data for this element and add the swipe context + events = $.data( this, "mobile-events" ); + if ( !events ) { + events = { length: 0 }; + $.data( this, "mobile-events", events ); + } + events.length++; + events.swipe = context; + + context.start = function( event ) { + + // Bail if we're already working on a swipe event + if ( $.event.special.swipe.eventInProgress ) { + return; + } + $.event.special.swipe.eventInProgress = true; + + var stop, + start = $.event.special.swipe.start( event ), + origTarget = event.target, + emitted = false; + + context.move = function( event ) { + if ( !start || event.isDefaultPrevented() ) { + return; + } + + stop = $.event.special.swipe.stop( event ); + if ( !emitted ) { + emitted = $.event.special.swipe.handleSwipe( start, stop, thisObject, origTarget ); + if ( emitted ) { + + // Reset the context to make way for the next swipe event + $.event.special.swipe.eventInProgress = false; + } + } + // prevent scrolling + if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) { + event.preventDefault(); + } + }; + + context.stop = function() { + emitted = true; + + // Reset the context to make way for the next swipe event + $.event.special.swipe.eventInProgress = false; + $document.off( touchMoveEvent, context.move ); + context.move = null; + }; + + $document.on( touchMoveEvent, context.move ) + .one( touchStopEvent, context.stop ); + }; + $this.on( touchStartEvent, context.start ); + }, + + teardown: function() { + var events, context; + + events = $.data( this, "mobile-events" ); + if ( events ) { + context = events.swipe; + delete events.swipe; + events.length--; + if ( events.length === 0 ) { + $.removeData( this, "mobile-events" ); + } + } + + if ( context ) { + if ( context.start ) { + $( this ).off( touchStartEvent, context.start ); + } + if ( context.move ) { + $document.off( touchMoveEvent, context.move ); + } + if ( context.stop ) { + $document.off( touchStopEvent, context.stop ); + } + } + } + }; + $.each({ + swipeleft: "swipe.left", + swiperight: "swipe.right" + }, function( event, sourceEvent ) { + + $.event.special[ event ] = { + setup: function() { + $( this ).bind( sourceEvent, $.noop ); + }, + teardown: function() { + $( this ).unbind( sourceEvent ); + } + }; + }); +})( jQuery, this ); +*/ \ No newline at end of file diff --git a/libraries/foundation-6/js/plugins/foundation.util.triggers.js b/libraries/foundation-6/js/plugins/foundation.util.triggers.js new file mode 100755 index 00000000..17eb7cbc --- /dev/null +++ b/libraries/foundation-6/js/plugins/foundation.util.triggers.js @@ -0,0 +1,243 @@ +'use strict'; + +!function ($) { + + var MutationObserver = function () { + var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; + for (var i = 0; i < prefixes.length; i++) { + if (prefixes[i] + 'MutationObserver' in window) { + return window[prefixes[i] + 'MutationObserver']; + } + } + return false; + }(); + + var triggers = function (el, type) { + el.data(type).split(' ').forEach(function (id) { + $('#' + id)[type === 'close' ? 'trigger' : 'triggerHandler'](type + '.zf.trigger', [el]); + }); + }; + // Elements with [data-open] will reveal a plugin that supports it when clicked. + $(document).on('click.zf.trigger', '[data-open]', function () { + triggers($(this), 'open'); + }); + + // Elements with [data-close] will close a plugin that supports it when clicked. + // If used without a value on [data-close], the event will bubble, allowing it to close a parent component. + $(document).on('click.zf.trigger', '[data-close]', function () { + var id = $(this).data('close'); + if (id) { + triggers($(this), 'close'); + } else { + $(this).trigger('close.zf.trigger'); + } + }); + + // Elements with [data-toggle] will toggle a plugin that supports it when clicked. + $(document).on('click.zf.trigger', '[data-toggle]', function () { + triggers($(this), 'toggle'); + }); + + // Elements with [data-closable] will respond to close.zf.trigger events. + $(document).on('close.zf.trigger', '[data-closable]', function (e) { + e.stopPropagation(); + var animation = $(this).data('closable'); + + if (animation !== '') { + Foundation.Motion.animateOut($(this), animation, function () { + $(this).trigger('closed.zf'); + }); + } else { + $(this).fadeOut().trigger('closed.zf'); + } + }); + + $(document).on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', function () { + var id = $(this).data('toggle-focus'); + $('#' + id).triggerHandler('toggle.zf.trigger', [$(this)]); + }); + + /** + * Fires once after all other scripts have loaded + * @function + * @private + */ + $(window).load(function () { + checkListeners(); + }); + + function checkListeners() { + eventsListener(); + resizeListener(); + scrollListener(); + closemeListener(); + } + + //******** only fires this function once on load, if there's something to watch ******** + function closemeListener(pluginName) { + var yetiBoxes = $('[data-yeti-box]'), + plugNames = ['dropdown', 'tooltip', 'reveal']; + + if (pluginName) { + if (typeof pluginName === 'string') { + plugNames.push(pluginName); + } else if (typeof pluginName === 'object' && typeof pluginName[0] === 'string') { + plugNames.concat(pluginName); + } else { + console.error('Plugin names must be strings'); + } + } + if (yetiBoxes.length) { + var listeners = plugNames.map(function (name) { + return 'closeme.zf.' + name; + }).join(' '); + + $(window).off(listeners).on(listeners, function (e, pluginId) { + var plugin = e.namespace.split('.')[0]; + var plugins = $('[data-' + plugin + ']').not('[data-yeti-box="' + pluginId + '"]'); + + plugins.each(function () { + var _this = $(this); + + _this.triggerHandler('close.zf.trigger', [_this]); + }); + }); + } + } + + function resizeListener(debounce) { + var timer = void 0, + $nodes = $('[data-resize]'); + if ($nodes.length) { + $(window).off('resize.zf.trigger').on('resize.zf.trigger', function (e) { + if (timer) { + clearTimeout(timer); + } + + timer = setTimeout(function () { + + if (!MutationObserver) { + //fallback for IE 9 + $nodes.each(function () { + $(this).triggerHandler('resizeme.zf.trigger'); + }); + } + //trigger all listening elements and signal a resize event + $nodes.attr('data-events', "resize"); + }, debounce || 10); //default time to emit resize event + }); + } + } + + function scrollListener(debounce) { + var timer = void 0, + $nodes = $('[data-scroll]'); + if ($nodes.length) { + $(window).off('scroll.zf.trigger').on('scroll.zf.trigger', function (e) { + if (timer) { + clearTimeout(timer); + } + + timer = setTimeout(function () { + + if (!MutationObserver) { + //fallback for IE 9 + $nodes.each(function () { + $(this).triggerHandler('scrollme.zf.trigger'); + }); + } + //trigger all listening elements and signal a scroll event + $nodes.attr('data-events', "scroll"); + }, debounce || 10); //default time to emit scroll event + }); + } + } + + function eventsListener() { + if (!MutationObserver) { + return false; + } + var nodes = document.querySelectorAll('[data-resize], [data-scroll], [data-mutate]'); + + //element callback + var listeningElementsMutation = function (mutationRecordsList) { + var $target = $(mutationRecordsList[0].target); + //trigger the event handler for the element depending on type + switch ($target.attr("data-events")) { + + case "resize": + $target.triggerHandler('resizeme.zf.trigger', [$target]); + break; + + case "scroll": + $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); + break; + + // case "mutate" : + // console.log('mutate', $target); + // $target.triggerHandler('mutate.zf.trigger'); + // + // //make sure we don't get stuck in an infinite loop from sloppy codeing + // if ($target.index('[data-mutate]') == $("[data-mutate]").length-1) { + // domMutationObserver(); + // } + // break; + + default: + return false; + //nothing + } + }; + + if (nodes.length) { + //for each element that needs to listen for resizing, scrolling, (or coming soon mutation) add a single observer + for (var i = 0; i <= nodes.length - 1; i++) { + var elementObserver = new MutationObserver(listeningElementsMutation); + elementObserver.observe(nodes[i], { attributes: true, childList: false, characterData: false, subtree: false, attributeFilter: ["data-events"] }); + } + } + } + + // ------------------------------------ + + // [PH] + // Foundation.CheckWatchers = checkWatchers; + Foundation.IHearYou = checkListeners; + // Foundation.ISeeYou = scrollListener; + // Foundation.IFeelYou = closemeListener; +}(jQuery); + +// function domMutationObserver(debounce) { +// // !!! This is coming soon and needs more work; not active !!! // +// var timer, +// nodes = document.querySelectorAll('[data-mutate]'); +// // +// if (nodes.length) { +// // var MutationObserver = (function () { +// // var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; +// // for (var i=0; i < prefixes.length; i++) { +// // if (prefixes[i] + 'MutationObserver' in window) { +// // return window[prefixes[i] + 'MutationObserver']; +// // } +// // } +// // return false; +// // }()); +// +// +// //for the body, we need to listen for all changes effecting the style and class attributes +// var bodyObserver = new MutationObserver(bodyMutation); +// bodyObserver.observe(document.body, { attributes: true, childList: true, characterData: false, subtree:true, attributeFilter:["style", "class"]}); +// +// +// //body callback +// function bodyMutation(mutate) { +// //trigger all listening elements and signal a mutation event +// if (timer) { clearTimeout(timer); } +// +// timer = setTimeout(function() { +// bodyObserver.disconnect(); +// $('[data-mutate]').attr('data-events',"mutate"); +// }, debounce || 150); +// } +// } +// } \ No newline at end of file diff --git a/libraries/foundation-6/js/vendor/jquery.js b/libraries/foundation-6/js/vendor/jquery.js deleted file mode 100644 index f942984f..00000000 --- a/libraries/foundation-6/js/vendor/jquery.js +++ /dev/null @@ -1,9842 +0,0 @@ -/*! - * jQuery JavaScript Library v2.2.2 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-03-17T17:51Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -//"use strict"; -var arr = []; - -var document = window.document; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "2.2.2", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = jQuery.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - var realStringObj = obj && obj.toString(); - return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; - }, - - isPlainObject: function( obj ) { - var key; - - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call( obj, "constructor" ) && - !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android<4.0, iOS<6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf( "use strict" ) === 1 ) { - script = document.createElement( "script" ); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE9-11+ - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -// JSHint would error on this code due to the Symbol not being defined in ES5. -// Defining this global in .jshintrc would create a danger of using the global -// unguarded in another place, it seems safer to just disable JSHint for these -// three lines. -/* jshint ignore: start */ -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} -/* jshint ignore: end */ - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, nidselect, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; - while ( i-- ) { - groups[i] = nidselect + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( (parent = document.defaultView) && parent.top !== parent ) { - // Support: IE 11 - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( document.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - return m ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" + - "<select id='" + expando + "-\r\\' msallowcapture=''>" + - "<option selected=''></option></select>"; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( (oldCache = uniqueCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = "<a href='#'></a>"; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = "<input/>"; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - } ); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, - len = this.length, - ret = [], - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - // Support: Blackberry 4.6 - // gEBID returns nodes no longer in the document (#6963) - if ( elem && elem.parentNode ) { - - // Inject the element directly into the jQuery object - this.length = 1; - this[ 0 ] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( pos ? - pos.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnotwhite = ( /\S+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], - [ "notify", "progress", jQuery.Callbacks( "memory" ) ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this === promise ? newDefer.promise() : this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( function() { - - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || - ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. - // If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // Add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .progress( updateFunc( i, progressContexts, progressValues ) ) - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ); - } else { - --remaining; - } - } - } - - // If we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -} ); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -} ); - -/** - * The ready event handler and self cleanup method - */ -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called - // after the browser event has already occurred. - // Support: IE9-10 only - // Older IE sometimes signals "interactive" too soon - if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[ 0 ], key ) : emptyGet; -}; -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - /* jshint -W018 */ - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - register: function( owner, initial ) { - var value = initial || {}; - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable, non-writable property - // configurability must be true to allow the property to be - // deleted with the delete operator - } else { - Object.defineProperty( owner, this.expando, { - value: value, - writable: true, - configurable: true - } ); - } - return owner[ this.expando ]; - }, - cache: function( owner ) { - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( !acceptData( owner ) ) { - return {}; - } - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - owner[ this.expando ] && owner[ this.expando ][ key ]; - }, - access: function( owner, key, value ) { - var stored; - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase( key ) ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, camel, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key === undefined ) { - this.register( owner ); - - } else { - - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - camel = jQuery.camelCase( key ); - - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } - } - - i = name.length; - - while ( i-- ) { - delete cache[ name[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <= 35-45+ - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://code.google.com/p/chromium/issues/detail?id=378607 - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data, camelKey; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // with the key as-is - data = dataUser.get( elem, key ) || - - // Try to find dashed key if it exists (gh-2779) - // This is for 2.2.x only - dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() ); - - if ( data !== undefined ) { - return data; - } - - camelKey = jQuery.camelCase( key ); - - // Attempt to get data from the cache - // with the key camelized - data = dataUser.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - camelKey = jQuery.camelCase( key ); - this.each( function() { - - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = dataUser.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - dataUser.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf( "-" ) > -1 && data !== undefined ) { - dataUser.set( this, key, value ); - } - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || - !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, - maxIterations = 20, - currentValue = tween ? - function() { return tween.cur(); } : - function() { return jQuery.css( elem, prop, "" ); }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - do { - - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([\w:-]+)/ ); - -var rscriptType = ( /^$|\/(?:java|ecma)script/i ); - - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // Support: IE9 - option: [ 1, "<select multiple='multiple'>", "</select>" ], - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting <tbody> or other required elements. - thead: [ 1, "<table>", "</table>" ], - col: [ 2, "<table><colgroup>", "</colgroup></table>" ], - tr: [ 2, "<table><tbody>", "</tbody></table>" ], - td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], - - _default: [ 0, "", "" ] -}; - -// Support: IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - - // Support: IE9-11+ - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== "undefined" ? - context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0-4.3, Safari<=5.1 - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari<=5.1, Android<4.2 - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<=11+ - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = "<textarea>x</textarea>"; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE9 -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Support (at least): Chrome, IE9 - // Find delegate handlers - // Black-hole SVG <use> instance trees (#13180) - // - // Support: Firefox<=42+ - // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) - if ( delegateCount && cur.nodeType && - ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push( { elem: cur, handlers: matches } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + - "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split( " " ), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " + - "screenX screenY toElement" ).split( " " ), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + - ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + - ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome<28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android<4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://code.google.com/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, - - // Support: IE 10-11, Edge 10240+ - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /<script|<style|<link/i, - - // checked="checked" or checked - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rscriptTypeMasked = /^true\/(.*)/, - rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g; - -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName( "tbody" )[ 0 ] || - elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1></$2>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <= 35-45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <= 35-45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - - // Keep domManip exposed until 3.0 (gh-2225) - domManip: domManip, - - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); - - -var iframe, - elemdisplay = { - - // Support: Firefox - // We have to pre-define these values for FF (#10227) - HTML: "block", - BODY: "block" - }; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ - -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - display = jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = ( iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" ) ) - .appendTo( doc.documentElement ); - - // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse - doc = iframe[ 0 ].contentDocument; - - // Support: IE - doc.write(); - doc.close(); - - display = actualDisplay( nodeName, doc ); - iframe.detach(); - } - - // Store the correct default display - elemdisplay[ nodeName ] = display; - } - - return display; -} -var rmargin = ( /^margin/ ); - -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE<=11+, Firefox<=30+ (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var documentElement = document.documentElement; - - - -( function() { - var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE9-11+ - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + - "padding:0;margin-top:1px;position:absolute"; - container.appendChild( div ); - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - div.style.cssText = - - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;" + - "position:relative;display:block;" + - "margin:auto;border:1px;padding:1px;" + - "top:1%;width:50%"; - div.innerHTML = ""; - documentElement.appendChild( container ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - reliableMarginLeftVal = divStyle.marginLeft === "2px"; - boxSizingReliableVal = divStyle.width === "4px"; - - // Support: Android 4.0 - 4.3 only - // Some styles come back with percentage values, even though they shouldn't - div.style.marginRight = "50%"; - pixelMarginRightVal = divStyle.marginRight === "4px"; - - documentElement.removeChild( container ); - } - - jQuery.extend( support, { - pixelPosition: function() { - - // This test is executed only once but we still do memoizing - // since we can use the boxSizingReliable pre-computing. - // No need to check if the test was already performed, though. - computeStyleTests(); - return pixelPositionVal; - }, - boxSizingReliable: function() { - if ( boxSizingReliableVal == null ) { - computeStyleTests(); - } - return boxSizingReliableVal; - }, - pixelMarginRight: function() { - - // Support: Android 4.0-4.3 - // We're checking for boxSizingReliableVal here instead of pixelMarginRightVal - // since that compresses better and they're computed together anyway. - if ( boxSizingReliableVal == null ) { - computeStyleTests(); - } - return pixelMarginRightVal; - }, - reliableMarginLeft: function() { - - // Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37 - if ( boxSizingReliableVal == null ) { - computeStyleTests(); - } - return reliableMarginLeftVal; - }, - reliableMarginRight: function() { - - // Support: Android 2.3 - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. (#3333) - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - // This support function is only executed once so no memoizing is needed. - var ret, - marginDiv = div.appendChild( document.createElement( "div" ) ); - - // Reset CSS: box-sizing; display; margin; border; padding - marginDiv.style.cssText = div.style.cssText = - - // Support: Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;box-sizing:content-box;" + - "display:block;margin:0;border:0;padding:0"; - marginDiv.style.marginRight = marginDiv.style.width = "0"; - div.style.width = "1px"; - documentElement.appendChild( container ); - - ret = !parseFloat( window.getComputedStyle( marginDiv ).marginRight ); - - documentElement.removeChild( container ); - div.removeChild( marginDiv ); - - return ret; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - style = elem.style; - - computed = computed || getStyles( elem ); - ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined; - - // Support: Opera 12.1x only - // Fall back to style even without computed - // computed is undefined for elems on document fragments - if ( ( ret === "" || ret === undefined ) && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // Support: IE9 - // getPropertyValue is only needed for .css('filter') (#12537) - if ( computed ) { - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // http://dev.w3.org/csswg/cssom/#resolved-values - if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE9-11+ - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "O", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style; - -// Return a css property mapped to a potentially vendor prefixed property -function vendorPropName( name ) { - - // Shortcut for names that are not vendor prefixed - if ( name in emptyStyle ) { - return name; - } - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -function setPositiveNumber( elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i = extra === ( isBorderBox ? "border" : "content" ) ? - - // If we already have the right measurement, avoid augmentation - 4 : - - // Otherwise initialize for horizontal or vertical properties - name === "width" ? 1 : 0, - - val = 0; - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // At this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - - // At this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // At this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with offset property, which is equivalent to the border-box value - var valueIsBorderBox = true, - val = name === "width" ? elem.offsetWidth : elem.offsetHeight, - styles = getStyles( elem ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Support: IE11 only - // In IE 11 fullscreen elements inside of an iframe have - // 100x too small dimensions (gh-1764). - if ( document.msFullscreenElement && window.top !== window ) { - - // Support: IE11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - if ( elem.getClientRects().length ) { - val = Math.round( elem.getBoundingClientRect()[ name ] * 100 ); - } - } - - // Some non-html elements return undefined for offsetWidth, so check for null/undefined - // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 - // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 - if ( val <= 0 || val == null ) { - - // Fall back to computed then uncomputed css if necessary - val = curCSS( elem, name, styles ); - if ( val < 0 || val == null ) { - val = elem.style[ name ]; - } - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test( val ) ) { - return val; - } - - // Check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && - ( support.boxSizingReliable() || val === elem.style[ name ] ); - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - } - - // Use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -function showHide( elements, show ) { - var display, elem, hidden, - values = [], - index = 0, - length = elements.length; - - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - values[ index ] = dataPriv.get( elem, "olddisplay" ); - display = elem.style.display; - if ( show ) { - - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !values[ index ] && display === "none" ) { - elem.style.display = ""; - } - - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( elem.style.display === "" && isHidden( elem ) ) { - values[ index ] = dataPriv.access( - elem, - "olddisplay", - defaultDisplay( elem.nodeName ) - ); - } - } else { - hidden = isHidden( elem ); - - if ( display !== "none" || !hidden ) { - dataPriv.set( - elem, - "olddisplay", - hidden ? display : jQuery.css( elem, "display" ) - ); - } - } - } - - // Set the display of most of the elements in a second loop - // to avoid the constant reflow - for ( index = 0; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - if ( !show || elem.style.display === "none" || elem.style.display === "" ) { - elem.style.display = show ? values[ index ] || "" : "none"; - } - } - - return elements; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - "float": "cssFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - style = elem.style; - - name = jQuery.cssProps[ origName ] || - ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName ); - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - if ( type === "number" ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // Support: IE9-11+ - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - style[ name ] = value; - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = jQuery.camelCase( name ); - - // Make sure that we're working with the right name - name = jQuery.cssProps[ origName ] || - ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName ); - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( i, name ) { - jQuery.cssHooks[ name ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - elem.offsetWidth === 0 ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, name, extra ); - } ) : - getWidthOrHeight( elem, name, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = extra && getStyles( elem ), - subtract = extra && augmentWidthOrHeight( - elem, - name, - extra, - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - styles - ); - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ name ] = value; - value = jQuery.css( elem, name ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// Support: Android 2.3 -jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight, - function( elem, computed ) { - if ( computed ) { - return swap( elem, { "display": "inline-block" }, - curCSS, [ elem, "marginRight" ] ); - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( !rmargin.test( prefix ) ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( jQuery.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - }, - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHidden( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && - ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || - jQuery.cssHooks[ tween.prop ] ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE9 -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back Compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, timerId, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = jQuery.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4 ; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - /* jshint validthis: true */ - var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHidden( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Handle queue: false promises - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Height/width overflow pass - if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { - - // Make sure that nothing sneaks out - // Record all 3 overflow attributes because IE9-10 do not - // change the overflow attribute when overflowX and - // overflowY are set to the same value - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Set display property to inline-block for height/width - // animations on inline elements that are having width/height animated - display = jQuery.css( elem, "display" ); - - // Test default display if display is currently "none" - checkDisplay = display === "none" ? - dataPriv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display; - - if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) { - style.display = "inline-block"; - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // show/hide pass - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.exec( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // If there is dataShow left over from a stopped hide or show - // and we are going to proceed with show, we should pretend to be hidden - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - - // Any non-fx value stops us from restoring the original display value - } else { - display = undefined; - } - } - - if ( !jQuery.isEmptyObject( orig ) ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", {} ); - } - - // Store state if its toggle - enables .stop().toggle() to "reverse" - if ( toggle ) { - dataShow.hidden = !hidden; - } - if ( hidden ) { - jQuery( elem ).show(); - } else { - anim.done( function() { - jQuery( elem ).hide(); - } ); - } - anim.done( function() { - var prop; - - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - for ( prop in orig ) { - tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = tween.start; - if ( hidden ) { - tween.end = tween.start; - tween.start = prop === "width" || prop === "height" ? 1 : 0; - } - } - } - - // If this is a noop like .hide().hide(), restore an overwritten display value - } else if ( ( display === "none" ? defaultDisplay( elem.nodeName ) : display ) === "inline" ) { - style.display = display; - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = jQuery.camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( jQuery.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length ; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - if ( percent < 1 && length ) { - return remaining; - } else { - deferred.resolveWith( elem, [ animation ] ); - return false; - } - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length ; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length ; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( jQuery.isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - jQuery.proxy( result.stop, result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( jQuery.isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - // attach callbacks from options - return animation.progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); -} - -jQuery.Animation = jQuery.extend( Animation, { - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( jQuery.isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnotwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length ; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - jQuery.isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing - }; - - opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? - opt.duration : opt.duration in jQuery.fx.speeds ? - jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( jQuery.isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHidden ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = jQuery.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Checks the timer has not already been removed - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - if ( timer() ) { - jQuery.fx.start(); - } else { - jQuery.timers.pop(); - } -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( !timerId ) { - timerId = window.setInterval( jQuery.fx.tick, jQuery.fx.interval ); - } -}; - -jQuery.fx.stop = function() { - window.clearInterval( timerId ); - - timerId = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: iOS<=5.1, Android<=4.2+ - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE<=11+ - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: Android<=2.3 - // Options inside disabled selects are incorrectly marked as disabled - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Support: IE<=11+ - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // All attributes are lowercase - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - name = name.toLowerCase(); - hooks = jQuery.attrHooks[ name ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - jQuery.nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, propName, - i = 0, - attrNames = value && value.match( rnotwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - propName = jQuery.propFix[ name ] || name; - - // Boolean attributes get special treatment (#10870) - if ( jQuery.expr.match.bool.test( name ) ) { - - // Set corresponding property to false - elem[ propName ] = false; - } - - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle; - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ name ]; - attrHandle[ name ] = ret; - ret = getter( elem, name, isXML ) != null ? - name.toLowerCase() : - null; - attrHandle[ name ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - return tabindex ? - parseInt( tabindex, 10 ) : - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && elem.href ? - 0 : - -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - -var rclass = /[\t\r\n\f]/g; - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( jQuery.isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( typeof value === "string" && value ) { - classes = value.match( rnotwhite ) || []; - - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && - ( " " + curValue + " " ).replace( rclass, " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = jQuery.trim( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( jQuery.isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - if ( typeof value === "string" && value ) { - classes = value.match( rnotwhite ) || []; - - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && - ( " " + curValue + " " ).replace( rclass, " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = jQuery.trim( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value; - - if ( typeof stateVal === "boolean" && type === "string" ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( jQuery.isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( type === "string" ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = value.match( rnotwhite ) || []; - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + getClass( elem ) + " " ).replace( rclass, " " ) - .indexOf( className ) > -1 - ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g, - rspaces = /[\x20\t\r\n\f]+/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, isFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - - // Handle most common string cases - ret.replace( rreturn, "" ) : - - // Handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE10-11+ - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " ); - } - }, - select: { - get: function( elem ) { - var value, option, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? - max : - one ? index : 0; - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - ( support.optDisabled ? - !option.disabled : option.getAttribute( "disabled" ) === null ) && - ( !option.parentNode.disabled || - !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - - // Previously, `originalEvent: {}` was set here, so stopPropagation call - // would not be triggered on donor event, since in our own - // jQuery.event.stopPropagation function we had a check for existence of - // originalEvent.stopPropagation method, so, consequently it would be a noop. - // - // But now, this "simulate" function is used only for events - // for which stopPropagation() is noop, so there is no need for that anymore. - // - // For the 1.x branch though, guard for "click" and "submit" - // events is still used, but was moved to jQuery.event.stopPropagation function - // because `originalEvent` should point to the original event for the constancy - // with other events and for more focused logic - } - ); - - jQuery.event.trigger( e, null, elem ); - - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -jQuery.each( ( "blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error contextmenu" ).split( " " ), - function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; -} ); - -jQuery.fn.extend( { - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -} ); - - - - -support.focusin = "onfocusin" in window; - - -// Support: Firefox -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome, Safari -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = jQuery.now(); - -var rquery = ( /\?/ ); - - - -// Support: Android 2.3 -// Workaround failure to string-cast null input -jQuery.parseJSON = function( data ) { - return JSON.parse( data + "" ); -}; - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE9 - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rhash = /#.*$/, - rts = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || []; - - if ( jQuery.isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": jQuery.parseJSON, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // The jqXHR state - state = 0, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( state === 2 ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match == null ? null : match; - }, - - // Raw string - getAllResponseHeaders: function() { - return state === 2 ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - var lname = name.toLowerCase(); - if ( !state ) { - name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( !state ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( state < 2 ) { - for ( code in map ) { - - // Lazy-add the new callback in a way that preserves old ones - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } else { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ).complete = completeDeferred.add; - jqXHR.success = jqXHR.done; - jqXHR.error = jqXHR.fail; - - // Remove hash character (#7531: and string promotion) - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ).replace( rhash, "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE8-11+ - // IE throws exception if url is malformed, e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE8-11+ - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( state === 2 ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - cacheURL = s.url; - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // If data is available, append data to url - if ( s.data ) { - cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data ); - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add anti-cache in url if needed - if ( s.cache === false ) { - s.url = rts.test( cacheURL ) ? - - // If there is already a '_' parameter, set its value - cacheURL.replace( rts, "$1_=" + nonce++ ) : - - // Otherwise add one to the end - cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++; - } - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - for ( i in { success: 1, error: 1, complete: 1 } ) { - jqXHR[ i ]( s[ i ] ); - } - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( state === 2 ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - state = 1; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Propagate exception as error if not done - if ( state < 2 ) { - done( -1, e ); - - // Simply rethrow otherwise - } else { - throw e; - } - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Called once - if ( state === 2 ) { - return; - } - - // State is "done" now - state = 2; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( jQuery.isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - - -jQuery._evalUrl = function( url ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - async: false, - global: false, - "throws": true - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( jQuery.isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapAll( html.call( this, i ) ); - } ); - } - - if ( this[ 0 ] ) { - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function() { - return this.parent().each( function() { - if ( !jQuery.nodeName( this, "body" ) ) { - jQuery( this ).replaceWith( this.childNodes ); - } - } ).end(); - } -} ); - - -jQuery.expr.filters.hidden = function( elem ) { - return !jQuery.expr.filters.visible( elem ); -}; -jQuery.expr.filters.visible = function( elem ) { - - // Support: Opera <= 12.12 - // Opera reports offsetWidths and offsetHeights less than zero on some elements - // Use OR instead of AND as the element is not visible if either is true - // See tickets #10406 and #13132 - return elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0; -}; - - - - -var r20 = /%20/g, - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( jQuery.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && jQuery.type( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, value ) { - - // If value is a function, invoke it and return its value - value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); - s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); - }; - - // Set traditional to true for jQuery <= 1.3.2 behavior. - if ( traditional === undefined ) { - traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ).replace( r20, "+" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( i, elem ) { - var val = jQuery( this ).val(); - - return val == null ? - null : - jQuery.isArray( val ) ? - jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ) : - { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE9 - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE9 - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = callback( "error" ); - - // Support: IE9 - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain requests - if ( s.crossDomain ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( "<script>" ).prop( { - charset: s.scriptCharset, - src: s.url - } ).on( - "load error", - callback = function( evt ) { - script.remove(); - callback = null; - if ( evt ) { - complete( evt.type === "error" ? 404 : 200, evt.type ); - } - } - ); - - // Use native DOM manipulation to avoid our domManip AJAX trickery - document.head.appendChild( script[ 0 ] ); - }, - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -var oldCallbacks = [], - rjsonp = /(=)\?(?=&|$)|\?\?/; - -// Default jsonp settings -jQuery.ajaxSetup( { - jsonp: "callback", - jsonpCallback: function() { - var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); - this[ callback ] = true; - return callback; - } -} ); - -// Detect, normalize options and install callbacks for jsonp requests -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { - - var callbackName, overwritten, responseContainer, - jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? - "url" : - typeof s.data === "string" && - ( s.contentType || "" ) - .indexOf( "application/x-www-form-urlencoded" ) === 0 && - rjsonp.test( s.data ) && "data" - ); - - // Handle iff the expected data type is "jsonp" or we have a parameter to set - if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { - - // Get callback name, remembering preexisting value associated with it - callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? - s.jsonpCallback() : - s.jsonpCallback; - - // Insert callback into url or form data - if ( jsonProp ) { - s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); - } else if ( s.jsonp !== false ) { - s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; - } - - // Use data converter to retrieve json after script execution - s.converters[ "script json" ] = function() { - if ( !responseContainer ) { - jQuery.error( callbackName + " was not called" ); - } - return responseContainer[ 0 ]; - }; - - // Force json dataType - s.dataTypes[ 0 ] = "json"; - - // Install callback - overwritten = window[ callbackName ]; - window[ callbackName ] = function() { - responseContainer = arguments; - }; - - // Clean-up function (fires after converters) - jqXHR.always( function() { - - // If previous value didn't exist - remove it - if ( overwritten === undefined ) { - jQuery( window ).removeProp( callbackName ); - - // Otherwise restore preexisting value - } else { - window[ callbackName ] = overwritten; - } - - // Save back as free - if ( s[ callbackName ] ) { - - // Make sure that re-using the options doesn't screw things around - s.jsonpCallback = originalSettings.jsonpCallback; - - // Save the callback name for future use - oldCallbacks.push( callbackName ); - } - - // Call if it was a function and we have a response - if ( responseContainer && jQuery.isFunction( overwritten ) ) { - overwritten( responseContainer[ 0 ] ); - } - - responseContainer = overwritten = undefined; - } ); - - // Delegate to script - return "script"; - } -} ); - - - - -// Argument "data" should be string of html -// context (optional): If specified, the fragment will be created in this context, -// defaults to document -// keepScripts (optional): If true, will include scripts passed in the html string -jQuery.parseHTML = function( data, context, keepScripts ) { - if ( !data || typeof data !== "string" ) { - return null; - } - if ( typeof context === "boolean" ) { - keepScripts = context; - context = false; - } - context = context || document; - - var parsed = rsingleTag.exec( data ), - scripts = !keepScripts && []; - - // Single tag - if ( parsed ) { - return [ context.createElement( parsed[ 1 ] ) ]; - } - - parsed = buildFragment( [ data ], context, scripts ); - - if ( scripts && scripts.length ) { - jQuery( scripts ).remove(); - } - - return jQuery.merge( [], parsed.childNodes ); -}; - - -// Keep a copy of the old load method -var _load = jQuery.fn.load; - -/** - * Load a url into a page - */ -jQuery.fn.load = function( url, params, callback ) { - if ( typeof url !== "string" && _load ) { - return _load.apply( this, arguments ); - } - - var selector, type, response, - self = this, - off = url.indexOf( " " ); - - if ( off > -1 ) { - selector = jQuery.trim( url.slice( off ) ); - url = url.slice( 0, off ); - } - - // If it's a function - if ( jQuery.isFunction( params ) ) { - - // We assume that it's the callback - callback = params; - params = undefined; - - // Otherwise, build a param string - } else if ( params && typeof params === "object" ) { - type = "POST"; - } - - // If we have elements to modify, make the request - if ( self.length > 0 ) { - jQuery.ajax( { - url: url, - - // If "type" variable is undefined, then "GET" method will be used. - // Make value of this field explicit since - // user can override it through ajaxSetup method - type: type || "GET", - dataType: "html", - data: params - } ).done( function( responseText ) { - - // Save response for use in complete callback - response = arguments; - - self.html( selector ? - - // If a selector was specified, locate the right elements in a dummy div - // Exclude scripts to avoid IE 'Permission Denied' errors - jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : - - // Otherwise use the full result - responseText ); - - // If the request succeeds, this function gets "data", "status", "jqXHR" - // but they are ignored because response was set above. - // If it fails, this function gets "jqXHR", "status", "error" - } ).always( callback && function( jqXHR, status ) { - self.each( function() { - callback.apply( self, response || [ jqXHR.responseText, status, jqXHR ] ); - } ); - } ); - } - - return this; -}; - - - - -// Attach a bunch of functions for handling common AJAX events -jQuery.each( [ - "ajaxStart", - "ajaxStop", - "ajaxComplete", - "ajaxError", - "ajaxSuccess", - "ajaxSend" -], function( i, type ) { - jQuery.fn[ type ] = function( fn ) { - return this.on( type, fn ); - }; -} ); - - - - -jQuery.expr.filters.animated = function( elem ) { - return jQuery.grep( jQuery.timers, function( fn ) { - return elem === fn.elem; - } ).length; -}; - - - - -/** - * Gets a window from an element - */ -function getWindow( elem ) { - return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView; -} - -jQuery.offset = { - setOffset: function( elem, options, i ) { - var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, - position = jQuery.css( elem, "position" ), - curElem = jQuery( elem ), - props = {}; - - // Set position first, in-case top/left are set even on static elem - if ( position === "static" ) { - elem.style.position = "relative"; - } - - curOffset = curElem.offset(); - curCSSTop = jQuery.css( elem, "top" ); - curCSSLeft = jQuery.css( elem, "left" ); - calculatePosition = ( position === "absolute" || position === "fixed" ) && - ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1; - - // Need to be able to calculate position if either - // top or left is auto and position is either absolute or fixed - if ( calculatePosition ) { - curPosition = curElem.position(); - curTop = curPosition.top; - curLeft = curPosition.left; - - } else { - curTop = parseFloat( curCSSTop ) || 0; - curLeft = parseFloat( curCSSLeft ) || 0; - } - - if ( jQuery.isFunction( options ) ) { - - // Use jQuery.extend here to allow modification of coordinates argument (gh-1848) - options = options.call( elem, i, jQuery.extend( {}, curOffset ) ); - } - - if ( options.top != null ) { - props.top = ( options.top - curOffset.top ) + curTop; - } - if ( options.left != null ) { - props.left = ( options.left - curOffset.left ) + curLeft; - } - - if ( "using" in options ) { - options.using.call( elem, props ); - - } else { - curElem.css( props ); - } - } -}; - -jQuery.fn.extend( { - offset: function( options ) { - if ( arguments.length ) { - return options === undefined ? - this : - this.each( function( i ) { - jQuery.offset.setOffset( this, options, i ); - } ); - } - - var docElem, win, - elem = this[ 0 ], - box = { top: 0, left: 0 }, - doc = elem && elem.ownerDocument; - - if ( !doc ) { - return; - } - - docElem = doc.documentElement; - - // Make sure it's not a disconnected DOM node - if ( !jQuery.contains( docElem, elem ) ) { - return box; - } - - box = elem.getBoundingClientRect(); - win = getWindow( doc ); - return { - top: box.top + win.pageYOffset - docElem.clientTop, - left: box.left + win.pageXOffset - docElem.clientLeft - }; - }, - - position: function() { - if ( !this[ 0 ] ) { - return; - } - - var offsetParent, offset, - elem = this[ 0 ], - parentOffset = { top: 0, left: 0 }; - - // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, - // because it is its only offset parent - if ( jQuery.css( elem, "position" ) === "fixed" ) { - - // Assume getBoundingClientRect is there when computed position is fixed - offset = elem.getBoundingClientRect(); - - } else { - - // Get *real* offsetParent - offsetParent = this.offsetParent(); - - // Get correct offsets - offset = this.offset(); - if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) { - parentOffset = offsetParent.offset(); - } - - // Add offsetParent borders - parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ); - parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true ); - } - - // Subtract parent offsets and element margins - return { - top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), - left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) - }; - }, - - // This method will return documentElement in the following cases: - // 1) For the element inside the iframe without offsetParent, this method will return - // documentElement of the parent window - // 2) For the hidden or detached element - // 3) For body or html element, i.e. in case of the html node - it will return itself - // - // but those exceptions were never presented as a real life use-cases - // and might be considered as more preferable results. - // - // This logic, however, is not guaranteed and can change at any point in the future - offsetParent: function() { - return this.map( function() { - var offsetParent = this.offsetParent; - - while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) { - offsetParent = offsetParent.offsetParent; - } - - return offsetParent || documentElement; - } ); - } -} ); - -// Create scrollLeft and scrollTop methods -jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { - var top = "pageYOffset" === prop; - - jQuery.fn[ method ] = function( val ) { - return access( this, function( elem, method, val ) { - var win = getWindow( elem ); - - if ( val === undefined ) { - return win ? win[ prop ] : elem[ method ]; - } - - if ( win ) { - win.scrollTo( - !top ? val : win.pageXOffset, - top ? val : win.pageYOffset - ); - - } else { - elem[ method ] = val; - } - }, method, val, arguments.length ); - }; -} ); - -// Support: Safari<7-8+, Chrome<37-44+ -// Add the top/left cssHooks using jQuery.fn.position -// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 -// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280 -// getComputedStyle returns percent when specified for top/left/bottom/right; -// rather than make the css module depend on the offset module, just check for it here -jQuery.each( [ "top", "left" ], function( i, prop ) { - jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, - function( elem, computed ) { - if ( computed ) { - computed = curCSS( elem, prop ); - - // If curCSS returns percentage, fallback to offset - return rnumnonpx.test( computed ) ? - jQuery( elem ).position()[ prop ] + "px" : - computed; - } - } - ); -} ); - - -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, - function( defaultExtra, funcName ) { - - // Margin is only for outerHeight, outerWidth - jQuery.fn[ funcName ] = function( margin, value ) { - var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), - extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); - - return access( this, function( elem, type, value ) { - var doc; - - if ( jQuery.isWindow( elem ) ) { - - // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there - // isn't a whole lot we can do. See pull request at this URL for discussion: - // https://github.com/jquery/jquery/pull/764 - return elem.document.documentElement[ "client" + name ]; - } - - // Get document width or height - if ( elem.nodeType === 9 ) { - doc = elem.documentElement; - - // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], - // whichever is greatest - return Math.max( - elem.body[ "scroll" + name ], doc[ "scroll" + name ], - elem.body[ "offset" + name ], doc[ "offset" + name ], - doc[ "client" + name ] - ); - } - - return value === undefined ? - - // Get width or height on the element, requesting but not forcing parseFloat - jQuery.css( elem, type, extra ) : - - // Set width or height on the element - jQuery.style( elem, type, value, extra ); - }, type, chainable ? margin : undefined, chainable, null ); - }; - } ); -} ); - - -jQuery.fn.extend( { - - bind: function( types, data, fn ) { - return this.on( types, null, data, fn ); - }, - unbind: function( types, fn ) { - return this.off( types, null, fn ); - }, - - delegate: function( selector, types, data, fn ) { - return this.on( types, selector, data, fn ); - }, - undelegate: function( selector, types, fn ) { - - // ( namespace ) or ( selector, types [, fn] ) - return arguments.length === 1 ? - this.off( selector, "**" ) : - this.off( types, selector || "**", fn ); - }, - size: function() { - return this.length; - } -} ); - -jQuery.fn.andSelf = jQuery.fn.addBack; - - - - -// Register as a named AMD module, since jQuery can be concatenated with other -// files that may use define, but not via a proper concatenation script that -// understands anonymous AMD modules. A named AMD is safest and most robust -// way to register. Lowercase jquery is used because AMD module names are -// derived from file names, and jQuery is normally delivered in a lowercase -// file name. Do this after creating the global so that if an AMD module wants -// to call noConflict to hide this version of jQuery, it will work. - -// Note that for maximum portability, libraries that are not jQuery should -// declare themselves as anonymous modules, and avoid setting a global if an -// AMD loader is present. jQuery is a special case. For more information, see -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon - -if ( typeof define === "function" && define.amd ) { - define( "jquery", [], function() { - return jQuery; - } ); -} - - - -var - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$; - -jQuery.noConflict = function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; -}; - -// Expose jQuery and $ identifiers, even in AMD -// (#7102#comment:10, https://github.com/jquery/jquery/pull/557) -// and CommonJS for browser emulators (#13566) -if ( !noGlobal ) { - window.jQuery = window.$ = jQuery; -} - -return jQuery; -})); diff --git a/libraries/foundation-6/js/vendor/what-input.js b/libraries/foundation-6/js/vendor/what-input.js deleted file mode 100644 index 5d236710..00000000 --- a/libraries/foundation-6/js/vendor/what-input.js +++ /dev/null @@ -1,295 +0,0 @@ -window.whatInput = (function() { - - 'use strict'; - - /* - --------------- - variables - --------------- - */ - - // array of actively pressed keys - var activeKeys = []; - - // cache document.body - var body; - - // boolean: true if touch buffer timer is running - var buffer = false; - - // the last used input type - var currentInput = null; - - // `input` types that don't accept text - var nonTypingInputs = [ - 'button', - 'checkbox', - 'file', - 'image', - 'radio', - 'reset', - 'submit' - ]; - - // detect version of mouse wheel event to use - // via https://developer.mozilla.org/en-US/docs/Web/Events/wheel - var mouseWheel = detectWheel(); - - // list of modifier keys commonly used with the mouse and - // can be safely ignored to prevent false keyboard detection - var ignoreMap = [ - 16, // shift - 17, // control - 18, // alt - 91, // Windows key / left Apple cmd - 93 // Windows menu / right Apple cmd - ]; - - // mapping of events to input types - var inputMap = { - 'keydown': 'keyboard', - 'keyup': 'keyboard', - 'mousedown': 'mouse', - 'mousemove': 'mouse', - 'MSPointerDown': 'pointer', - 'MSPointerMove': 'pointer', - 'pointerdown': 'pointer', - 'pointermove': 'pointer', - 'touchstart': 'touch' - }; - - // add correct mouse wheel event mapping to `inputMap` - inputMap[detectWheel()] = 'mouse'; - - // array of all used input types - var inputTypes = []; - - // mapping of key codes to a common name - var keyMap = { - 9: 'tab', - 13: 'enter', - 16: 'shift', - 27: 'esc', - 32: 'space', - 37: 'left', - 38: 'up', - 39: 'right', - 40: 'down' - }; - - // map of IE 10 pointer events - var pointerMap = { - 2: 'touch', - 3: 'touch', // treat pen like touch - 4: 'mouse' - }; - - // touch buffer timer - var timer; - - - /* - --------------- - functions - --------------- - */ - - // allows events that are also triggered to be filtered out for `touchstart` - function eventBuffer() { - clearTimer(); - setInput(event); - - buffer = true; - timer = window.setTimeout(function() { - buffer = false; - }, 650); - } - - function bufferedEvent(event) { - if (!buffer) setInput(event); - } - - function unBufferedEvent(event) { - clearTimer(); - setInput(event); - } - - function clearTimer() { - window.clearTimeout(timer); - } - - function setInput(event) { - var eventKey = key(event); - var value = inputMap[event.type]; - if (value === 'pointer') value = pointerType(event); - - // don't do anything if the value matches the input type already set - if (currentInput !== value) { - var eventTarget = target(event); - var eventTargetNode = eventTarget.nodeName.toLowerCase(); - var eventTargetType = (eventTargetNode === 'input') ? eventTarget.getAttribute('type') : null; - - if ( - (// only if the user flag to allow typing in form fields isn't set - !body.hasAttribute('data-whatinput-formtyping') && - - // only if currentInput has a value - currentInput && - - // only if the input is `keyboard` - value === 'keyboard' && - - // not if the key is `TAB` - keyMap[eventKey] !== 'tab' && - - // only if the target is a form input that accepts text - ( - eventTargetNode === 'textarea' || - eventTargetNode === 'select' || - (eventTargetNode === 'input' && nonTypingInputs.indexOf(eventTargetType) < 0) - )) || ( - // ignore modifier keys - ignoreMap.indexOf(eventKey) > -1 - ) - ) { - // ignore keyboard typing - } else { - switchInput(value); - } - } - - if (value === 'keyboard') logKeys(eventKey); - } - - function switchInput(string) { - currentInput = string; - body.setAttribute('data-whatinput', currentInput); - - if (inputTypes.indexOf(currentInput) === -1) inputTypes.push(currentInput); - } - - function key(event) { - return (event.keyCode) ? event.keyCode : event.which; - } - - function target(event) { - return event.target || event.srcElement; - } - - function pointerType(event) { - if (typeof event.pointerType === 'number') { - return pointerMap[event.pointerType]; - } else { - return (event.pointerType === 'pen') ? 'touch' : event.pointerType; // treat pen like touch - } - } - - // keyboard logging - function logKeys(eventKey) { - if (activeKeys.indexOf(keyMap[eventKey]) === -1 && keyMap[eventKey]) activeKeys.push(keyMap[eventKey]); - } - - function unLogKeys(event) { - var eventKey = key(event); - var arrayPos = activeKeys.indexOf(keyMap[eventKey]); - - if (arrayPos !== -1) activeKeys.splice(arrayPos, 1); - } - - function bindEvents() { - body = document.body; - - // pointer events (mouse, pen, touch) - if (window.PointerEvent) { - body.addEventListener('pointerdown', bufferedEvent); - body.addEventListener('pointermove', bufferedEvent); - } else if (window.MSPointerEvent) { - body.addEventListener('MSPointerDown', bufferedEvent); - body.addEventListener('MSPointerMove', bufferedEvent); - } else { - - // mouse events - body.addEventListener('mousedown', bufferedEvent); - body.addEventListener('mousemove', bufferedEvent); - - // touch events - if ('ontouchstart' in window) { - body.addEventListener('touchstart', eventBuffer); - } - } - - // mouse wheel - body.addEventListener(mouseWheel, bufferedEvent); - - // keyboard events - body.addEventListener('keydown', unBufferedEvent); - body.addEventListener('keyup', unBufferedEvent); - document.addEventListener('keyup', unLogKeys); - } - - - /* - --------------- - utilities - --------------- - */ - - // detect version of mouse wheel event to use - // via https://developer.mozilla.org/en-US/docs/Web/Events/wheel - function detectWheel() { - return mouseWheel = 'onwheel' in document.createElement('div') ? - 'wheel' : // Modern browsers support "wheel" - - document.onmousewheel !== undefined ? - 'mousewheel' : // Webkit and IE support at least "mousewheel" - 'DOMMouseScroll'; // let's assume that remaining browsers are older Firefox - } - - - /* - --------------- - init - - don't start script unless browser cuts the mustard, - also passes if polyfills are used - --------------- - */ - - if ( - 'addEventListener' in window && - Array.prototype.indexOf - ) { - - // if the dom is already ready already (script was placed at bottom of <body>) - if (document.body) { - bindEvents(); - - // otherwise wait for the dom to load (script was placed in the <head>) - } else { - document.addEventListener('DOMContentLoaded', bindEvents); - } - } - - - /* - --------------- - api - --------------- - */ - - return { - - // returns string: the current input type - ask: function() { return currentInput; }, - - // returns array: currently pressed keys - keys: function() { return activeKeys; }, - - // returns array: all the detected input types - types: function() { return inputTypes; }, - - // accepts string: manually set the input type - set: switchInput - }; - -}()); diff --git a/libraries/foundation-6/js/what-input.js b/libraries/foundation-6/js/what-input.js deleted file mode 100644 index 5d236710..00000000 --- a/libraries/foundation-6/js/what-input.js +++ /dev/null @@ -1,295 +0,0 @@ -window.whatInput = (function() { - - 'use strict'; - - /* - --------------- - variables - --------------- - */ - - // array of actively pressed keys - var activeKeys = []; - - // cache document.body - var body; - - // boolean: true if touch buffer timer is running - var buffer = false; - - // the last used input type - var currentInput = null; - - // `input` types that don't accept text - var nonTypingInputs = [ - 'button', - 'checkbox', - 'file', - 'image', - 'radio', - 'reset', - 'submit' - ]; - - // detect version of mouse wheel event to use - // via https://developer.mozilla.org/en-US/docs/Web/Events/wheel - var mouseWheel = detectWheel(); - - // list of modifier keys commonly used with the mouse and - // can be safely ignored to prevent false keyboard detection - var ignoreMap = [ - 16, // shift - 17, // control - 18, // alt - 91, // Windows key / left Apple cmd - 93 // Windows menu / right Apple cmd - ]; - - // mapping of events to input types - var inputMap = { - 'keydown': 'keyboard', - 'keyup': 'keyboard', - 'mousedown': 'mouse', - 'mousemove': 'mouse', - 'MSPointerDown': 'pointer', - 'MSPointerMove': 'pointer', - 'pointerdown': 'pointer', - 'pointermove': 'pointer', - 'touchstart': 'touch' - }; - - // add correct mouse wheel event mapping to `inputMap` - inputMap[detectWheel()] = 'mouse'; - - // array of all used input types - var inputTypes = []; - - // mapping of key codes to a common name - var keyMap = { - 9: 'tab', - 13: 'enter', - 16: 'shift', - 27: 'esc', - 32: 'space', - 37: 'left', - 38: 'up', - 39: 'right', - 40: 'down' - }; - - // map of IE 10 pointer events - var pointerMap = { - 2: 'touch', - 3: 'touch', // treat pen like touch - 4: 'mouse' - }; - - // touch buffer timer - var timer; - - - /* - --------------- - functions - --------------- - */ - - // allows events that are also triggered to be filtered out for `touchstart` - function eventBuffer() { - clearTimer(); - setInput(event); - - buffer = true; - timer = window.setTimeout(function() { - buffer = false; - }, 650); - } - - function bufferedEvent(event) { - if (!buffer) setInput(event); - } - - function unBufferedEvent(event) { - clearTimer(); - setInput(event); - } - - function clearTimer() { - window.clearTimeout(timer); - } - - function setInput(event) { - var eventKey = key(event); - var value = inputMap[event.type]; - if (value === 'pointer') value = pointerType(event); - - // don't do anything if the value matches the input type already set - if (currentInput !== value) { - var eventTarget = target(event); - var eventTargetNode = eventTarget.nodeName.toLowerCase(); - var eventTargetType = (eventTargetNode === 'input') ? eventTarget.getAttribute('type') : null; - - if ( - (// only if the user flag to allow typing in form fields isn't set - !body.hasAttribute('data-whatinput-formtyping') && - - // only if currentInput has a value - currentInput && - - // only if the input is `keyboard` - value === 'keyboard' && - - // not if the key is `TAB` - keyMap[eventKey] !== 'tab' && - - // only if the target is a form input that accepts text - ( - eventTargetNode === 'textarea' || - eventTargetNode === 'select' || - (eventTargetNode === 'input' && nonTypingInputs.indexOf(eventTargetType) < 0) - )) || ( - // ignore modifier keys - ignoreMap.indexOf(eventKey) > -1 - ) - ) { - // ignore keyboard typing - } else { - switchInput(value); - } - } - - if (value === 'keyboard') logKeys(eventKey); - } - - function switchInput(string) { - currentInput = string; - body.setAttribute('data-whatinput', currentInput); - - if (inputTypes.indexOf(currentInput) === -1) inputTypes.push(currentInput); - } - - function key(event) { - return (event.keyCode) ? event.keyCode : event.which; - } - - function target(event) { - return event.target || event.srcElement; - } - - function pointerType(event) { - if (typeof event.pointerType === 'number') { - return pointerMap[event.pointerType]; - } else { - return (event.pointerType === 'pen') ? 'touch' : event.pointerType; // treat pen like touch - } - } - - // keyboard logging - function logKeys(eventKey) { - if (activeKeys.indexOf(keyMap[eventKey]) === -1 && keyMap[eventKey]) activeKeys.push(keyMap[eventKey]); - } - - function unLogKeys(event) { - var eventKey = key(event); - var arrayPos = activeKeys.indexOf(keyMap[eventKey]); - - if (arrayPos !== -1) activeKeys.splice(arrayPos, 1); - } - - function bindEvents() { - body = document.body; - - // pointer events (mouse, pen, touch) - if (window.PointerEvent) { - body.addEventListener('pointerdown', bufferedEvent); - body.addEventListener('pointermove', bufferedEvent); - } else if (window.MSPointerEvent) { - body.addEventListener('MSPointerDown', bufferedEvent); - body.addEventListener('MSPointerMove', bufferedEvent); - } else { - - // mouse events - body.addEventListener('mousedown', bufferedEvent); - body.addEventListener('mousemove', bufferedEvent); - - // touch events - if ('ontouchstart' in window) { - body.addEventListener('touchstart', eventBuffer); - } - } - - // mouse wheel - body.addEventListener(mouseWheel, bufferedEvent); - - // keyboard events - body.addEventListener('keydown', unBufferedEvent); - body.addEventListener('keyup', unBufferedEvent); - document.addEventListener('keyup', unLogKeys); - } - - - /* - --------------- - utilities - --------------- - */ - - // detect version of mouse wheel event to use - // via https://developer.mozilla.org/en-US/docs/Web/Events/wheel - function detectWheel() { - return mouseWheel = 'onwheel' in document.createElement('div') ? - 'wheel' : // Modern browsers support "wheel" - - document.onmousewheel !== undefined ? - 'mousewheel' : // Webkit and IE support at least "mousewheel" - 'DOMMouseScroll'; // let's assume that remaining browsers are older Firefox - } - - - /* - --------------- - init - - don't start script unless browser cuts the mustard, - also passes if polyfills are used - --------------- - */ - - if ( - 'addEventListener' in window && - Array.prototype.indexOf - ) { - - // if the dom is already ready already (script was placed at bottom of <body>) - if (document.body) { - bindEvents(); - - // otherwise wait for the dom to load (script was placed in the <head>) - } else { - document.addEventListener('DOMContentLoaded', bindEvents); - } - } - - - /* - --------------- - api - --------------- - */ - - return { - - // returns string: the current input type - ask: function() { return currentInput; }, - - // returns array: currently pressed keys - keys: function() { return activeKeys; }, - - // returns array: all the detected input types - types: function() { return inputTypes; }, - - // accepts string: manually set the input type - set: switchInput - }; - -}()); diff --git a/libraries/foundation-6/meteor-README.md b/libraries/foundation-6/meteor-README.md new file mode 100755 index 00000000..199bd5d4 --- /dev/null +++ b/libraries/foundation-6/meteor-README.md @@ -0,0 +1,150 @@ +# [Foundation for Sites](http://foundation.zurb.com) (v6.2.1) + +Foundation is the most advanced responsive front-end framework in the world. Quickly go from prototype to production, building sites or apps that work on any kind of device with Foundation. Includes layout constructs, like a fully customizable, responsive grid, commonly used JavaScript plugins, and full A11Y support. + +## Usage in Meteor + +- [Scss guide](meteor-README.md/#scss-guide) +- [JavaScript guide](meteor-README.md/#javascript-guide) + + +## Scss Guide + +### 1. Add the package + +``` +meteor add zurb:foundation-sites +``` + +### 2. In your main .scss file (in your app): + +Import foundation: + +``` +@import '{zurb:foundation-sites}/scss/foundation'; +``` + +Each component has an export mixin which prints out the CSS for that component. If you're cool with having everything, you just need one line of code: + +``` +@include foundation-everything; +``` + +Or you can comment out the components you don't need: + +``` +@include foundation-global-styles; +@include foundation-grid; +@include foundation-typography; +@include foundation-button; +@include foundation-forms; +@include foundation-visibility-classes; +@include foundation-float-classes; +@include foundation-accordion; +@include foundation-accordion-menu; +@include foundation-badge; +@include foundation-breadcrumbs; +@include foundation-button-group; +@include foundation-callout; +@include foundation-close-button; +@include foundation-drilldown-menu; +@include foundation-dropdown; +@include foundation-dropdown-menu; +@include foundation-flex-video; +@include foundation-label; +@include foundation-media-object; +@include foundation-menu; +@include foundation-off-canvas; +@include foundation-orbit; +@include foundation-pagination; +@include foundation-progress-bar; +@include foundation-slider; +@include foundation-sticky; +@include foundation-reveal; +@include foundation-switch; +@include foundation-table; +@include foundation-tabs; +@include foundation-thumbnail; +@include foundation-title-bar; +@include foundation-tooltip; +@include foundation-top-bar; +``` + +Note: For now there is a Motion-UI library added in the package (css, js files). It is needed for some Foundation plugins. Maybe in the future it will be separated package. + +### 3. Overwrite Foundation settings + +If you want you can copy `_settings.scss` file into your project. You can change settings and import it in your main .scss file (in your app): + +``` +@import 'settings'; // example when the _settings.scss file is in the same folder as your main .scss file +@import '{zurb:foundation-sites}/scss/foundation'; + +@include foundation-everything; // or individual ones + +``` + +**Important:** In the _settings.scss (the copied one in your app) you need to replace `@import 'util/util'` with `@import '{zurb:foundation-sites}/scss/util/util'` + +## JavaScript Guide + +You can use `$(document).foundation()` when you want to initialize some plugins in one Meteor Template. You could do something like: + +``` +Template.main.onRendered(function () { + $(document).foundation(); +}); +``` + +**But in Meteor it is better to have more control over it. So, you could use Foundation plugins API.** + +Let's take a look at the example with the Reveal plugin. + + +#### HTML part + +```html +<body> + {{> myReveal}} +</body> +``` + +```html +<template name="myReveal"> + <p><a data-open="myReveal">Click me for a modal</a></p> + + <div class="reveal" id="myReveal"> + <h1>Awesome. I Have It.</h1> + <p class="lead">Your couch. It is mine.</p> + <p>I'm a cool paragraph that lives inside of an even cooler modal. Wins!</p> + <button class="close-button" data-close aria-label="Close reveal" type="button"> + <span aria-hidden="true">×</span> + </button> + </div> +</template> +``` + +#### JavaScript part + +```javascript +Template.myReveal.onRendered(function () { + this.myRevealInstance = new Foundation.Reveal($('#myReveal')); +}); + +Template.myReveal.onDestroyed(function () { + let reveal = this.myRevealInstance; + if (reveal) { + reveal.destroy(); + } +}); +``` + +As you can see it is better to create small templates for plugins and initiate the plugins separately in the `onRendered` lifecycle hook. You should also remember to destroy the plugin using `onDestroyed`lifecycle hook on its template. + +You will find more info about particular plugins on its docs page here: [http://foundation.zurb.com/sites/docs/](http://foundation.zurb.com/sites/docs/) + +#### Known problems + +1. **Conflicts with Meteor events**. +Solution: Try to always wrap Foundation's DOM nodes into another ones in your Meteor templates. This applies only to nodes on which are initialized Foundation's JS plugins and which are the first nodes in the Meteor templates with attached custom Meteor events. For more details read the last comments here: [#7248](https://github.com/zurb/foundation-sites/issues/7248) + diff --git a/libraries/foundation-6/package.js b/libraries/foundation-6/package.js new file mode 100755 index 00000000..6ee6a889 --- /dev/null +++ b/libraries/foundation-6/package.js @@ -0,0 +1,93 @@ +Package.describe({ + name: 'zurb:foundation-sites', + summary: 'Foundation 6 - The most advanced responsive front-end framework in the world.', + version: '6.2.3', + git: 'https://github.com/zurb/foundation-sites.git', + documentation: 'meteor-README.md' +}); + +Package.onUse(function(api) { + api.versionsFrom('1.2.1'); + api.imply('fourseven:scss@3.4.1'); + api.use(['ecmascript', 'jquery', 'fourseven:scss@3.4.1'], 'client'); + api.addFiles('dist/foundation.js', 'client'); + api.addFiles([ + + 'scss/foundation.scss', + 'scss/_global.scss', + 'scss/settings/_settings.scss', + + 'scss/components/_accordion-menu.scss', + 'scss/components/_accordion.scss', + 'scss/components/_badge.scss', + 'scss/components/_breadcrumbs.scss', + 'scss/components/_button-group.scss', + 'scss/components/_button.scss', + 'scss/components/_callout.scss', + 'scss/components/_close-button.scss', + 'scss/components/_drilldown.scss', + 'scss/components/_dropdown-menu.scss', + 'scss/components/_dropdown.scss', + 'scss/components/_flex-video.scss', + 'scss/components/_flex.scss', + 'scss/components/_float.scss', + 'scss/components/_label.scss', + 'scss/components/_media-object.scss', + 'scss/components/_menu-icon.scss', + 'scss/components/_menu.scss', + 'scss/components/_off-canvas.scss', + 'scss/components/_orbit.scss', + 'scss/components/_pagination.scss', + 'scss/components/_progress-bar.scss', + 'scss/components/_reveal.scss', + 'scss/components/_slider.scss', + 'scss/components/_sticky.scss', + 'scss/components/_switch.scss', + 'scss/components/_table.scss', + 'scss/components/_tabs.scss', + 'scss/components/_thumbnail.scss', + 'scss/components/_title-bar.scss', + 'scss/components/_tooltip.scss', + 'scss/components/_top-bar.scss', + 'scss/components/_visibility.scss', + + 'scss/forms/_checkbox.scss', + 'scss/forms/_error.scss', + 'scss/forms/_fieldset.scss', + 'scss/forms/_forms.scss', + 'scss/forms/_help-text.scss', + 'scss/forms/_input-group.scss', + 'scss/forms/_label.scss', + 'scss/forms/_meter.scss', + 'scss/forms/_progress.scss', + 'scss/forms/_range.scss', + 'scss/forms/_select.scss', + 'scss/forms/_text.scss', + + 'scss/grid/_classes.scss', + 'scss/grid/_column.scss', + 'scss/grid/_flex-grid.scss', + 'scss/grid/_grid.scss', + 'scss/grid/_gutter.scss', + 'scss/grid/_layout.scss', + 'scss/grid/_position.scss', + 'scss/grid/_row.scss', + 'scss/grid/_size.scss', + + 'scss/typography/_alignment.scss', + 'scss/typography/_base.scss', + 'scss/typography/_helpers.scss', + 'scss/typography/_print.scss', + 'scss/typography/_typography.scss', + + 'scss/util/_breakpoint.scss', + 'scss/util/_color.scss', + 'scss/util/_flex.scss', + 'scss/util/_mixins.scss', + 'scss/util/_selector.scss', + 'scss/util/_unit.scss', + 'scss/util/_util.scss', + 'scss/util/_value.scss' + + ], 'client', {isImport: true}); +}); diff --git a/libraries/foundation-6/package.json b/libraries/foundation-6/package.json new file mode 100755 index 00000000..2c91ea4f --- /dev/null +++ b/libraries/foundation-6/package.json @@ -0,0 +1,116 @@ +{ + "name": "foundation-sites", + "version": "6.2.3", + "main": "dist/foundation.js", + "description": "The most advanced responsive front-end framework in the world.", + "author": "ZURB <foundation@zurb.com> (http://foundation.zurb.com)", + "homepage": "http://foundation.zurb.com/sites", + "scripts": { + "start": "gulp", + "test": "npm run test:sass && npm run test:javascript", + "test:sass": "mocha test/sass/test_sass.js", + "test:javascript": "gulp sass:foundation && gulp test:transpile-js && mocha-phantomjs test/javascript/index.html", + "test:visual": "gulp test", + "deploy": "gulp deploy", + "deploy:prep": "gulp deploy:prep", + "deploy:docs": "gulp deploy:docs" + }, + "dependencies": { + "jquery": "^2.2.0", + "what-input": "^2.0.0" + }, + "license": "MIT", + "devDependencies": { + "array-uniq": "^1.0.2", + "babel-core": "^6.3.26", + "babel-eslint": "^5.0.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.3.13", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.3.13", + "babel-plugin-transform-es2015-block-scoping": "^6.4.0", + "babel-plugin-transform-es2015-classes": "^6.3.15", + "babel-plugin-transform-es2015-destructuring": "^6.3.15", + "babel-plugin-transform-es2015-parameters": "^6.3.26", + "babel-plugin-transform-es2015-shorthand-properties": "^6.5.0", + "babel-plugin-transform-es2015-spread": "^6.4.0", + "babel-plugin-transform-es2015-template-literals": "^6.3.13", + "browser-sync": "^2.8.2", + "chai-jquery": "^2.0.0", + "chalk": "^1.1.1", + "clipboard": "^1.5.5", + "corejs-typeahead": "corejavascript/typeahead.js", + "foundation-docs": "zurb/foundation-docs", + "gulp": "^3.8.10", + "gulp-add-src": "^0.2.0", + "gulp-autoprefixer": "^2.3.1", + "gulp-babel": "^6.1.1", + "gulp-cache-bust": "^1.0.2", + "gulp-concat": "^2.4.3", + "gulp-cssnano": "^2.1.0", + "gulp-eslint": "^2.0.0", + "gulp-filter": "^3.0.1", + "gulp-if": "^2.0.0", + "gulp-load-plugins": "^1.2.0", + "gulp-mocha": "^2.2.0", + "gulp-newer": "^1.1.0", + "gulp-plumber": "^1.0.1", + "gulp-prompt": "^0.1.2", + "gulp-rename": "^1.2.2", + "gulp-replace": "^0.5.4", + "gulp-rsync": "0.0.5", + "gulp-ruby-sass": "^2.0.6", + "gulp-sass": "^2.1.0", + "gulp-scss-lint": "^0.3.9", + "gulp-sourcemaps": "^1.6.0", + "gulp-uglify": "^1.1.0", + "gulp-zip": "^3.2.0", + "inquirer": "^0.11.4", + "is-empty-object": "^1.1.1", + "js-yaml": "^3.5.4", + "mocha": "^2.3.3", + "mocha-phantomjs": "^4.0.2", + "motion-ui": "^1.1.0", + "multiline": "^1.0.2", + "octophant": "^1.0.0", + "opener": "^1.4.1", + "panini": "^1.3.0", + "parker": "0.0.9", + "prettyjson": "^1.1.3", + "require-dir": "^0.3.0", + "rimraf": "^2.3.2", + "run-sequence": "^1.1.4", + "sass-true": "^2.0.3", + "sinon": "^1.17.3", + "supercollider": "^1.4.0", + "touch": "^1.0.0", + "vinyl": "^1.1.1", + "vinyl-source-stream": "^1.1.0", + "yargs": "^4.2.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/zurb/foundation-sites" + }, + "bugs": { + "url": "https://github.com/zurb/foundation-sites/issues", + "email": "foundation@zurb.com" + }, + "keywords": [ + "handlebars-helper-rel", + "handlebars-helper-slugify" + ], + "eyeglass": { + "name": "foundation", + "sassDir": "scss", + "needs": "^0.8.0" + }, + "jspm": { + "format": "global", + "shim": { + "dist/foundation": { + "deps": [ + "jquery" + ] + } + } + } +} diff --git a/libraries/foundation-6/sache.json b/libraries/foundation-6/sache.json new file mode 100755 index 00000000..77899f89 --- /dev/null +++ b/libraries/foundation-6/sache.json @@ -0,0 +1,5 @@ +{ + "name": "foundation", + "description": "The most advanced responsive front-end framework in the world. Includes grids, buttons, ui elements, javascript plugins and more. Foundation 6 makes going from Prototype to Production faster than ever.", + "tags": ["grid", "typography", "buttons", "ui", "responsive-web-design"] +} diff --git a/libraries/foundation-6/scss/_global.scss b/libraries/foundation-6/scss/_global.scss new file mode 100755 index 00000000..86c83d8d --- /dev/null +++ b/libraries/foundation-6/scss/_global.scss @@ -0,0 +1,638 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +// scss-lint:disable ColorVariable, QualifyingElement, VendorPrefix + +//// +/// @group global +//// + +/// Font size attribute applied to `<html>` and `<body>`. We use 100% by default so the value is inherited from the user's browser settings. +/// @type Number +$global-font-size: 100% !default; + +/// Global width of your site. Used by the grid to determine row width. +/// @type Number +$global-width: rem-calc(1200) !default; + +/// Default line height for all type. `$global-lineheight` is 24px while `$global-font-size` is 16px +/// @type Number +$global-lineheight: 1.5 !default; + +/// Colors used for buttons, callouts, links, etc. There must always be a color called `primary`. +/// @type Map +$foundation-palette: ( + primary: #2199e8, + secondary: #777, + success: #3adb76, + warning: #ffae00, + alert: #ec5840, +) !default; + +/// Color used for light gray UI items. +/// @type Color +$light-gray: #e6e6e6 !default; + +/// Color used for medium gray UI items. +/// @type Color +$medium-gray: #cacaca !default; + +/// Color used for dark gray UI items. +/// @type Color +$dark-gray: #8a8a8a !default; + +/// Color used for black ui items. +/// @type Color +$black: #0a0a0a !default; + +/// Color used for white ui items. +/// @type Color +$white: #fefefe !default; + +/// Background color of the body. +/// @type Color +$body-background: $white !default; + +/// Text color of the body. +/// @type Color +$body-font-color: $black !default; + +/// Font stack of the body. +/// @type List +$body-font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif !default; + +/// Set to `true` to enable antialiased type, using the `-webkit-font-smoothing` and `-moz-osx-font-smoothing` CSS properties. +/// @type Boolean +$body-antialiased: true !default; + +/// Global value used for margin on components. +/// @type Number +$global-margin: 1rem !default; + +/// Global value used for padding on components. +/// @type Number +$global-padding: 1rem !default; + +/// Global font weight used for normal type. +/// @type Keyword | Number +$global-weight-normal: normal !default; + +/// Global font weight used for bold type. +/// @type Keyword | Number +$global-weight-bold: bold !default; + +/// Global value used for all elements that have a border radius. +/// @type Number +$global-radius: 0 !default; + +/// Sets the text direction of the CSS. Can be either `ltr` or `rtl`. +/// @type Keyword +$global-text-direction: ltr !default; + +/// Enables flexbox for components that support it. +/// @type Boolean +$global-flexbox: false !default; + +@if not map-has-key($foundation-palette, primary) { + @error 'In $foundation-palette, you must have a color named "primary".'; +} + +// Internal variables used for text direction +$global-left: if($global-text-direction == rtl, right, left); +$global-right: if($global-text-direction == rtl, left, right); + +// Internal variables used for colors +$primary-color: map-get($foundation-palette, primary); +$secondary-color: map-get($foundation-palette, secondary); +$success-color: map-get($foundation-palette, success); +$warning-color: map-get($foundation-palette, warning); +$alert-color: map-get($foundation-palette, alert); + +// Remove this in 6.3 +$-zf-menu-icon-imported: false; +$-zf-flex-classes-imported: false; + +@mixin foundation-global-styles { + @include -zf-normalize; + + // These styles are applied to a <meta> tag, which is read by the Foundation JavaScript + .foundation-mq { + font-family: '#{-zf-bp-serialize($breakpoints)}'; + } + + html { + font-size: $global-font-size; + box-sizing: border-box; + } + + // Set box-sizing globally to handle padding and border widths + *, + *::before, + *::after { + box-sizing: inherit; + } + + // Default body styles + body { + padding: 0; + margin: 0; + font-family: $body-font-family; + font-weight: $global-weight-normal; + line-height: $global-lineheight; + color: $body-font-color; + background: $body-background; + + @if ($body-antialiased) { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + } + + img { + // Grid defaults to get images and embeds to work properly + max-width: 100%; + height: auto; + -ms-interpolation-mode: bicubic; + + // Get rid of gap under images by making them display: inline-block; by default + display: inline-block; + vertical-align: middle; + } + + // Make sure textarea takes on height automatically + textarea { + height: auto; + min-height: 50px; + border-radius: $global-radius; + } + + // Make select elements are 100% width by default + select { + width: 100%; + border-radius: $global-radius; + } + + // Styles Google Maps and MapQuest embeds properly + // scss-lint:disable IdSelector + #map_canvas, + .map_canvas, + .mqa-display { + img, + embed, + object { + max-width: none !important; + } + } + + // Reset <button> styles created by most browsers + button { + @include disable-mouse-outline; + -webkit-appearance: none; + -moz-appearance: none; + background: transparent; + padding: 0; + border: 0; + border-radius: $global-radius; + line-height: 1; + } + + // Internal classes to show/hide elements in JavaScript + .is-visible { + display: block !important; + } + + .is-hidden { + display: none !important; + } +} + +/// Loads normalize.css. +/// @access private +@mixin -zf-normalize { + /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ + + /** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS and IE text size adjust after device orientation change, + * without disabling user zoom. + */ + + html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ + } + + /** + * Remove default margin. + */ + + body { + margin: 0; + } + + /* HTML5 display definitions + ========================================================================== */ + + /** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + + article, + aside, + details, + figcaption, + figure, + footer, + header, + hgroup, + main, + menu, + nav, + section, + summary { + display: block; + } + + /** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + + audio, + canvas, + progress, + video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ + } + + /** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + + audio:not([controls]) { + display: none; + height: 0; + } + + /** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. + */ + + [hidden], + template { + display: none; + } + + /* Links + ========================================================================== */ + + /** + * Remove the gray background color from active links in IE 10. + */ + + a { + background-color: transparent; + } + + /** + * Improve readability of focused elements when they are also in an + * active/hover state. + */ + + a:active, + a:hover { + outline: 0; + } + + /* Text-level semantics + ========================================================================== */ + + /** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + + abbr[title] { + border-bottom: 1px dotted; + } + + /** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + + b, + strong { + font-weight: bold; + } + + /** + * Address styling not present in Safari and Chrome. + */ + + dfn { + font-style: italic; + } + + /** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + + h1 { + font-size: 2em; + margin: 0.67em 0; + } + + /** + * Address styling not present in IE 8/9. + */ + + mark { + background: #ff0; + color: #000; + } + + /** + * Address inconsistent and variable font size in all browsers. + */ + + small { + font-size: 80%; + } + + /** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + + sub, + sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } + + sup { + top: -0.5em; + } + + sub { + bottom: -0.25em; + } + + /* Embedded content + ========================================================================== */ + + /** + * Remove border when inside `a` element in IE 8/9/10. + */ + + img { + border: 0; + } + + /** + * Correct overflow not hidden in IE 9/10/11. + */ + + svg:not(:root) { + overflow: hidden; + } + + /* Grouping content + ========================================================================== */ + + /** + * Address margin not present in IE 8/9 and Safari. + */ + + figure { + margin: 1em 40px; + } + + /** + * Address differences between Firefox and other browsers. + */ + + hr { + box-sizing: content-box; + height: 0; + } + + /** + * Contain overflow in all browsers. + */ + + pre { + overflow: auto; + } + + /** + * Address odd `em`-unit font size rendering in all browsers. + */ + + code, + kbd, + pre, + samp { + font-family: monospace, monospace; + font-size: 1em; + } + + /* Forms + ========================================================================== */ + + /** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + + /** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + + button, + input, + optgroup, + select, + textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ + } + + /** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + + button { + overflow: visible; + } + + /** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + + button, + select { + text-transform: none; + } + + /** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + + button, + html input[type="button"], /* 1 */ + input[type="reset"], + input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ + } + + /** + * Re-set default cursor for disabled elements. + */ + + button[disabled], + html input[disabled] { + cursor: not-allowed; + } + + /** + * Remove inner padding and border in Firefox 4+. + */ + + button::-moz-focus-inner, + input::-moz-focus-inner { + border: 0; + padding: 0; + } + + /** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + + input { + line-height: normal; + } + + /** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + + input[type="checkbox"], + input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ + } + + /** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + + input[type="number"]::-webkit-inner-spin-button, + input[type="number"]::-webkit-outer-spin-button { + height: auto; + } + + /** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. + */ + + input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + box-sizing: content-box; /* 2 */ + } + + /** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + + input[type="search"]::-webkit-search-cancel-button, + input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; + } + + /** + * Define consistent border, margin, and padding. + * [NOTE] We don't enable this ruleset in Foundation, because we want the <fieldset> element to have plain styling. + */ + + /* fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; + } */ + + /** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + + legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ + } + + /** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + + textarea { + overflow: auto; + } + + /** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + + optgroup { + font-weight: bold; + } + + /* Tables + ========================================================================== */ + + /** + * Remove most spacing between table cells. + */ + + table { + border-collapse: collapse; + border-spacing: 0; + } + + td, + th { + padding: 0; + } +} diff --git a/libraries/foundation-6/scss/components/_accordion-menu.scss b/libraries/foundation-6/scss/components/_accordion-menu.scss new file mode 100755 index 00000000..0241030c --- /dev/null +++ b/libraries/foundation-6/scss/components/_accordion-menu.scss @@ -0,0 +1,32 @@ +//// +/// @group accordion-menu +//// + +/// Sets if accordion menus have the default arrow styles. +/// @type Boolean +$accordionmenu-arrows: true !default; + +/// Sets accordion menu arrow color if arrow is used. +/// @type Color +$accordionmenu-arrow-color: $primary-color !default; + +@mixin foundation-accordion-menu { + @if $accordionmenu-arrows { + .is-accordion-submenu-parent > a { + position: relative; + + &::after { + @include css-triangle(6px, $accordionmenu-arrow-color, down); + position: absolute; + top: 50%; + margin-top: -4px; + right: 1rem; + } + } + + .is-accordion-submenu-parent[aria-expanded='true'] > a::after { + transform-origin: 50% 50%; + transform: scaleY(-1); + } + } +} diff --git a/libraries/foundation-6/scss/components/_accordion.scss b/libraries/foundation-6/scss/components/_accordion.scss new file mode 100755 index 00000000..fed5c30e --- /dev/null +++ b/libraries/foundation-6/scss/components/_accordion.scss @@ -0,0 +1,129 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group accordion +//// + +/// Default background color of an accordion group. +/// @type Color +$accordion-background: $white !default; + +/// If `true`, adds plus and minus icons to the side of each accordion title. +/// @type Boolean +$accordion-plusminus: true !default; + +/// Default text color for items in a Menu. +/// @type Color +$accordion-item-color: foreground($accordion-background, $primary-color) !default; + +/// Default background color on hover for items in a Menu. +/// @type Color +$accordion-item-background-hover: $light-gray !default; + +/// Default padding of an accordion item. +/// @type Number | List +$accordion-item-padding: 1.25rem 1rem !default; + +/// Default background color of tab content. +/// @type Color +$accordion-content-background: $white !default; + +/// Default border color of tab content. +/// @type Color +$accordion-content-border: 1px solid $light-gray !default; + +/// Default text color of tab content. +/// @type Color +$accordion-content-color: foreground($accordion-content-background, $body-font-color) !default; + +/// Default padding for tab content. +/// @type Number | List +$accordion-content-padding: 1rem !default; + +/// Adds styles for an accordion container. Apply this to the same element that gets `data-accordion`. +@mixin accordion-container { + list-style-type: none; + background: $accordion-background; + margin-#{$global-left}: 0; +} + +/// Adds styles for the accordion item. Apply this to the list item within an accordion ul. +@mixin accordion-item { + &:first-child > :first-child { + border-radius: $global-radius $global-radius 0 0; + } + + &:last-child > :last-child { + border-radius: 0 0 $global-radius $global-radius; + } +} + +/// Adds styles for the title of an accordion item. Apply this to the link within an accordion item. +@mixin accordion-title { + display: block; + padding: $accordion-item-padding; + line-height: 1; + font-size: rem-calc(12); + color: $accordion-item-color; + position: relative; + border: $accordion-content-border; + border-bottom: 0; + + :last-child:not(.is-active) > & { + border-radius: 0 0 $global-radius $global-radius; + border-bottom: $accordion-content-border; + } + + &:hover, + &:focus { + background-color: $accordion-item-background-hover; + } + + @if $accordion-plusminus { + &::before { + content: '+'; + position: absolute; + #{$global-right}: 1rem; + top: 50%; + margin-top: -0.5rem; + } + + .is-active > &::before { + content: '–'; + } + } +} + +/// Adds styles for accordion content. Apply this to the content pane below an accordion item's title. +@mixin accordion-content { + padding: $accordion-content-padding; + display: none; + border: $accordion-content-border; + border-bottom: 0; + background-color: $accordion-content-background; + color: $accordion-content-color; + + :last-child > &:last-child { + border-bottom: $accordion-content-border; + } +} + +@mixin foundation-accordion { + .accordion { + @include accordion-container; + } + + .accordion-item { + @include accordion-item; + } + + .accordion-title { + @include accordion-title; + } + + .accordion-content { + @include accordion-content; + } +} diff --git a/libraries/foundation-6/scss/components/_badge.scss b/libraries/foundation-6/scss/components/_badge.scss new file mode 100755 index 00000000..c3c0112d --- /dev/null +++ b/libraries/foundation-6/scss/components/_badge.scss @@ -0,0 +1,55 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group badge +//// + +/// Default background color for badges. +/// @type Color +$badge-background: $primary-color !default; + +/// Default text color for badges. +/// @type Color +$badge-color: foreground($badge-background) !default; + +/// Default padding inside badges. +/// @type Number +$badge-padding: 0.3em !default; + +/// Minimum width of a badge. +/// @type Number +$badge-minwidth: 2.1em !default; + +/// Default font size for badges. +/// @type Number +$badge-font-size: 0.6rem !default; + +/// Generates the base styles for a badge. +@mixin badge { + display: inline-block; + padding: $badge-padding; + min-width: $badge-minwidth; + font-size: $badge-font-size; + text-align: center; + border-radius: 50%; +} + +@mixin foundation-badge { + .badge { + @include badge; + + background: $badge-background; + color: $badge-color; + + @each $name, $color in $foundation-palette { + @if $name != primary { + &.#{$name} { + background: $color; + color: foreground($color); + } + } + } + } +} diff --git a/libraries/foundation-6/scss/components/_breadcrumbs.scss b/libraries/foundation-6/scss/components/_breadcrumbs.scss new file mode 100755 index 00000000..a02f7c26 --- /dev/null +++ b/libraries/foundation-6/scss/components/_breadcrumbs.scss @@ -0,0 +1,95 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group breadcrumbs +//// + +/// Margin around a breadcrumbs container. +/// @type Number +$breadcrumbs-margin: 0 0 $global-margin 0 !default; + +/// Font size of breadcrumb links. +/// @type Number +$breadcrumbs-item-font-size: rem-calc(11) !default; + +/// Color of breadcrumb links. +/// @type Color +$breadcrumbs-item-color: $primary-color !default; + +/// Color of the active breadcrumb link. +/// @type Color +$breadcrumbs-item-color-current: $black !default; + +/// Opacity of disabled breadcrumb links. +/// @type Number +$breadcrumbs-item-color-disabled: $medium-gray !default; + +/// Margin between breadcrumb items. +/// @type Number +$breadcrumbs-item-margin: 0.75rem !default; + +/// If `true`, makes breadcrumb links uppercase. +/// @type Boolean +$breadcrumbs-item-uppercase: true !default; + +/// If `true`, adds a slash between breadcrumb links. +/// @type Boolean +$breadcrumbs-item-slash: true !default; + +/// Adds styles for a breadcrumbs container, along with the styles for the `<li>` and `<a>` elements inside of it. +@mixin breadcrumbs-container { + @include clearfix; + list-style: none; + margin: $breadcrumbs-margin; + + // Item wrapper + li { + float: #{$global-left}; + color: $breadcrumbs-item-color-current; + font-size: $breadcrumbs-item-font-size; + cursor: default; + + @if $breadcrumbs-item-uppercase { + text-transform: uppercase; + } + + @if $breadcrumbs-item-slash { + // Need to escape the backslash + $slash: if($global-text-direction == 'ltr', '/', '\\'); + + &:not(:last-child)::after { + color: $medium-gray; + content: $slash; + margin: 0 $breadcrumbs-item-margin; + position: relative; + top: 1px; + opacity: 1; + } + } + @else { + margin-#{$global-right}: $breadcrumbs-item-margin; + } + } + + // Page links + a { + color: $breadcrumbs-item-color; + + &:hover { + text-decoration: underline; + } + } +} + +@mixin foundation-breadcrumbs { + .breadcrumbs { + @include breadcrumbs-container; + + .disabled { + color: $breadcrumbs-item-color-disabled; + cursor: not-allowed; + } + } +} diff --git a/libraries/foundation-6/scss/components/_button-group.scss b/libraries/foundation-6/scss/components/_button-group.scss new file mode 100755 index 00000000..4fa4047f --- /dev/null +++ b/libraries/foundation-6/scss/components/_button-group.scss @@ -0,0 +1,195 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group button-group +//// + +/// Margin for button groups. +/// @type Number +$buttongroup-margin: 1rem !default; + +/// Margin between buttons in a button group. +/// @type Border +$buttongroup-spacing: 1px !default; + +/// Selector for the buttons inside a button group. +/// @type String +$buttongroup-child-selector: '.button' !default; + +/// Maximum number of buttons that can be in an even-width button group. +/// @type Number +$buttongroup-expand-max: 6 !default; + +/// Add styles for a button group container. +/// @param {String} $child-selector [$buttongroup-child-selector] - Selector for the buttons inside a button group. +@mixin button-group( + $child-selector: $buttongroup-child-selector +) { + @include clearfix; + margin-bottom: $buttongroup-margin; + + @if $global-flexbox { + display: flex; + flex-wrap: nowrap; + align-items: stretch; + } + @else { + font-size: 0; + } + + #{$child-selector} { + margin: 0; + margin-#{$global-right}: $buttongroup-spacing; + margin-bottom: $buttongroup-spacing; + font-size: map-get($button-sizes, default); + + @if $global-flexbox { + flex: 0 0 auto; + } + + &:last-child { + margin-#{$global-right}: 0; + } + } +} + +/// Creates a full-width button group, making each button equal width. +/// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside a button group. +@mixin button-group-expand( + $selector: $buttongroup-child-selector, + $count: null +) { + @if not $global-flexbox { + margin-#{$global-right}: -$buttongroup-spacing; + + &::before, + &::after { + display: none; + } + } + + // scss-lint:disable ZeroUnit + #{$selector} { + @if $global-flexbox { + flex: 1 1 0px; + } + @else { + @for $i from 2 through $buttongroup-expand-max { + &:first-child:nth-last-child(#{$i}) { + &, &:first-child:nth-last-child(#{$i}) ~ #{$selector} { + display: inline-block; + width: calc(#{percentage(1 / $i)} - #{$buttongroup-spacing}); + margin-#{$global-right}: $buttongroup-spacing; + + &:last-child { + margin-#{$global-right}: $buttongroup-spacing * -$buttongroup-expand-max; + } + } + } + } + } + } +} + +/// Stacks the buttons in a button group. +/// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside the button group. +@mixin button-group-stack( + $selector: $buttongroup-child-selector +) { + @if $global-flexbox { + flex-wrap: wrap; + } + + #{$selector} { + @if $global-flexbox { + flex: 0 0 100%; + } + @else { + width: 100%; + } + + &:last-child { + margin-bottom: 0; + } + } +} + +/// Un-stacks the buttons in a button group. +/// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside the button group. +@mixin button-group-unstack( + $selector: $buttongroup-child-selector +) { + // scss-lint:disable ZeroUnit + #{$selector} { + @if $global-flexbox { + flex: 1 1 0px; + } + @else { + width: auto; + } + margin-bottom: 0; + } +} + +@mixin foundation-button-group { + .button-group { + @include button-group; + + // Sizes + @each $size, $value in map-remove($button-sizes, default) { + &.#{$size} #{$buttongroup-child-selector} { + font-size: $value; + } + } + + // Even-width Group + &.expanded { @include button-group-expand; } + + // Colors + @each $name, $color in $foundation-palette { + @if $button-fill != hollow { + &.#{$name} #{$buttongroup-child-selector} { + @include button-style($color, auto, auto); + } + } + @else { + &.#{$name} #{$buttongroup-child-selector} { + @include button-hollow; + @include button-hollow-style($color); + } + } + } + + &.stacked, + &.stacked-for-small, + &.stacked-for-medium { + @include button-group-stack; + } + + &.stacked-for-small { + @include breakpoint(medium) { + @include button-group-unstack; + } + } + + &.stacked-for-medium { + @include breakpoint(large) { + @include button-group-unstack; + } + } + + // scss-lint:disable MergeableSelector + &.stacked-for-small.expanded { + @include breakpoint(small only) { + display: block; + + #{$buttongroup-child-selector} { + display: block; + margin-#{$global-right}: 0; + } + } + } + } +} diff --git a/libraries/foundation-6/scss/components/_button.scss b/libraries/foundation-6/scss/components/_button.scss new file mode 100755 index 00000000..9860dd30 --- /dev/null +++ b/libraries/foundation-6/scss/components/_button.scss @@ -0,0 +1,265 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group button +//// + +/// Padding inside buttons. +/// @type List +$button-padding: 0.85em 1em !default; + +/// Margin around buttons. +/// @type List +$button-margin: 0 0 $global-margin 0 !default; + +/// Default fill for buttons. Can either be `solid` or `hollow`. +/// @type Keyword +$button-fill: solid !default; + +/// Default background color for buttons. +/// @type Color +$button-background: $primary-color !default; + +/// Background color on hover for buttons. +/// @type Color +$button-background-hover: scale-color($button-background, $lightness: -15%) !default; + +/// Font color for buttons. +/// @type List +$button-color: $white !default; + +/// Font color for buttons, if the background is light. +/// @type List +$button-color-alt: $black !default; + +/// Border radius for buttons, defaulted to global-radius. +/// @type Number +$button-radius: $global-radius !default; + +/// Sizes for buttons. +/// @type Map +$button-sizes: ( + tiny: 0.6rem, + small: 0.75rem, + default: 0.9rem, + large: 1.25rem, +) !default; + +/// opacity for a disabled button. +/// @type List +$button-opacity-disabled: 0.25 !default; + +// Internal: flip from margin-right to margin-left for defaults +@if $global-text-direction == 'rtl' { + $button-margin: 0 0 $global-margin $global-margin !default; +} + +// TODO: Document button-base() mixin +@mixin button-base { + @include disable-mouse-outline; + display: inline-block; + text-align: center; + line-height: 1; + cursor: pointer; + -webkit-appearance: none; + transition: background-color 0.25s ease-out, color 0.25s ease-out; + vertical-align: middle; + border: 1px solid transparent; + border-radius: $button-radius; + padding: $button-padding; + margin: $button-margin; + font-size: map-get($button-sizes, default); +} + +/// Expands a button to make it full-width. +/// @param {Boolean} $expand [true] - Set to `true` to enable the expand behavior. Set to `false` to reverse this behavior. +@mixin button-expand($expand: true) { + @if $expand { + display: block; + width: 100%; + margin-left: 0; + margin-right: 0; + } + @else { + display: inline-block; + width: auto; + margin: $button-margin; + } +} + +/// Sets the visual style of a button. +/// @param {Color} $background [$button-background] - Background color of the button. +/// @param {Color} $background-hover [$button-background-hover] - Background color of the button on hover. Set to `auto` to have the mixin automatically generate a hover color. +/// @param {Color} $color [$button-color] - Text color of the button. Set to `auto` to automatically generate a color based on the background color. +@mixin button-style( + $background: $button-background, + $background-hover: $button-background-hover, + $color: $button-color +) { + @if $color == auto { + $color: foreground($background, $button-color-alt, $button-color); + } + + @if $background-hover == auto { + $background-hover: scale-color($background, $lightness: -20%); + } + + background-color: $background; + color: $color; + + &:hover, &:focus { + background-color: $background-hover; + color: $color; + } +} + +/// Removes background fill on hover and focus for hollow buttons. +@mixin button-hollow { + &, + &:hover, &:focus { + background-color: transparent; + } +} + +@mixin button-hollow-style($color: $primary-color) { + $color-hover: scale-color($color, $lightness: -50%); + + border: 1px solid $color; + color: $color; + + &:hover, &:focus { + border-color: $color-hover; + color: $color-hover; + } +} + +/// Adds disabled styles to a button by fading the element, reseting the cursor, and disabling pointer events. +@mixin button-disabled { + opacity: $button-opacity-disabled; + cursor: not-allowed; + + &:hover, &:focus { + background-color: $button-background; + color: $button-color; + } +} + +/// Adds a dropdown arrow to a button. +/// @param {Number} $size [0.4em] - Size of the arrow. We recommend using an `em` value so the triangle scales when used inside different sizes of buttons. +/// @param {Color} $color [white] - Color of the arrow. +/// @param {Number} $offset [$button-padding] - Distance between the arrow and the text of the button. Defaults to whatever the right padding of a button is. +@mixin button-dropdown( + $size: 0.4em, + $color: $white, + $offset: get-side($button-padding, right) +) { + &::after { + @include css-triangle($size, $color, down); + position: relative; + top: 0.4em; // Aligns the arrow with the text of the button + float: #{$global-right}; + margin-#{$global-left}: get-side($button-padding, right); + display: inline-block; + } +} + +/// Adds all styles for a button. For more granular control over styles, use the individual button mixins. +/// @param {Boolean} $expand [false] - Set to `true` to make the button full-width. +/// @param {Color} $background [$button-background] - Background color of the button. +/// @param {Color} $background-hover [$button-background-hover] - Background color of the button on hover. Set to `auto` to have the mixin automatically generate a hover color. +/// @param {Color} $color [$button-color] - Text color of the button. Set to `auto` to automatically generate a color based on the background color. +/// @param {Keyword} $style [solid] - Set to `hollow` to create a hollow button. The color defined in `$background` will be used as the primary color of the button. +@mixin button( + $expand: false, + $background: $button-background, + $background-hover: $button-background-hover, + $color: $button-color, + $style: $button-fill +) { + @include button-base; + + @if $style == solid { + @include button-style($background, $background-hover, $color); + } + @else if $style == hollow { + @include button-hollow; + @include button-hollow-style($background); + } + + @if $expand { + @include button-expand; + } +} + +@mixin foundation-button { + .button { + @include button; + + // Sizes + @each $size, $value in map-remove($button-sizes, default) { + &.#{$size} { + font-size: $value; + } + } + + &.expanded { @include button-expand; } + + // Colors + @each $name, $color in $foundation-palette { + @if $button-fill != hollow { + &.#{$name} { + @include button-style($color, auto, auto); + } + } + @else { + &.#{$name} { + @include button-hollow-style($color); + } + + &.#{$name}.dropdown::after { + border-top-color: $color; + } + } + } + + // Hollow style + @if $button-fill != hollow { + &.hollow { + @include button-hollow; + @include button-hollow-style; + + @each $name, $color in $foundation-palette { + &.#{$name} { + @include button-hollow-style($color); + } + } + } + } + + // Disabled style + &.disabled, + &[disabled] { + @include button-disabled; + } + + // Dropdown arrow + &.dropdown { + @include button-dropdown; + + @if $button-fill == hollow { + &::after { + border-top-color: $button-background; + } + } + } + + // Button with dropdown arrow only + &.arrow-only::after { + margin-#{$global-left}: 0; + float: none; + top: -0.1em; + } + } +} diff --git a/libraries/foundation-6/scss/components/_callout.scss b/libraries/foundation-6/scss/components/_callout.scss new file mode 100755 index 00000000..cb466511 --- /dev/null +++ b/libraries/foundation-6/scss/components/_callout.scss @@ -0,0 +1,105 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group callout +//// + +/// Default background color. +/// @type Color +$callout-background: $white !default; + +/// Default fade value for callout backgrounds. +/// @type Number +$callout-background-fade: 85% !default; + +/// Default border style for callouts. +/// @type List +$callout-border: 1px solid rgba($black, 0.25) !default; + +/// Default bottom margin for callouts. +/// @type Number +$callout-margin: 0 0 1rem 0 !default; + +/// Default inner padding for callouts. +/// @type Number +$callout-padding: 1rem !default; + +/// Default font color for callouts. +/// @type Color +$callout-font-color: $body-font-color !default; + +/// Default font color for callouts, if the callout has a dark background. +/// @type Color +$callout-font-color-alt: $body-background !default; + +/// Default border radius for callouts. +/// @type Color +$callout-radius: $global-radius !default; + +/// Amount to tint links used within colored panels. Set to `false` to disable this feature. +/// @type Number | Boolean +$callout-link-tint: 30% !default; + +/// Adds basic styles for a callout, including padding and margin. +@mixin callout-base() { + margin: $callout-margin; + padding: $callout-padding; + border: $callout-border; + border-radius: $callout-radius; + position: relative; + color: $callout-font-color; + + // Respect the padding, fool. + > :first-child { + margin-top: 0; + } + + > :last-child { + margin-bottom: 0; + } +} + +/// Generate quick styles for a callout using a single color as a baseline. +/// @param {Color} $color [$callout-background] - Color to use. +@mixin callout-style($color: $callout-background) { + $background: scale-color($color, $lightness: $callout-background-fade); + + background-color: $background; +} + +@mixin callout-size($padding) { + padding-top: $padding; + padding-right: $padding; + padding-bottom: $padding; + padding-left: $padding; +} + + +/// Adds styles for a callout. +/// @param {Color} $color [$callout-background] - Color to use. +@mixin callout($color: $callout-background) { + @include callout-base; + @include callout-style($color); +} + +@mixin foundation-callout { + .callout { + @include callout; + + @each $name, $color in $foundation-palette { + &.#{$name} { + @include callout-style($color); + } + } + + &.small { + @include callout-size(0.5rem); + } + + &.large { + @include callout-size(3rem); + } + } +} diff --git a/libraries/foundation-6/scss/components/_close-button.scss b/libraries/foundation-6/scss/components/_close-button.scss new file mode 100755 index 00000000..7ea8f237 --- /dev/null +++ b/libraries/foundation-6/scss/components/_close-button.scss @@ -0,0 +1,61 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group close-button +//// + +/// Default position of the close button. The first value should be `right` or `left`, and the second value should be `top` or `bottom`. +/// @type List +$closebutton-position: right top !default; + +/// Right (or left) offset for a close button. +/// @type Number +$closebutton-offset-horizontal: 1rem !default; + +/// Top (or bottom) offset for a close button. +/// @type Number +$closebutton-offset-vertical: 0.5rem !default; + +/// Default font size of the close button. +/// @type Number +$closebutton-size: 2em !default; + +/// The line-height of the close button. It affects the spacing of the element. +/// @type Number +$closebutton-lineheight: 1 !default; + +/// Default color of the close button. +/// @type Color +$closebutton-color: $dark-gray !default; + +/// Default color of the close button when being hovered on. +/// @type Color +$closebutton-color-hover: $black !default; + +/// Adds styles for a close button, using the styles in the settings variables. +@mixin close-button { + $x: nth($closebutton-position, 1); + $y: nth($closebutton-position, 2); + + @include disable-mouse-outline; + position: absolute; + color: $closebutton-color; + #{$x}: $closebutton-offset-horizontal; + #{$y}: $closebutton-offset-vertical; + font-size: $closebutton-size; + line-height: $closebutton-lineheight; + cursor: pointer; + + &:hover, + &:focus { + color: $closebutton-color-hover; + } +} + +@mixin foundation-close-button { + .close-button { + @include close-button; + } +} diff --git a/libraries/foundation-6/scss/components/_drilldown.scss b/libraries/foundation-6/scss/components/_drilldown.scss new file mode 100755 index 00000000..159dbb4e --- /dev/null +++ b/libraries/foundation-6/scss/components/_drilldown.scss @@ -0,0 +1,79 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group drilldown +//// + +/// Transition property to use for animating menus. +/// @type Transition +$drilldown-transition: transform 0.15s linear !default; + +/// Adds arrows to drilldown items with submenus, as well as the back button. +/// @type Boolean +$drilldown-arrows: true !default; + +/// Sets drilldown arrow color if arrow is used. +/// @type Color +$drilldown-arrow-color: $primary-color !default; + +/// Background color for drilldown submenus. +/// @type Color +$drilldown-background: $white !default; + +@mixin foundation-drilldown-menu { + // Applied to the Menu container + .is-drilldown { + position: relative; + overflow: hidden; + + li { + display: block !important; + } + } + + // Applied to nested <ul>s + .is-drilldown-submenu { + position: absolute; + top: 0; + #{$global-left}: 100%; + z-index: -1; + height: 100%; + width: 100%; + background: $drilldown-background; + transition: $drilldown-transition; + + &.is-active { + z-index: 1; + display: block; + transform: translateX(if($global-text-direction == ltr, -100%, 100%)); + } + + &.is-closing { + transform: translateX(if($global-text-direction == ltr, 100%, -100%)); + } + } + + @if $drilldown-arrows { + .is-drilldown-submenu-parent > a { + position: relative; + + &::after { + @include css-triangle(6px, $drilldown-arrow-color, $global-right); + position: absolute; + top: 50%; + margin-top: -6px; + #{$global-right}: 1rem; + } + } + + .js-drilldown-back > a::before { + @include css-triangle(6px, $drilldown-arrow-color, $global-left); + border-#{$global-left}-width: 0; + display: inline-block; + vertical-align: middle; + margin-#{$global-right}: 0.75rem; // Creates space between the arrow and the text + } + } +} diff --git a/libraries/foundation-6/scss/components/_dropdown-menu.scss b/libraries/foundation-6/scss/components/_dropdown-menu.scss new file mode 100755 index 00000000..0ce9c1f5 --- /dev/null +++ b/libraries/foundation-6/scss/components/_dropdown-menu.scss @@ -0,0 +1,221 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group dropdown-menu +//// + +/// Enables arrows for items with dropdown menus. +/// @type Boolean +$dropdownmenu-arrows: true !default; + +/// Sets dropdown menu arrow color if arrow is used. +/// @type Color +$dropdownmenu-arrow-color: $anchor-color !default; + +/// Minimum width of dropdown sub-menus. +/// @type Length +$dropdownmenu-min-width: 200px !default; + +/// Background color for dropdowns. +/// @type Color +$dropdownmenu-background: $white !default; + +/// Border for dropdown sub-menus. +/// @type List +$dropdownmenu-border: 1px solid $medium-gray !default; + +// Border width for dropdown sub-menus. +// Used to adjust top margin of a sub-menu if a border is used. +// @type Length +$dropdownmenu-border-width: nth($dropdownmenu-border, 1); + +@mixin left-right-arrows { + > a::after { + #{$global-right}: 14px; + margin-top: -3px; + } + + &.opens-left > a::after { + @include css-triangle(5px, $dropdownmenu-arrow-color, left); + } + + &.opens-right > a::after { + @include css-triangle(5px, $dropdownmenu-arrow-color, right); + } +} + +@mixin dropdown-menu-direction($dir: horizontal) { + @if $dir == horizontal { + > li.opens-left { + > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; + } + } + + > li.opens-right { + > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; + } + } + + @if $dropdownmenu-arrows { + > li.is-dropdown-submenu-parent > a { + padding-#{$global-right}: 1.5rem; + position: relative; + } + + > li.is-dropdown-submenu-parent > a::after { + @include css-triangle(5px, $dropdownmenu-arrow-color, down); + #{$global-right}: 5px; + margin-top: -2px; + } + } + } + @else if $dir == vertical { + > li { + .is-dropdown-submenu { + top: 0; + } + + &.opens-left { + > .is-dropdown-submenu { + left: auto; + right: 100%; + } + } + + &.opens-right { + > .is-dropdown-submenu { + right: auto; + left: 100%; + } + } + + @if $dropdownmenu-arrows { + @include left-right-arrows; + } + } + } + @else { + @warn 'The direction used for dropdown-menu-direction() must be horizontal or vertical.'; + } +} + +@mixin foundation-dropdown-menu { + .dropdown.menu { + @include dropdown-menu-direction(horizontal); + + a { + @include disable-mouse-outline; + } + + .no-js & ul { + display: none; + } + + &.vertical { + @include dropdown-menu-direction(vertical); + } + + @each $size in $breakpoint-classes { + @if $size != $-zf-zero-breakpoint { + @include breakpoint($size) { + &.#{$size}-horizontal { + @include dropdown-menu-direction(horizontal); + } + + &.#{$size}-vertical { + @include dropdown-menu-direction(vertical); + } + } + } + } + + &.align-right { + .is-dropdown-submenu.first-sub { + top: 100%; + left: auto; + right: 0; + } + } + } + + .is-dropdown-menu.vertical { + width: 100px; + + &.align-right { + float: right; + } + } + + .is-dropdown-submenu-parent { + position: relative; + + a::after { + position: absolute; + top: 50%; + #{$global-right}: 5px; + margin-top: -2px; + } + + &.opens-inner > .is-dropdown-submenu { + + top: 100%; + @if $global-text-direction == 'rtl' { + right: auto; + } @else { + left: auto; + } + } + + &.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; + } + + &.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; + } + } + + .is-dropdown-submenu { + display: none; + position: absolute; + top: 0; + #{$global-left}: 100%; + min-width: $dropdownmenu-min-width; + z-index: 1; + background: $dropdownmenu-background; + border: $dropdownmenu-border; + + .is-dropdown-submenu-parent { + @if $dropdownmenu-arrows { + @include left-right-arrows; + } + } + + @if (type-of($dropdownmenu-border-width) == 'number') { + .is-dropdown-submenu { + margin-top: (-$dropdownmenu-border-width); + } + } + + > li { + width: 100%; + } + + // [TODO] Cut back specificity + // scss-lint:disable SelectorDepth + //&:not(.js-dropdown-nohover) > .is-dropdown-submenu-parent:hover > &, // why is this line needed? Opening is handled by JS and this causes some ugly flickering when the sub is re-positioned automatically... + &.js-dropdown-active { + display: block; + } + } +} diff --git a/libraries/foundation-6/scss/components/_dropdown.scss b/libraries/foundation-6/scss/components/_dropdown.scss new file mode 100755 index 00000000..771b5fd3 --- /dev/null +++ b/libraries/foundation-6/scss/components/_dropdown.scss @@ -0,0 +1,65 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group dropdown +//// + +/// Padding for dropdown panes. +/// @type List +$dropdown-padding: 1rem !default; + +/// Border for dropdown panes. +/// @type List +$dropdown-border: 1px solid $medium-gray !default; + +/// Font size for dropdown panes. +/// @type List +$dropdown-font-size: 1rem !default; + +/// Width for dropdown panes. +/// @type Number +$dropdown-width: 300px !default; + +/// Border radius dropdown panes. +/// @type Number +$dropdown-radius: $global-radius !default; + +/// Sizes for dropdown panes. Each size is a CSS class you can apply. +/// @type Map +$dropdown-sizes: ( + tiny: 100px, + small: 200px, + large: 400px, +) !default; + +/// Applies styles for a basic dropdown. +@mixin dropdown-container { + background-color: $body-background; + border: $dropdown-border; + border-radius: $dropdown-radius; + display: block; + font-size: $dropdown-font-size; + padding: $dropdown-padding; + position: absolute; + visibility: hidden; + width: $dropdown-width; + z-index: 10; + + &.is-open { + visibility: visible; + } +} + +@mixin foundation-dropdown { + .dropdown-pane { + @include dropdown-container; + } + + @each $name, $size in $dropdown-sizes { + .dropdown-pane.#{$name} { + width: $size; + } + } +} diff --git a/libraries/foundation-6/scss/components/_flex-video.scss b/libraries/foundation-6/scss/components/_flex-video.scss new file mode 100755 index 00000000..71cce125 --- /dev/null +++ b/libraries/foundation-6/scss/components/_flex-video.scss @@ -0,0 +1,63 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group flex-video +//// + +/// Margin below a flex video container. +/// @type Number +$flexvideo-margin-bottom: rem-calc(16) !default; + +/// Padding used to create a 4:3 aspect ratio. +/// @type Number +$flexvideo-ratio: 4 by 3 !default; + +/// Padding used to create a 16:9 aspect ratio. +/// @type Number +$flexvideo-ratio-widescreen: 16 by 9 !default; + +/// Creates a percentage height that can be used as padding in a flex video container. +/// @param {List} $ratio - Ratio to use to calculate the height, formatted as `x by y`. +/// @return {Number} A percentage value that can be used as the `padding-bottom` parameter of a flex video container. +@function flex-video($ratio) { + $w: nth($ratio, 1); + $h: nth($ratio, 3); + @return $h / $w * 100%; +} + +/// Creates a flex video container. +/// @param {List} $ratio [$flexvideo-ratio] - Ratio to use for the container, formatted as `x by y`. +@mixin flex-video($ratio: $flexvideo-ratio) { + position: relative; + height: 0; + padding-bottom: flex-video($ratio); + margin-bottom: $flexvideo-margin-bottom; + overflow: hidden; + + iframe, + object, + embed, + video { + position: absolute; + top: 0; + #{$global-left}: 0; + width: 100%; + height: 100%; + } +} + +@mixin foundation-flex-video { + .flex-video { + @include flex-video; + + &.widescreen { + padding-bottom: flex-video($flexvideo-ratio-widescreen); + } + + &.vimeo { + padding-top: 0; + } + } +} diff --git a/libraries/foundation-6/scss/components/_flex.scss b/libraries/foundation-6/scss/components/_flex.scss new file mode 100755 index 00000000..07181d78 --- /dev/null +++ b/libraries/foundation-6/scss/components/_flex.scss @@ -0,0 +1,28 @@ +@mixin foundation-flex-classes { + // Horizontal alignment using justify-content + @each $hdir, $prop in map-remove($-zf-flex-justify, left) { + .align-#{$hdir} { + @include flex-align($x: $hdir); + } + } + + // Vertical alignment using align-items and align-self + @each $vdir, $prop in $-zf-flex-align { + .align-#{$vdir} { + @include flex-align($y: $vdir); + } + + .align-self-#{$vdir} { + @include flex-align-self($y: $vdir); + } + } + + // Source ordering + @include -zf-each-breakpoint { + @for $i from 1 through 6 { + .#{$-zf-size}-order-#{$i} { + @include flex-order($i); + } + } + } +} diff --git a/libraries/foundation-6/scss/components/_float.scss b/libraries/foundation-6/scss/components/_float.scss new file mode 100755 index 00000000..63629202 --- /dev/null +++ b/libraries/foundation-6/scss/components/_float.scss @@ -0,0 +1,27 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group float +//// + +@mixin foundation-float-classes { + .float-left { + float: left !important; + } + + .float-right { + float: right !important; + } + + .float-center { + display: block; + margin-left: auto; + margin-right: auto; + } + + .clearfix { + @include clearfix; + } +} diff --git a/libraries/foundation-6/scss/components/_label.scss b/libraries/foundation-6/scss/components/_label.scss new file mode 100755 index 00000000..6fb1864a --- /dev/null +++ b/libraries/foundation-6/scss/components/_label.scss @@ -0,0 +1,56 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group label +//// + +/// Default background color for labels. +/// @type Color +$label-background: $primary-color !default; + +/// Default text color for labels. +/// @type Color +$label-color: foreground($label-background) !default; + +/// Default font size for labels. +/// @type Number +$label-font-size: 0.8rem !default; + +/// Default padding inside labels. +/// @type Number +$label-padding: 0.33333rem 0.5rem !default; + +/// Default radius of labels. +/// @type Number +$label-radius: $global-radius !default; + +/// Generates base styles for a label. +@mixin label { + display: inline-block; + padding: $label-padding; + font-size: $label-font-size; + line-height: 1; + white-space: nowrap; + cursor: default; + border-radius: $label-radius; +} + +@mixin foundation-label { + .label { + @include label; + + background: $label-background; + color: $label-color; + + @each $name, $color in $foundation-palette { + @if $name != primary { + &.#{$name} { + background: $color; + color: foreground($color); + } + } + } + } +} diff --git a/libraries/foundation-6/scss/components/_media-object.scss b/libraries/foundation-6/scss/components/_media-object.scss new file mode 100755 index 00000000..a7c74c8e --- /dev/null +++ b/libraries/foundation-6/scss/components/_media-object.scss @@ -0,0 +1,115 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group media-object +//// + +/// Bottom margin of a media object. +/// @type Number +$mediaobject-margin-bottom: $global-margin !default; + +/// Left and right padding on sections within a media object. +/// @type Number +$mediaobject-section-padding: $global-padding !default; + +/// Width of images within a media object, when the object is stacked vertically. Set to 'auto' to use the image's natural width. +/// @type Number +$mediaobject-image-width-stacked: 100% !default; + +/// Adds styles for a media object container. +@mixin media-object-container { + margin-bottom: $mediaobject-margin-bottom; + display: if($global-flexbox, flex, block); + + @if $global-flexbox { + flex-wrap: nowrap; + } +} + +/// Adds styles for sections within a media object. +/// @param {Number} $padding [$mediaobject-section-padding] - Padding between sections. +@mixin media-object-section($padding: $mediaobject-section-padding) { + @if $global-flexbox { + flex: 0 1 auto; + } + @else { + display: table-cell; + vertical-align: top; + } + + &:first-child { + padding-#{$global-right}: $padding; + } + + &:last-child:not(:nth-child(2)) { + padding-#{$global-left}: $padding; + } + + > :last-child { + margin-bottom: 0; + } +} + +/// Adds styles to stack sections of a media object. Apply this to the section elements, not the container. +@mixin media-object-stack { + padding: 0; + padding-bottom: $mediaobject-section-padding; + + @if $global-flexbox { + flex-basis: 100%; + max-width: 100%; + } + @else { + display: block; + } + + img { + width: $mediaobject-image-width-stacked; + } +} + +@mixin foundation-media-object { + .media-object { + @include media-object-container; + + img { + max-width: none; + } + + @if $global-flexbox { + &.stack-for-#{$-zf-zero-breakpoint} { + @include breakpoint($-zf-zero-breakpoint only) { + flex-wrap: wrap; + } + } + } + + &.stack-for-#{$-zf-zero-breakpoint} .media-object-section { + @include breakpoint($-zf-zero-breakpoint only) { + @include media-object-stack; + } + } + } + + .media-object-section { + @include media-object-section; + + @if $global-flexbox { + // scss-lint:disable ZeroUnit + &.main-section { + flex: 1 1 0px; + } + } + @else { + &.middle { + vertical-align: middle; + } + + &.bottom { + vertical-align: bottom; + } + } + } +} diff --git a/libraries/foundation-6/scss/components/_menu-icon.scss b/libraries/foundation-6/scss/components/_menu-icon.scss new file mode 100755 index 00000000..b0df173b --- /dev/null +++ b/libraries/foundation-6/scss/components/_menu-icon.scss @@ -0,0 +1,9 @@ +@mixin foundation-menu-icon { + .menu-icon { + @include hamburger($color: $titlebar-icon-color, $color-hover: $titlebar-icon-color-hover); + } + + .menu-icon.dark { + @include hamburger; + } +} diff --git a/libraries/foundation-6/scss/components/_menu.scss b/libraries/foundation-6/scss/components/_menu.scss new file mode 100755 index 00000000..566cef12 --- /dev/null +++ b/libraries/foundation-6/scss/components/_menu.scss @@ -0,0 +1,314 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group menu +//// + +/// Margin of a menu. +/// @type Number +$menu-margin: 0 !default; + +/// Left-hand margin of a nested menu. +/// @type Number +$menu-margin-nested: 1rem !default; + +/// Padding for items in a menu. +/// @type Number +$menu-item-padding: 0.7rem 1rem !default; + +/// Text color of an active menu item. +/// @type Color +$menu-item-color-active: $white !default; + +/// Background color of an active menu item. +/// @type Color +$menu-item-background-active: map-get($foundation-palette, primary) !default; + +/// Spacing between an icon and text in a menu item. +/// @type Number +$menu-icon-spacing: 0.25rem !default; + +/// Creates the base styles for a Menu. +@mixin menu-base { + margin: $menu-margin; + list-style-type: none; + + @if $global-flexbox { + width: 100%; + display: flex; + flex-wrap: nowrap; + align-items: center; + } + + // List items are table cell to allow for vertical alignment + > li { + @include disable-mouse-outline; + + @if $global-flexbox { + flex: 0 0 auto; + } + @else { + display: table-cell; + vertical-align: middle; + } + } + + // Reset line height to make the height of the overall item easier to calculate + > li > a { + display: block; + padding: $menu-item-padding; + line-height: 1; + } + + // Reset styles of inner elements + input, + a, + button { + margin-bottom: 0; + } +} + +/// Expands the items of a Menu, so each item is the same width. +@mixin menu-expand { + @if $global-flexbox { + // scss-lint:disable ZeroUnit + > li { + flex: 1 1 0px; + } + } + @else { + width: 100%; + display: table; + table-layout: fixed; + } +} + +/// Sets the direction of a Menu. +/// @param {Keyword} $dir [horizontal] - Direction of the Menu. Can be `horizontal` or `vertical`. +@mixin menu-direction($dir: horizontal) { + @if $dir == horizontal { + @if $global-flexbox { + flex-wrap: nowrap; + + > li { + flex: 0 0 auto; + } + } + @else { + > li { + display: table-cell; + } + } + } + @else if $dir == vertical { + @if $global-flexbox { + flex-wrap: wrap; + + > li { + flex: 0 0 100%; + max-width: 100%; + } + + > li > a { + align-items: flex-start; + justify-content: flex-start; + } + } + @else { + > li { + display: block; + } + } + } + @else { + @warn 'The direction used for menu-direction() must be horizontal or vertical.'; + } +} + +/// Creates a simple Menu, which has no padding or hover state. +@mixin menu-simple { + li { + line-height: 1; + display: inline-block; + margin-#{$global-right}: get-side($menu-item-padding, $global-right); + } + + a { + padding: 0; + } +} + +/// Adds styles for a nested Menu, by adding `margin-left` to the menu. +/// @param {Keyword|Number} $padding [auto] - Length of the margin. +@mixin menu-nested($margin: $menu-margin-nested) { + margin-#{$global-left}: $margin; +} + +/// Adds support for icons to Menu items. +/// @param {Keyword} $position [side] - Positioning for icons. Can be `side` (left, or right on RTL) or `top`. +/// @param {Boolean} $base [true] - Set to `false` to prevent the shared CSS between side- and top-aligned icons from being printed. Set this to `false` if you're calling the mixin multiple times on the same element. +@mixin menu-icons($position: side, $base: true) { + @if $base { + @if $global-flexbox { + > li > a { + display: flex; + } + } + @else { + > li > a { + img, + i, + svg { + vertical-align: middle; + + + span { + vertical-align: middle; + } + } + } + } + } + + @if $position == side { + > li > a { + @if $global-flexbox { + flex-flow: row nowrap; + } + + img, + i, + svg { + margin-#{$global-right}: $menu-icon-spacing; + + @if not $global-flexbox { + display: inline-block; + } + } + } + } + @else if $position == top { + > li > a { + @if $global-flexbox { + flex-flow: column nowrap; + } + @else { + text-align: center; + } + + img, + i, + svg { + @if not $global-flexbox { + display: block; + margin: 0 auto $menu-icon-spacing; + } + @else { + align-self: stretch; + text-align: center; + margin-bottom: $menu-icon-spacing; + } + } + } + } +} + +@mixin menu-text { + font-weight: bold; + color: inherit; + line-height: 1; + padding-top: 0; + padding-bottom: 0; + padding: $menu-item-padding; +} + +@mixin foundation-menu { + .menu { + @include menu-base; + @include menu-icons; + + // Orientation + @include menu-direction(horizontal); + + &.vertical { + @include menu-direction(vertical); + } + + @each $size in $breakpoint-classes { + @if $size != $-zf-zero-breakpoint { + @include breakpoint($size) { + &.#{$size}-horizontal { + @include menu-direction(horizontal); + } + + &.#{$size}-vertical { + @include menu-direction(vertical); + } + } + } + } + + // Simple + &.simple { + @include menu-simple; + } + + // Align right + &.align-#{$global-right} { + @if $global-flexbox { + justify-content: flex-end; + } + @else { + @include clearfix; + + > li { + float: $global-right; + } + } + } + + // Even-width + &.expanded { + @include menu-expand; + + > li:first-child:last-child { + width: 100%; + } + } + + // Vertical icons + &.icon-top { + @include menu-icons(top, $base: false); + } + + // Nesting + &.nested { + @include menu-nested; + } + + // Active state + .active > a { + color: $menu-item-color-active; + background: $menu-item-background-active; + } + } + + .menu-text { + @include menu-text; + } + + // Align center + .menu-centered { + text-align: center; + + > .menu { + display: inline-block; + } + } + + // Prevent FOUC when using the Responsive Menu plugin + .no-js [data-responsive-menu] ul { + display: none; + } +} diff --git a/libraries/foundation-6/scss/components/_off-canvas.scss b/libraries/foundation-6/scss/components/_off-canvas.scss new file mode 100755 index 00000000..e7175e97 --- /dev/null +++ b/libraries/foundation-6/scss/components/_off-canvas.scss @@ -0,0 +1,177 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group off-canvas +//// + +/// Width of an off-canvas menu. +/// @type Number +$offcanvas-size: 250px !default; + +/// Background color of an off-canvas menu. +/// @type Color +$offcanvas-background: $light-gray !default; + +/// Z-index of an off-canvas menu. +/// @type Number +$offcanvas-zindex: -1 !default; + +/// Length of the animation on an off-canvas menu. +/// @type Number +$offcanvas-transition-length: 0.5s !default; + +/// Timing function of the animation on an off-canvas menu. +/// @type Keyword +$offcanvas-transition-timing: ease !default; + +/// If `true`, a revealed off-canvas will be fixed-position, and scroll with the screen. +$offcanvas-fixed-reveal: true !default; + +/// Background color for the overlay that appears when an off-canvas menu is open. +/// @type Color +$offcanvas-exit-background: rgba($white, 0.25) !default; + +/// CSS class used for the main content area. The off-canvas mixins use this to target the page body. +$maincontent-class: 'off-canvas-content' !default; + +/// Box shadow to place under the main content area. This shadow overlaps the off-canvas menus. +/// @type Shadow +$maincontent-shadow: 0 0 10px rgba($black, 0.5) !default; + +/// Adds baseline styles for off-canvas. This CSS is required to make the other pieces work. +@mixin off-canvas-basics { + // Extra properties needed on <html> and <body> to make off-canvas work + html, + body { + height: 100%; + } + + .off-canvas-wrapper { + width: 100%; + overflow-x: hidden; + position: relative; + backface-visibility: hidden; + -webkit-overflow-scrolling: auto; + } + + .off-canvas-wrapper-inner { + @include clearfix; + position: relative; + width: 100%; + transition: transform $offcanvas-transition-length $offcanvas-transition-timing; + } + + // Container for page content + .off-canvas-content, + .#{$maincontent-class} { + min-height: 100%; + background: $body-background; + transition: transform $offcanvas-transition-length $offcanvas-transition-timing; + backface-visibility: hidden; + z-index: 1; + padding-bottom: 0.1px; // Prevents margin collapsing, which would reveal the box shadow of the wrapper + + @if has-value($maincontent-shadow) { + box-shadow: $maincontent-shadow; + } + } + + // Click-to-exit overlay (generated by JavaScript) + .js-off-canvas-exit { + display: none; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: $offcanvas-exit-background; + cursor: pointer; + transition: background $offcanvas-transition-length $offcanvas-transition-timing; + } +} + +/// Adds basic styles for an off-canvas menu. +@mixin off-canvas-base { + @include disable-mouse-outline; + position: absolute; + background: $offcanvas-background; + z-index: $offcanvas-zindex; + max-height: 100%; + overflow-y: auto; + transform: translateX(0); +} + +@mixin off-canvas-position( + $position: left, + $size: $offcanvas-size, + $fixed: false +) { + @if $position == left { + left: -$size; + top: 0; + width: $size; + } + @else if $position == right { + right: -$size; + top: 0; + width: $size; + } + + // Generates an open state class that matches the width of the menu + @at-root { + .is-open-#{$position} { + @if $position == left { + transform: translateX($size); + } + @else if $position == right { + transform: translateX(-$size); + } + } + } +} + +/// Adds styles that reveal an off-canvas menu. +/// @param {Keyword} $position [left] - Position of the off-canvas menu being revealed. +@mixin off-canvas-reveal( + $position: left +) { + #{$position}: 0; + z-index: auto; + + @if $offcanvas-fixed-reveal { + position: fixed; + } + + & ~ .#{$maincontent-class} { + margin-#{$position}: $offcanvas-size; + } +} + +@mixin foundation-off-canvas { + @include off-canvas-basics; + + // Off-canvas container + .off-canvas { + @include off-canvas-base; + + &.position-left { @include off-canvas-position(left); } + &.position-right { @include off-canvas-position(right); } + } + + // Reveal off-canvas menu on larger screens + @each $name, $value in $breakpoint-classes { + @if $name != $-zf-zero-breakpoint { + @include breakpoint($name) { + .position-left.reveal-for-#{$name} { + @include off-canvas-reveal(left); + } + + .position-right.reveal-for-#{$name} { + @include off-canvas-reveal(right); + } + } + } + } +} diff --git a/libraries/foundation-6/scss/components/_orbit.scss b/libraries/foundation-6/scss/components/_orbit.scss new file mode 100755 index 00000000..357c154c --- /dev/null +++ b/libraries/foundation-6/scss/components/_orbit.scss @@ -0,0 +1,193 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group orbit +//// + +/// Default color for Orbit's bullets. +/// @type Color +$orbit-bullet-background: $medium-gray !default; + +/// Default active color for Orbit's bullets. +/// @type Color +$orbit-bullet-background-active: $dark-gray !default; + +/// Default diameter for Orbit's bullets. +/// @type Number +$orbit-bullet-diameter: 1.2rem !default; + +/// Default margin between Orbit's bullets. +/// @type Number +$orbit-bullet-margin: 0.1rem !default; + +/// Default distance from slide region for Orbit's bullets. +/// @type Number +$orbit-bullet-margin-top: 0.8rem !default; + +/// Default bottom margin from Orbit's bullets to whatever content may lurk below it. +/// @type Number +$orbit-bullet-margin-bottom: 0.8rem !default; + +/// Default background color for Orbit's caption. +/// @type Color +$orbit-caption-background: rgba($black, 0.5) !default; + +/// Default padding for Orbit's caption. +/// @type Number +$orbit-caption-padding: 1rem !default; + +/// Default background color for Orbit's controls when hovered. +/// @type Color +$orbit-control-background-hover: rgba($black, 0.5) !default; + +/// Default padding for Orbit's controls. +/// @type Number +$orbit-control-padding: 1rem !default; + +/// Default z-index for Orbit's controls. +/// @type Number +$orbit-control-zindex: 10 !default; + +/// Adds styles for the outer Orbit wrapper. These styles are used on the `.orbit` class. +@mixin orbit-wrapper { + position: relative; +} + +/// Adds styles for the inner Orbit slide container. These styles are used on the `.orbit-container` class. +@mixin orbit-container { + position: relative; + margin: 0; + overflow: hidden; + list-style: none; +} + +/// Adds styles for the individual slides of an Orbit slider. These styles are used on the `.orbit-slide` class. +@mixin orbit-slide { + width: 100%; + max-height: 100%; + + &.no-motionui { + &.is-active { + top: 0; + left: 0; + } + } +} + +@mixin orbit-figure { + margin: 0; +} + +@mixin orbit-image { + margin: 0; + width: 100%; + max-width: 100%; +} + +/// Adds styles for an orbit slide caption. These styles are used on the `.orbit-caption` class. +@mixin orbit-caption { + position: absolute; + bottom: 0; + width: 100%; + padding: $orbit-caption-padding; + margin-bottom: 0; + color: foreground($orbit-caption-background); + background-color: $orbit-caption-background; +} + +/// Adds base styles for the next/previous buttons in an Orbit slider. These styles are shared between the `.orbit-next` and `.orbit-previous` classes in the default CSS. +@mixin orbit-control { + @include disable-mouse-outline; + @include vertical-center; + z-index: $orbit-control-zindex; + padding: $orbit-control-padding; + color: $white; + + &:hover, + &:active, + &:focus { + background-color: $orbit-control-background-hover; + } +} + +/// Adds styles for the Orbit previous button. These styles are used on the `.orbit-previous` class. +@mixin orbit-previous { + #{$global-left}: 0; +} + +/// Adds styles for the Orbit next button. These styles are used on the `.orbit-next` class. +@mixin orbit-next { + #{$global-left}: auto; + #{$global-right}: 0; +} + +/// Adds styles for a container of Orbit bullets. /// Adds styles for the Orbit previous button. These styles are used on the `.orbit-bullets` class. +@mixin orbit-bullets { + @include disable-mouse-outline; + position: relative; + margin-top: $orbit-bullet-margin-top; + margin-bottom: $orbit-bullet-margin-bottom; + text-align: center; + + button { + width: $orbit-bullet-diameter; + height: $orbit-bullet-diameter; + margin: $orbit-bullet-margin; + background-color: $orbit-bullet-background; + border-radius: 50%; + + &:hover { + background-color: $orbit-bullet-background-active; + } + + &.is-active { + background-color: $orbit-bullet-background-active; + } + } +} + +@mixin foundation-orbit { + .orbit { + @include orbit-wrapper; + } + + .orbit-container { + @include orbit-container; + } + + .orbit-slide { + @include orbit-slide; + } + + .orbit-figure { + @include orbit-figure; + } + + .orbit-image { + @include orbit-image; + } + + .orbit-caption { + @include orbit-caption; + } + + %orbit-control { + @include orbit-control; + } + + .orbit-previous { + @extend %orbit-control; + @include orbit-previous; + } + + .orbit-next { + @extend %orbit-control; + @include orbit-next; + } + + .orbit-bullets { + @include orbit-bullets; + } +} diff --git a/libraries/foundation-6/scss/components/_pagination.scss b/libraries/foundation-6/scss/components/_pagination.scss new file mode 100755 index 00000000..6f1f23b1 --- /dev/null +++ b/libraries/foundation-6/scss/components/_pagination.scss @@ -0,0 +1,162 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group pagination +//// + +/// Font size of pagination items. +/// @type Number +$pagination-font-size: rem-calc(14) !default; + +/// Default bottom margin of the media object. +/// @type Number +$pagination-margin-bottom: $global-margin !default; + +/// Text color of pagination items. +/// @type Color +$pagination-item-color: $black !default; + +/// Padding inside of pagination items. +/// @type Number +$pagination-item-padding: rem-calc(3 10) !default; + +/// Right margin to separate pagination items. +/// @type Number +$pagination-item-spacing: rem-calc(1) !default; + +/// Default radius for pagination items. +/// @type Number +$pagination-radius: $global-radius !default; + +/// Background color of pagination items on hover. +/// @type Color +$pagination-item-background-hover: $light-gray !default; + +/// Background color of pagination item for the current page. +/// @type Color +$pagination-item-background-current: $primary-color !default; + +/// Text color of the pagination item for the current page. +/// @type Color +$pagination-item-color-current: foreground($pagination-item-background-current) !default; + +/// Text color of a disabled pagination item. +/// @type Color +$pagination-item-color-disabled: $medium-gray !default; + +/// Color of the ellipsis in a pagination menu. +/// @type Color +$pagination-ellipsis-color: $black !default; + +/// If `false`, don't display page number links on mobile, only next/previous links. +/// @type Boolean +$pagination-mobile-items: false !default; + +/// If `true`, arrows are added to the next and previous links of pagination. +/// @type Boolean +$pagination-arrows: true !default; + +/// Adds styles for a pagination container. Apply this to a `<ul>`. +@mixin pagination-container { + @include clearfix; + margin-#{$global-left}: 0; + margin-bottom: $pagination-margin-bottom; + + // List item + li { + font-size: $pagination-font-size; + margin-#{$global-right}: $pagination-item-spacing; + border-radius: $pagination-radius; + + @if $pagination-mobile-items { + display: inline-block; + } + @else { + display: none; + + &:last-child, + &:first-child { + display: inline-block; + } + + @include breakpoint(medium) { + display: inline-block; + } + } + } + + // Page links + a, + button { + color: $pagination-item-color; + display: block; + padding: $pagination-item-padding; + border-radius: $global-radius; + + &:hover { + background: $pagination-item-background-hover; + } + } +} + +/// Adds styles for the current pagination item. Apply this to an `<a>`. +@mixin pagination-item-current { + padding: $pagination-item-padding; + background: $pagination-item-background-current; + color: $pagination-item-color-current; + cursor: default; +} + +/// Adds styles for a disabled pagination item. Apply this to an `<a>`. +@mixin pagination-item-disabled { + padding: $pagination-item-padding; + color: $pagination-item-color-disabled; + cursor: not-allowed; + + &:hover { + background: transparent; + } +} + +/// Adds styles for an ellipsis for use in a pagination list. +@mixin pagination-ellipsis { + content: '\2026'; + padding: $pagination-item-padding; + color: $pagination-ellipsis-color; +} + +@mixin foundation-pagination { + .pagination { + @include pagination-container; + + .current { + @include pagination-item-current; + } + + .disabled { + @include pagination-item-disabled; + } + + .ellipsis::after { + @include pagination-ellipsis; + } + } + + @if $pagination-arrows { + .pagination-previous a::before, + .pagination-previous.disabled::before { + content: '\00ab'; + display: inline-block; + margin-#{$global-right}: 0.5rem; + } + + .pagination-next a::after, + .pagination-next.disabled::after { + content: '\00bb'; + display: inline-block; + margin-#{$global-left}: 0.5rem; + } + } +} diff --git a/libraries/foundation-6/scss/components/_progress-bar.scss b/libraries/foundation-6/scss/components/_progress-bar.scss new file mode 100755 index 00000000..e74a0c1f --- /dev/null +++ b/libraries/foundation-6/scss/components/_progress-bar.scss @@ -0,0 +1,64 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +/// Adds styles for a progress bar container. +@mixin progress-container { + background-color: $progress-background; + height: $progress-height; + margin-bottom: $progress-margin-bottom; + border-radius: $progress-radius; +} + +/// Adds styles for the inner meter of a progress bar. +@mixin progress-meter { + position: relative; + display: block; + width: 0%; + height: 100%; + background-color: $progress-meter-background; + + @if has-value($progress-radius) { + border-radius: $global-radius; + } +} + +/// Adds styles for text in the progress meter. +@mixin progress-meter-text { + @include absolute-center; + position: absolute; + margin: 0; + font-size: 0.75rem; + font-weight: bold; + color: $white; + white-space: nowrap; + + @if has-value($progress-radius) { + border-radius: $progress-radius; + } +} + +@mixin foundation-progress-bar { + // Progress bar + .progress { + @include progress-container; + + @each $name, $color in $foundation-palette { + &.#{$name} { + .progress-meter { + background-color: $color; + } + } + } + } + + // Inner meter + .progress-meter { + @include progress-meter; + } + + // Inner meter text + .progress-meter-text { + @include progress-meter-text; + } +} diff --git a/libraries/foundation-6/scss/components/_reveal.scss b/libraries/foundation-6/scss/components/_reveal.scss new file mode 100755 index 00000000..cac8b944 --- /dev/null +++ b/libraries/foundation-6/scss/components/_reveal.scss @@ -0,0 +1,172 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group reveal +//// + +/// Default background color of a modal. +/// @type Color +$reveal-background: $white !default; + +/// Default width of a modal, with no class applied. +/// @type Number +$reveal-width: 600px !default; + +/// Default maximum width of a modal. +/// @type Number +$reveal-max-width: $global-width !default; + +/// Default padding inside a modal. +/// @type Number +$reveal-padding: $global-padding !default; + +/// Default border around a modal. +/// @type Number +$reveal-border: 1px solid $medium-gray !default; + +/// Default radius for modal. +/// @type Number +$reveal-radius: $global-radius !default; + +/// z-index for modals. The overlay uses this value, while the modal itself uses this value plus one. +/// @type Number +$reveal-zindex: 1005 !default; + +/// Background color of modal overlays. +/// @type Color +$reveal-overlay-background: rgba($black, 0.45) !default; + +/// Adds styles for a modal overlay. +/// @param {Color} $background [$reveal-overlay-background] - Background color of the overlay. +@mixin reveal-overlay { + display: none; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: $reveal-zindex; + background-color: $reveal-overlay-background; + overflow-y: scroll; +} + +/// Adds base styles for a modal. +@mixin reveal-modal-base { + @include disable-mouse-outline; + display: none; + z-index: $reveal-zindex + 1; + padding: $reveal-padding; + border: $reveal-border; + background-color: $reveal-background; + border-radius: $reveal-radius; + + @include breakpoint(medium) { + min-height: 0; + } + + // Make sure rows don't have a min-width on them + .column, + .columns { + min-width: 0; + } + + // Strip margins from the last item in the modal + > :last-child { + margin-bottom: 0; + } +} + +/// Adjusts the width of a modal. +/// @param {Number} $width - Width of the modal. Generally a percentage. +/// @param {Number} $max-width [$reveal-max-width] - Maximum width of the modal. +@mixin reveal-modal-width( + $width: $reveal-width, + $max-width: $reveal-max-width +) { + @include breakpoint(medium) { + @extend %reveal-centered; + width: $width; + max-width: $reveal-max-width; + } +} + +/// Creates a full-screen modal, which stretches the full width and height of the window. +@mixin reveal-modal-fullscreen { + // scss-lint:disable DuplicateProperty + top: 0; + left: 0; + width: 100%; + height: 100%; + height: 100vh; + min-height: 100vh; + max-width: none; + margin-left: 0; + border: 0; + border-radius: 0; +} + +@mixin foundation-reveal { + // [TODO] Is this necessary? + // scss-lint:disable QualifyingElement + body.is-reveal-open { + overflow: hidden; + } + // html gets this class only in iOS + html.is-reveal-open, + html.is-reveal-open body { + height: 100%; + overflow: hidden; + user-select: none; + } + + // Overlay + .reveal-overlay { + @include reveal-overlay; + } + + // Modal container + .reveal { + @include reveal-modal-base; + @include reveal-modal-width($reveal-width); + position: relative; + top: 100px; + margin-left: auto; + margin-right: auto; + overflow-y: auto; + + // Placeholder selector for medium-and-up modals + // Prevents duplicate CSS when defining multiple Reveal sizes + @include breakpoint(medium) { + %reveal-centered { + left: auto; + right: auto; + margin: 0 auto; + } + } + + // Remove padding + &.collapse { + padding: 0; + } + + // Sizing classes + &.tiny { @include reveal-modal-width(30%); } + &.small { @include reveal-modal-width(50%); } + &.large { @include reveal-modal-width(90%); } + + // Full-screen mode + &.full { + @include reveal-modal-fullscreen; + } + + @include breakpoint($-zf-zero-breakpoint only) { + @include reveal-modal-fullscreen; + } + + &.without-overlay { + position: fixed; + } + } +} diff --git a/libraries/foundation-6/scss/components/_slider.scss b/libraries/foundation-6/scss/components/_slider.scss new file mode 100755 index 00000000..7813e97f --- /dev/null +++ b/libraries/foundation-6/scss/components/_slider.scss @@ -0,0 +1,133 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +// [TODO] Check how plugin confirms disabled or vertical status +// [TODO] Check if transition: all; is necessary + +//// +/// @group slider +//// + +/// Default slider width of a vertical slider. (Doesn't apply to the native slider.) +/// @type Number +$slider-width-vertical: 0.5rem !default; + +/// Transition properties to apply to the slider handle and fill. (Doesn't apply to the native slider.) +/// @type Transition +$slider-transition: all 0.2s ease-in-out !default; + +/// Adds the general styles for sliders. +@mixin slider-container { + position: relative; + height: $slider-height; + margin-top: 1.25rem; + margin-bottom: 2.25rem; + background-color: $slider-background; + cursor: pointer; + user-select: none; + touch-action: none; +} + +/// Adds the general styles for active fill for sliders. +@mixin slider-fill { + position: absolute; + top: 0; + left: 0; + display: inline-block; + max-width: 100%; + height: $slider-height; + background-color: $slider-fill-background; + transition: $slider-transition; + + &.is-dragging { + transition: all 0s linear; + } +} + +/// Adds the general styles for the slider handles. +@mixin slider-handle { + @include disable-mouse-outline; + @include vertical-center; + position: absolute; + left: 0; + z-index: 1; + display: inline-block; + width: $slider-handle-width; + height: $slider-handle-height; + background-color: $slider-handle-background; + transition: $slider-transition; + touch-action: manipulation; + border-radius: $slider-radius; + + &:hover { + background-color: scale-color($slider-handle-background, $lightness: -15%); + } + + &.is-dragging { + transition: all 0s linear; + } +} + +@mixin slider-disabled { + opacity: $slider-opacity-disabled; + cursor: not-allowed; +} + +@mixin slider-vertical { + display: inline-block; + width: $slider-width-vertical; + height: 12.5rem; + margin: 0 1.25rem; + transform: scale(1, -1); + + .slider-fill { + top: 0; + width: $slider-width-vertical; + max-height: 100%; + } + + .slider-handle { + position: absolute; + top: 0; + left: 50%; + width: $slider-handle-height; + height: $slider-handle-width; + transform: translateX(-50%); + } +} + +@mixin foundation-slider { + // Container + .slider { + @include slider-container; + } + + // Fill area + .slider-fill { + @include slider-fill; + } + + // Draggable handle + .slider-handle { + @include slider-handle; + } + + // Disabled state + .slider.disabled, + .slider[disabled] { + @include slider-disabled; + } + + // Vertical slider + .slider.vertical { + @include slider-vertical; + } + + // RTL support + @if $global-text-direction == rtl { + .slider:not(.vertical) { + transform: scale(-1, 1); + } + } +} diff --git a/libraries/foundation-6/scss/components/_sticky.scss b/libraries/foundation-6/scss/components/_sticky.scss new file mode 100755 index 00000000..0273603c --- /dev/null +++ b/libraries/foundation-6/scss/components/_sticky.scss @@ -0,0 +1,38 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +@mixin foundation-sticky { + .sticky-container { + position: relative; + } + + .sticky { + position: absolute; + z-index: 0; + transform: translate3d(0, 0, 0); + } + + .sticky.is-stuck { + position: fixed; + z-index: 5; + + &.is-at-top { + top: 0; + } + + &.is-at-bottom { + bottom: 0; + } + } + + .sticky.is-anchored { + position: absolute; + left: auto; + right: auto; + + &.is-at-bottom { + bottom: 0; + } + } +} diff --git a/libraries/foundation-6/scss/components/_switch.scss b/libraries/foundation-6/scss/components/_switch.scss new file mode 100755 index 00000000..e38a4e13 --- /dev/null +++ b/libraries/foundation-6/scss/components/_switch.scss @@ -0,0 +1,236 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group switch +//// + +/// Background color of a switch. +/// @type Color +$switch-background: $medium-gray !default; + +/// Background active color of a switch. +/// @type Color +$switch-background-active: $primary-color !default; + +/// Height of a switch, with no class applied. +/// @type Number +$switch-height: 2rem !default; + +/// Height of a switch with .tiny class. +/// @type Number +$switch-height-tiny: 1.5rem !default; + +/// Height of a switch with .small class. +/// @type Number +$switch-height-small: 1.75rem !default; + +/// Height of a switch with .large class. +/// @type Number +$switch-height-large: 2.5rem !default; + +/// Border radius of the switch +/// @type Number +$switch-radius: $global-radius !default; + +/// border around a modal. +/// @type Number +$switch-margin: $global-margin !default; + +/// Background color for the switch container and paddle. +/// @type Color +$switch-paddle-background: $white !default; + +/// Spacing between a switch paddle and the edge of the body. +/// @type Number +$switch-paddle-offset: 0.25rem !default; + +/// border radius of the switch paddle +/// @type Number +$switch-paddle-radius: $global-radius !default; + +/// switch transition. +/// @type Number +$switch-paddle-transition: all 0.25s ease-out !default; + +// make them variables +// ask about accessibility on label +// change class name for text + +/// Adds styles for a switch container. Apply this to a container class. +@mixin switch-container { + margin-bottom: $switch-margin; + outline: 0; + position: relative; + user-select: none; + + // These properties cascade down to the switch text + color: $white; + font-weight: bold; + font-size: rem-calc(14); +} + +/// Adds styles for a switch input. Apply this to an `<input>` within a switch. +@mixin switch-input { + opacity: 0; + position: absolute; + margin-bottom: 0; +} + +/// Adds styles for the background and paddle of a switch. Apply this to a `<label>` within a switch. +@mixin switch-paddle { + background: $switch-background; + cursor: pointer; + display: block; + position: relative; + width: 4rem; + height: $switch-height; + transition: $switch-paddle-transition; + border-radius: $switch-radius; + + // Resetting these <label> presets so type styles cascade down + color: inherit; + font-weight: inherit; + + // Needed to override specificity + input + & { + margin: 0; + } + + // The paddle itself + &::after { + background: $switch-paddle-background; + content: ''; + display: block; + position: absolute; + height: 1.5rem; + #{$global-left}: 0.25rem; + top: 0.25rem; + width: 1.5rem; + transition: $switch-paddle-transition; + transform: translate3d(0, 0, 0); + border-radius: $switch-paddle-radius; + } + + // Change the visual style when the switch is active + input:checked ~ & { + background: $switch-background-active; + + &::after { + #{$global-left}: 2.25rem; + } + } + + input:focus ~ & { + @include disable-mouse-outline; + } +} + +/// Adds base styles for active/inactive text inside a switch. Apply this to text elements inside the switch `<label>`. +@mixin switch-text { + position: absolute; + top: 50%; + transform: translateY(-50%); +} + +/// Adds styles for the active state text within a switch. +@mixin switch-text-active { + #{$global-left}: 8%; + display: none; + + input:checked + label > & { + display: block; + } +} + +/// Adds styles for the inactive state text within a switch. +@mixin switch-text-inactive { + #{$global-right}: 15%; + + input:checked + label > & { + display: none; + } +} + +/// Changes the size of a switch by modifying the size of the body and paddle. Apply this to a switch container. +/// @param {Number} $font-size [1rem] - Font size of label text within the switch. +/// @param {Number} $width [4rem] - Width of the switch body. +/// @param {Number} $height [2rem] - Height of the switch body. +/// @param {Number} $paddle-width [1.5rem] - Width of the switch paddle. +/// @param {Number} $paddle-offset [0.25rem] - Spacing between the switch paddle and the edge of the switch body. +@mixin switch-size( + $font-size: 1rem, + $width: 4rem, + $height: 2rem, + $paddle-width: 1.5rem, + $paddle-offset: 0.25rem +) { + $paddle-height: $height - ($paddle-offset * 2); + $paddle-left-active: $width - $paddle-width - $paddle-offset; + + height: $height; + + .switch-paddle { + width: $width; + height: $height; + font-size: $font-size; + } + + .switch-paddle::after { + width: $paddle-width; + height: $paddle-height; + } + + input:checked ~ .switch-paddle::after { + #{$global-left}: $paddle-left-active; + } +} + +@mixin foundation-switch { + // Container class + .switch { + height: $switch-height; + @include switch-container; + } + + // <input> element + .switch-input { + @include switch-input; + } + + // <label> element + .switch-paddle { + @include switch-paddle; + } + + // Base label text styles + %switch-text { + @include switch-text; + } + + // Active label text styles + .switch-active { + @extend %switch-text; + @include switch-text-active; + } + + // Inactive label text styles + .switch-inactive { + @extend %switch-text; + @include switch-text-inactive; + } + + // Switch sizes + .switch.tiny { + @include switch-size(rem-calc(10), 3rem, $switch-height-tiny, 1rem, $switch-paddle-offset); + } + + .switch.small { + @include switch-size(rem-calc(12), 3.5rem, $switch-height-small, 1.25rem, $switch-paddle-offset); + } + + .switch.large { + @include switch-size(rem-calc(16), 5rem, $switch-height-large, 2rem, $switch-paddle-offset); + } +} diff --git a/libraries/foundation-6/scss/components/_table.scss b/libraries/foundation-6/scss/components/_table.scss new file mode 100755 index 00000000..1e25b20a --- /dev/null +++ b/libraries/foundation-6/scss/components/_table.scss @@ -0,0 +1,247 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +// scss-lint:disable MergeableSelector, QualifyingElement + +//// +/// @group table +//// + +/// Default color for table background. +/// @type Color +$table-background: $white !default; + +/// Default scale for darkening the striped table rows and the table border. +/// @type Number +$table-color-scale: 5% !default; + +/// Default style for table border. +/// @type List +$table-border: 1px solid smart-scale($table-background, $table-color-scale) !default; + +/// Default padding for table. +/// @type Number +$table-padding: rem-calc(8 10 10) !default; + +/// Default scale for darkening the table rows on hover. +/// @type Number +$table-hover-scale: 2% !default; + +/// Default color of standard rows on hover. +/// @type List +$table-row-hover: darken($table-background, $table-hover-scale) !default; + +/// Default color of striped rows on hover. +/// @type List +$table-row-stripe-hover: darken($table-background, $table-color-scale + $table-hover-scale) !default; + +/// Default background color for striped rows. +/// @type Color +$table-striped-background: smart-scale($table-background, $table-color-scale) !default; + +/// Default value for showing the stripe on rows of the tables, excluding the header and footer. If even, the even rows will have a background color. If odd, the odd rows will have a background color. If empty, or any other value, the table rows will have no striping. +/// @type Keyword +$table-stripe: even !default; + +/// Default color for header background. +/// @type Color +$table-head-background: smart-scale($table-background, $table-color-scale / 2) !default; + +/// Default color for footer background. +/// @type Color +$table-foot-background: smart-scale($table-background, $table-color-scale) !default; + +/// Default font color for header. +/// @type Color +$table-head-font-color: $body-font-color !default; + +/// Default font color for footer. +/// @type Color +$table-foot-font-color: $body-font-color !default; + +/// Default value for showing the header when using stacked tables. +/// @type Boolean +$show-header-for-stacked: false !default; + +@mixin -zf-table-children-styles($stripe: $table-stripe) { + thead, + tbody, + tfoot { + border: $table-border; + background-color: $table-background; + } + + // Caption + caption { + font-weight: $global-weight-bold; + padding: $table-padding; + } + + // Table head + thead { + background: $table-head-background; + color: $table-head-font-color; + } + + // Table foot + tfoot { + background: $table-foot-background; + color: $table-foot-font-color; + } + + // Table head and foot + thead, + tfoot { + // Rows within head and foot + tr { + background: transparent; + } + + // Cells within head and foot + th, + td { + padding: $table-padding; + font-weight: $global-weight-bold; + text-align: #{$global-left}; + } + } + + // Table rows + tbody { + tr { + // If stripe is set to even, darken the even rows. + @if $stripe == even { + &:nth-child(even) { + background-color: $table-striped-background; + } + } + + // If stripe is set to odd, darken the odd rows. + @else if $stripe == odd { + &:nth-child(odd) { + background-color: $table-striped-background; + } + } + } + + th, + td { + padding: $table-padding; + } + } +} + +/// Adds the general styles for tables. +/// @param {Keyword} $stripe [$table-stripe] - Uses keywords even, odd, or none to darken rows of the table. The default value is even. +@mixin table( + $stripe: $table-stripe, + $nest: false +) { + width: 100%; + margin-bottom: $global-margin; + border-radius: $global-radius; + + @if $nest { + @include -zf-table-children-styles($stripe); + } + @else { + @at-root { + @include -zf-table-children-styles($stripe); + } + } +} + +/// Adds the ability to horizontally scroll the table when the content overflows horizontally. +@mixin table-scroll { + display: block; + width: 100%; + overflow-x: auto; +} + +/// Slightly darkens the table rows on hover. +@mixin table-hover { + tr { + //Darkens the non-striped table rows on hover. + &:hover { + background-color: $table-row-hover; + } + + //Darkens the even striped table rows. + @if($table-stripe == even) { + &:nth-of-type(even):hover { + background-color: $table-row-stripe-hover; + } + } + + //Darkens the odd striped table rows. + @elseif($table-stripe == odd) { + &:nth-of-type(odd):hover { + background-color: $table-row-stripe-hover; + } + } + } +} + +/// Adds styles for a stacked table. Useful for small-screen layouts. +/// @param {Boolean} $header [$show-header-for-stacked] - Show the first th of header when stacked. +@mixin table-stack($header: $show-header-for-stacked) { + @if $header { + thead { + th:first-child { + display: block; + } + + th { + display: none; + } + } + } + @else { + thead { + display: none; + } + } + + tfoot { + display: none; + } + + tr, + th, + td { + display: block; + } + + td { + border-top: 0; + } +} + +@mixin foundation-table($nest: false) { + table { + @include table($nest: $nest); + } + + table.stack { + @include breakpoint(medium down) { + @include table-stack; + } + } + + table.scroll { + @include table-scroll; + } + + table.hover { + @include table-hover; + } + + .table-scroll { + overflow-x: auto; + + table { + width: auto; + } + } +} diff --git a/libraries/foundation-6/scss/components/_tabs.scss b/libraries/foundation-6/scss/components/_tabs.scss new file mode 100755 index 00000000..1e545ef5 --- /dev/null +++ b/libraries/foundation-6/scss/components/_tabs.scss @@ -0,0 +1,165 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group tabs +//// + +/// Default margin of the tab bar. +/// @type Number +$tab-margin: 0 !default; + +/// Default background color of a tab bar. +/// @type Color +$tab-background: $white !default; + +/// active background color of a tab bar. +/// @type Color +$tab-background-active: $light-gray !default; + +/// Font size of tab items. +/// @type Number +$tab-item-font-size: rem-calc(12) !default; + +/// Default background color on hover for items in a Menu. +$tab-item-background-hover: $white !default; + +/// Default padding of a tab item. +/// @type Number +$tab-item-padding: 1.25rem 1.5rem !default; + +/// Maximum number of `expand-n` classes to include in the CSS. +/// @type Number +$tab-expand-max: 6 !default; + +/// Default background color of tab content. +/// @type Color +$tab-content-background: $white !default; + +/// Default border color of tab content. +/// @type Color +$tab-content-border: $light-gray !default; + +/// Default text color of tab content. +/// @type Color +$tab-content-color: foreground($tab-background, $primary-color) !default; + +/// Default padding for tab content. +/// @type Number | List +$tab-content-padding: 1rem !default; + +/// Adds styles for a tab container. Apply this to a `<ul>`. +@mixin tabs-container { + @include clearfix; + margin: $tab-margin; + list-style-type: none; + background: $tab-background; + border: 1px solid $tab-content-border; +} + +/// Augments a tab container to have vertical tabs. Use this in conjunction with `tabs-container()`. +@mixin tabs-container-vertical { + > li { + width: auto; + float: none; + display: block; + } +} + +/// Adds styles for the links within a tab container. Apply this to the `<li>` elements inside a tab container. +@mixin tabs-title { + float: #{$global-left}; + + > a { + display: block; + padding: $tab-item-padding; + line-height: 1; + font-size: $tab-item-font-size; + + &:hover { + background: $tab-item-background-hover; + } + + &:focus, + &[aria-selected='true'] { + background: $tab-background-active; + } + } +} + +/// Adds styles for the wrapper that surrounds a tab group's content panes. +@mixin tabs-content { + background: $tab-content-background; + transition: all 0.5s ease; + border: 1px solid $tab-content-border; + border-top: 0; +} + +/// Augments a tab content container to have a vertical style, by shifting the border around. Use this in conjunction with `tabs-content()`. +@mixin tabs-content-vertical { + border: 1px solid $tab-content-border; + border-#{$global-left}: 0; +} + +/// Adds styles for an individual tab content panel within the tab content container. +@mixin tabs-panel { + display: none; + padding: $tab-content-padding; + + &.is-active { + display: block; + } +} + +@mixin foundation-tabs { + .tabs { + @include tabs-container; + } + + // Vertical + .tabs.vertical { + @include tabs-container-vertical; + } + + // Simple + .tabs.simple { + > li > a { + padding: 0; + + &:hover { + background: transparent; + } + } + } + + // Primary color + .tabs.primary { + background: $primary-color; + + > li > a { + color: foreground($primary-color); + + &:hover, + &:focus { + background: smart-scale($primary-color); + } + } + } + + .tabs-title { + @include tabs-title; + } + + .tabs-content { + @include tabs-content; + } + + .tabs-content.vertical { + @include tabs-content-vertical; + } + + .tabs-panel { + @include tabs-panel; + } +} diff --git a/libraries/foundation-6/scss/components/_thumbnail.scss b/libraries/foundation-6/scss/components/_thumbnail.scss new file mode 100755 index 00000000..d6b12d54 --- /dev/null +++ b/libraries/foundation-6/scss/components/_thumbnail.scss @@ -0,0 +1,54 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group thumbnail +//// + +/// Border around thumbnail images. +/// @type Border +$thumbnail-border: solid 4px $white !default; + +/// Bottom margin for thumbnail images. +/// @type Length +$thumbnail-margin-bottom: $global-margin !default; + +/// Box shadow under thumbnail images. +/// @type Shadow +$thumbnail-shadow: 0 0 0 1px rgba($black, 0.2) !default; + +/// Box shadow under thumbnail images. +/// @type Shadow +$thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5) !default; + +/// Transition proprties for thumbnail images. +/// @type Transition +$thumbnail-transition: box-shadow 200ms ease-out !default; + +/// Default radius for thumbnail images. +/// @type Number +$thumbnail-radius: $global-radius !default; + +/// Adds thumbnail styles to an element. +@mixin thumbnail { + border: $thumbnail-border; + box-shadow: $thumbnail-shadow; + display: inline-block; + line-height: 0; + max-width: 100%; + transition: $thumbnail-transition; + border-radius: $thumbnail-radius; + margin-bottom: $thumbnail-margin-bottom; + + &:hover, + &:focus { + box-shadow: $thumbnail-shadow-hover; + } +} + +@mixin foundation-thumbnail { + .thumbnail { + @include thumbnail; + } +} diff --git a/libraries/foundation-6/scss/components/_title-bar.scss b/libraries/foundation-6/scss/components/_title-bar.scss new file mode 100755 index 00000000..14b5eb06 --- /dev/null +++ b/libraries/foundation-6/scss/components/_title-bar.scss @@ -0,0 +1,89 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group title-bar +//// + +/// Background color of a title bar. +/// @type Color +$titlebar-background: $black !default; + +/// Color of text inside a title bar. +/// @type Color +$titlebar-color: $white !default; + +/// Padding inside a title bar. +/// @type Length +$titlebar-padding: 0.5rem !default; + +/// Font weight of text inside a title bar. +/// @type Weight +$titlebar-text-font-weight: bold !default; + +/// Color of menu icons inside a title bar. +/// @type Color +$titlebar-icon-color: $white !default; + +/// Color of menu icons inside a title bar on hover. +/// @type Color +$titlebar-icon-color-hover: $medium-gray !default; + +/// Spacing between the menu icon and text inside a title bar. +/// @type Length +$titlebar-icon-spacing: 0.25rem !default; + +@mixin foundation-title-bar { + .title-bar { + background: $titlebar-background; + color: $titlebar-color; + padding: $titlebar-padding; + + @if $global-flexbox { + display: flex; + align-items: center; + justify-content: space-between; + } + @else { + @include clearfix; + } + + .menu-icon { + margin-#{$global-left}: $titlebar-icon-spacing; + margin-#{$global-right}: $titlebar-icon-spacing; + } + } + + @if $global-flexbox { + // scss-lint:disable ZeroUnit + .title-bar-left, + .title-bar-right { + flex: 1 1 0px; + } + + .title-bar-right { + text-align: right; + } + } + @else { + .title-bar-left { + float: left; + } + + .title-bar-right { + float: right; + text-align: right; + } + } + + .title-bar-title { + font-weight: $titlebar-text-font-weight; + vertical-align: middle; + display: inline-block; + } + + .menu-icon.dark { + @include hamburger; + } +} diff --git a/libraries/foundation-6/scss/components/_tooltip.scss b/libraries/foundation-6/scss/components/_tooltip.scss new file mode 100755 index 00000000..5afd5ec0 --- /dev/null +++ b/libraries/foundation-6/scss/components/_tooltip.scss @@ -0,0 +1,104 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group tooltip +//// + +/// Default font weight of the defined term. +/// @type Keyword | Number +$has-tip-font-weight: $global-weight-bold !default; + +/// Default border bottom of the defined term. +/// @type List +$has-tip-border-bottom: dotted 1px $dark-gray !default; + +/// Default color of the tooltip background. +/// @type Color +$tooltip-background-color: $black !default; + +/// Default color of the tooltip font. +/// @type Color +$tooltip-color: $white !default; + +/// Default padding of the tooltip background. +/// @type Number +$tooltip-padding: 0.75rem !default; + +/// Default font size of the tooltip text. By default, we recommend a smaller font size than the body copy. +/// @type Number +$tooltip-font-size: $small-font-size !default; + +/// Default pip width for tooltips. +/// @type Number +$tooltip-pip-width: 0.75rem !default; + +/// Default pip height for tooltips. This is helpful for calculating the distance of the tooltip from the tooltip word. +/// @type Number +$tooltip-pip-height: $tooltip-pip-width * 0.866 !default; + +/// Default radius for tooltips. +/// @type Number +$tooltip-radius: $global-radius !default; + +@mixin has-tip { + border-bottom: $has-tip-border-bottom; + font-weight: $has-tip-font-weight; + position: relative; + display: inline-block; + cursor: help; +} + +@mixin tooltip { + background-color: $tooltip-background-color; + color: $tooltip-color; + font-size: $tooltip-font-size; + padding: $tooltip-padding; + position: absolute; + z-index: 10; + top: calc(100% + #{$tooltip-pip-height}); + max-width: 10rem !important; + border-radius: $tooltip-radius; + + &::before { + @include css-triangle($tooltip-pip-width, $tooltip-background-color, up); + bottom: 100%; + position: absolute; + left: 50%; + transform: translateX(-50%); + } + + &.top::before { + @include css-triangle($tooltip-pip-width, $tooltip-background-color, down); + top: 100%; + bottom: auto; + } + + &.left::before { + @include css-triangle($tooltip-pip-width, $tooltip-background-color, right); + bottom: auto; + left: 100%; + top: 50%; + transform: translateY(-50%); + } + + &.right::before { + @include css-triangle($tooltip-pip-width, $tooltip-background-color, left); + bottom: auto; + left: auto; + right: 100%; + top: 50%; + transform: translateY(-50%); + } +} + +@mixin foundation-tooltip { + .has-tip { + @include has-tip; + } + + .tooltip { + @include tooltip; + } +} diff --git a/libraries/foundation-6/scss/components/_top-bar.scss b/libraries/foundation-6/scss/components/_top-bar.scss new file mode 100755 index 00000000..f56d3d04 --- /dev/null +++ b/libraries/foundation-6/scss/components/_top-bar.scss @@ -0,0 +1,168 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group top-bar +//// + +/// Padding for the top bar. +/// @type Number +$topbar-padding: 0.5rem !default; + +/// Background color for the top bar. This color also cascades to menus within the top bar. +/// @type Color +$topbar-background: $light-gray !default; + +/// Background color submenus within the top bar. Usefull if $topbar-background is transparent. +/// @type Color +$topbar-submenu-background: $topbar-background !default; + +/// Spacing for the top bar title. +/// @type Number +$topbar-title-spacing: 1rem !default; + +/// Maximum width of `<input>` elements inside the top bar. +/// @type Number +$topbar-input-width: 200px !default; + +/// Breakpoint at which top bar switches from mobile to desktop view. +/// @type Breakpoint +$topbar-unstack-breakpoint: medium !default; + +/// Adds styles for a top bar container. +@mixin top-bar-container { + @if $global-flexbox { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: nowrap; + } + @else { + @include clearfix; + } + + padding: $topbar-padding; + + &, + ul { + background-color: $topbar-background; + } + + // Check if $topbar-background is differnt from $topbar-background-submenu + @if ($topbar-background != $topbar-submenu-background) { + ul ul { + background-color: $topbar-submenu-background; + } + } + + // Restrain width of inputs by default to make them easier to arrange + input { + max-width: $topbar-input-width; + margin-#{$global-right}: 1rem; + } + + // The above styles shouldn't apply to input group fields + .input-group-field { + width: 100%; + margin-#{$global-right}: 0; + } + + // scss-lint:disable QualifyingElement + input.button { + width: auto; + } +} + +/// Makes sections of a top bar stack on top of each other. +@mixin top-bar-stacked { + @if $global-flexbox { + flex-wrap: wrap; + + // Sub-sections + .top-bar-left, + .top-bar-right { + flex: 0 0 100%; + max-width: 100%; + } + } + @else { + // Sub-sections + .top-bar-left, + .top-bar-right { + width: 100%; + } + } +} + +/// Undoes the CSS applied by the `top-bar-stacked()` mixin. +@mixin top-bar-unstack { + @if $global-flexbox { + flex-wrap: nowrap; + + // scss-lint:disable ZeroUnit + .top-bar-left, + .top-bar-right { + flex: 1 1 0px; + } + } + @else { + .top-bar-left, + .top-bar-right { + width: auto; + } + } +} + +@mixin foundation-top-bar { + // Top bar container + .top-bar { + @include top-bar-container; + + // Stack on small screens by default + @include top-bar-stacked; + + @include breakpoint($topbar-unstack-breakpoint) { + @include top-bar-unstack; + } + + // Generate classes for stacking on each screen size (defined in $breakpoint-classes) + @each $size in $breakpoint-classes { + @if $size != $-zf-zero-breakpoint { + &.stacked-for-#{$size} { + @include breakpoint($size down) { + @include top-bar-stacked; + } + } + } + } + } + + // Sub-sections + @if $global-flexbox { + .top-bar-title { + flex: 0 0 auto; + margin-right: $topbar-title-spacing; + } + + .top-bar-left, + .top-bar-right { + flex: 0 0 auto; + } + } + @else { + .top-bar-title { + float: left; + margin-right: $topbar-title-spacing; + + } + + .top-bar-left { + float: left; + } + + .top-bar-right { + float: right; + } + } +} diff --git a/libraries/foundation-6/scss/components/_visibility.scss b/libraries/foundation-6/scss/components/_visibility.scss new file mode 100755 index 00000000..8906f597 --- /dev/null +++ b/libraries/foundation-6/scss/components/_visibility.scss @@ -0,0 +1,132 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +/// Hide an element by default, only displaying it above a certain screen size. +/// @param {Keyword} $size - Breakpoint to use. **Must be a breakpoint defined in `$breakpoints`.** +@mixin show-for($size) { + $size: map-get($breakpoints, $size); + $size: -zf-bp-to-em($size) - (1 / 16); + + @include breakpoint($size down) { + display: none !important; + } +} + +/// Hide an element by default, only displaying it within a certain breakpoint. +/// @param {Keyword} $size - Breakpoint to use. **Must be a breakpoint defined in `$breakpoints`.** +@mixin show-for-only($size) { + $lower-bound-size: map-get($breakpoints, $size); + $upper-bound-size: -zf-map-next($breakpoints, $size); + + // more often than not this will be correct, just one time round the loop it won't so set in scope here + $lower-bound: -zf-bp-to-em($lower-bound-size) - (1 / 16); + // test actual lower-bound-size, if 0 set it to 0em + @if strip-unit($lower-bound-size) == 0 { + $lower-bound: -zf-bp-to-em($lower-bound-size); + } + + @if $upper-bound-size == null { + @media screen and (max-width: $lower-bound) { + display: none !important; + } + } + @else { + $upper-bound: -zf-bp-to-em($upper-bound-size); + + @media screen and (max-width: $lower-bound), screen and (min-width: $upper-bound) { + display: none !important; + } + } +} + + +/// Show an element by default, and hide it above a certain screen size. +/// @param {Keyword} $size - Breakpoint to use. **Must be a breakpoint defined in `$breakpoints`.** +@mixin hide-for($size) { + @include breakpoint($size) { + display: none !important; + } +} + +/// Show an element by default, and hide it above a certain screen size. +/// @param {Keyword} $size - Breakpoint to use. **Must be a breakpoint defined in `$breakpoints`.** +@mixin hide-for-only($size) { + @include breakpoint($size only) { + display: none !important; + } +} + +@mixin foundation-visibility-classes { + // Basic hiding classes + .hide { + display: none !important; + } + + .invisible { + visibility: hidden; + } + + // Responsive visibility classes + @each $size in $breakpoint-classes { + @if $size != $-zf-zero-breakpoint { + .hide-for-#{$size} { + @include hide-for($size); + } + + .show-for-#{$size} { + @include show-for($size); + } + } + + .hide-for-#{$size}-only { + @include hide-for-only($size); + } + + .show-for-#{$size}-only { + @include show-for-only($size); + } + } + + // Screen reader visibility classes + // Need a "hide-for-sr" class? Add aria-hidden='true' to the element + .show-for-sr, + .show-on-focus { + @include element-invisible; + } + + // Only display the element when it's focused + .show-on-focus { + &:active, + &:focus { + @include element-invisible-off; + } + } + + // Landscape and portrait visibility + .show-for-landscape, + .hide-for-portrait { + display: block !important; + + @include breakpoint(landscape) { + display: block !important; + } + + @include breakpoint(portrait) { + display: none !important; + } + } + + .hide-for-landscape, + .show-for-portrait { + display: none !important; + + @include breakpoint(landscape) { + display: none !important; + } + + @include breakpoint(portrait) { + display: block !important; + } + } +} diff --git a/libraries/foundation-6/scss/forms/_checkbox.scss b/libraries/foundation-6/scss/forms/_checkbox.scss new file mode 100755 index 00000000..0c388cd3 --- /dev/null +++ b/libraries/foundation-6/scss/forms/_checkbox.scss @@ -0,0 +1,40 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group forms +//// + +@mixin foundation-form-checkbox { + [type='file'], + [type='checkbox'], + [type='radio'] { + margin: 0 0 $form-spacing; + } + + // Styles for input/label siblings + [type='checkbox'] + label, + [type='radio'] + label { + display: inline-block; + margin-#{$global-left}: $form-spacing * 0.5; + margin-#{$global-right}: $form-spacing; + margin-bottom: 0; + vertical-align: baseline; + + &[for] { + cursor: pointer; + } + } + + // Styles for inputs inside labels + label > [type='checkbox'], + label > [type='radio'] { + margin-#{$global-right}: $form-spacing * 0.5; + } + + // Normalize file input width + [type='file'] { + width: 100%; + } +} diff --git a/libraries/foundation-6/scss/forms/_error.scss b/libraries/foundation-6/scss/forms/_error.scss new file mode 100755 index 00000000..792182d4 --- /dev/null +++ b/libraries/foundation-6/scss/forms/_error.scss @@ -0,0 +1,84 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group abide +//// + +/// Sets if error styles should be added to inputs. +/// @type Boolean +$abide-inputs: true !default; + +/// Sets if error styles should be added to labels. +/// @type Boolean +$abide-labels: true !default; + +/// Background color to use for invalid text inputs. +/// @type Color +$input-background-invalid: map-get($foundation-palette, alert) !default; + +/// Color to use for labels of invalid inputs. +/// @type Color +$form-label-color-invalid: map-get($foundation-palette, alert) !default; + +/// Default font color for form error text. +/// @type Color +$input-error-color: map-get($foundation-palette, alert) !default; + +/// Default font size for form error text. +/// @type Number +$input-error-font-size: rem-calc(12) !default; + +/// Default font weight for form error text. +/// @type Keyword +$input-error-font-weight: $global-weight-bold !default; + +/// Styles the background and border of an input field to have an error state. +/// +/// @param {Color} $background [$alert-color] - Color to use for the background and border. +/// @param {Number} $background-alpha [0.1] - Transparency level of the background color. +@mixin form-input-error( + $background: $input-background-invalid, + $background-alpha: 0.1 +) { + &:not(:focus) { + background-color: rgba($background, $background-alpha); + border-color: $background; + } +} + +/// Adds error styles to a form element, using the values in the settings file. +@mixin form-error { + display: none; + margin-top: $form-spacing * -0.5; + margin-bottom: $form-spacing; + font-size: $input-error-font-size; + font-weight: $input-error-font-weight; + color: $input-error-color; +} + +@mixin foundation-form-error { + @if $abide-inputs { + // Error class for invalid inputs + .is-invalid-input { + @include form-input-error; + } + } + + @if $abide-labels { + // Error class for labels of invalid outputs + .is-invalid-label { + color: $form-label-color-invalid; + } + } + + // Form error element + .form-error { + @include form-error; + + &.is-visible { + display: block; + } + } +} diff --git a/libraries/foundation-6/scss/forms/_fieldset.scss b/libraries/foundation-6/scss/forms/_fieldset.scss new file mode 100755 index 00000000..875706d2 --- /dev/null +++ b/libraries/foundation-6/scss/forms/_fieldset.scss @@ -0,0 +1,54 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group forms +//// + +/// Default border around custom fieldsets. +/// @type Border +$fieldset-border: 1px solid $medium-gray !default; + +/// Default padding inside custom fieldsets. +/// @type Number +$fieldset-padding: rem-calc(20) !default; + +/// Default margin around custom fieldsets. +/// @type Number +$fieldset-margin: rem-calc(18 0) !default; + +/// Default padding between the legend text and fieldset border. +/// @type Number +$legend-padding: rem-calc(0 3) !default; + +@mixin fieldset { + border: $fieldset-border; + padding: $fieldset-padding; + margin: $fieldset-margin; + + legend { + // Covers up the fieldset's border to create artificial padding + background: $body-background; + padding: $legend-padding; + margin: 0; + margin-#{$global-left}: rem-calc(-3); + } +} + +@mixin foundation-form-fieldset { + fieldset { + border: 0; + padding: 0; + margin: 0; + } + + legend { + margin-bottom: $form-spacing * 0.5; + max-width: 100%; + } + + .fieldset { + @include fieldset; + } +} diff --git a/libraries/foundation-6/scss/forms/_forms.scss b/libraries/foundation-6/scss/forms/_forms.scss new file mode 100755 index 00000000..1507fda3 --- /dev/null +++ b/libraries/foundation-6/scss/forms/_forms.scss @@ -0,0 +1,34 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group forms +//// + +/// Global spacing for form elements. +/// @type Number +$form-spacing: rem-calc(16) !default; + +@import 'text'; +@import 'checkbox'; +@import 'label'; +@import 'help-text'; +@import 'input-group'; +@import 'fieldset'; +@import 'select'; +@import 'range'; +@import 'progress'; +@import 'meter'; +@import 'error'; + +@mixin foundation-forms { + @include foundation-form-text; + @include foundation-form-checkbox; + @include foundation-form-label; + @include foundation-form-helptext; + @include foundation-form-prepostfix; + @include foundation-form-fieldset; + @include foundation-form-select; + @include foundation-form-error; +} diff --git a/libraries/foundation-6/scss/forms/_help-text.scss b/libraries/foundation-6/scss/forms/_help-text.scss new file mode 100755 index 00000000..04e5237f --- /dev/null +++ b/libraries/foundation-6/scss/forms/_help-text.scss @@ -0,0 +1,30 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group forms +//// + +/// Default color for help text. +/// @type Color +$helptext-color: $black !default; + +/// Default font size for help text. +/// @type Number +$helptext-font-size: rem-calc(13) !default; + +/// Default font style for help text. +/// @type Keyword +$helptext-font-style: italic !default; + +@mixin foundation-form-helptext { + .help-text { + $margin-top: ($form-spacing * 0.5) * -1; + + margin-top: $margin-top; + font-size: $helptext-font-size; + font-style: $helptext-font-style; + color: $helptext-color; + } +} diff --git a/libraries/foundation-6/scss/forms/_input-group.scss b/libraries/foundation-6/scss/forms/_input-group.scss new file mode 100755 index 00000000..04a86ae5 --- /dev/null +++ b/libraries/foundation-6/scss/forms/_input-group.scss @@ -0,0 +1,128 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group forms +//// + +/// Color of labels prefixed to an input. +/// @type Color +$input-prefix-color: $black !default; + +/// Background color of labels prefixed to an input. +/// @type Color +$input-prefix-background: $light-gray !default; + +/// Border around labels prefixed to an input. +/// @type Border +$input-prefix-border: 1px solid $medium-gray !default; + +/// Left/right padding of an pre/postfixed input label +$input-prefix-padding: 1rem !default; + +@mixin foundation-form-prepostfix { + $height: ($input-font-size + $form-spacing * 1.5); + + .input-group { + display: if($global-flexbox, flex, table); + width: 100%; + margin-bottom: $form-spacing; + + @if $global-flexbox { + align-items: stretch; + } + + > :first-child { + border-radius: if($global-text-direction == rtl, 0 $global-radius $global-radius 0, $global-radius 0 0 $global-radius); + } + + > :last-child { + > * { + border-radius: if($global-text-direction == rtl, $global-radius 0 0 $global-radius, 0 $global-radius $global-radius 0); + } + } + } + + %input-group-child { + margin: 0; + white-space: nowrap; + + @if not $global-flexbox { + display: table-cell; + vertical-align: middle; + } + } + + .input-group-label { + @extend %input-group-child; + text-align: center; + padding: 0 $input-prefix-padding; + background: $input-prefix-background; + color: $input-prefix-color; + border: $input-prefix-border; + white-space: nowrap; + + @if $global-flexbox { + flex: 0 0 auto; + display: flex; + align-items: center; + } + @else { + width: 1%; + height: 100%; + } + + @if has-value($input-prefix-border) { + &:first-child { + border-#{$global-right}: 0; + } + + &:last-child { + border-#{$global-left}: 0; + } + } + } + + .input-group-field { + @extend %input-group-child; + border-radius: 0; + + // scss-lint:disable ZeroUnit + @if $global-flexbox { + flex: 1 1 0px; + width: auto; + height: auto; + } + @else { + height: $height; + } + } + + .input-group-button { + @extend %input-group-child; + padding-top: 0; + padding-bottom: 0; + text-align: center; + + @if $global-flexbox { + flex: 0 0 auto; + } + @else { + height: 100%; + width: 1%; + } + + a, + input, + button { + margin: 0; + } + } + + // Specificity bump needed to prevent override by buttons + // scss-lint:disable QualifyingSelector + .input-group .input-group-button { + display: table-cell; + } +} diff --git a/libraries/foundation-6/scss/forms/_label.scss b/libraries/foundation-6/scss/forms/_label.scss new file mode 100755 index 00000000..ef44a528 --- /dev/null +++ b/libraries/foundation-6/scss/forms/_label.scss @@ -0,0 +1,48 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group forms +//// + +/// Color for form labels. +/// @type Color +$form-label-color: $black !default; + +/// Font size for form labels. +/// @type Number +$form-label-font-size: rem-calc(14) !default; + +/// Font weight for form labels. +/// @type Keyword +$form-label-font-weight: $global-weight-normal !default; + +/// Line height for form labels. The higher the number, the more space between the label and its input field. +/// @type Number +$form-label-line-height: 1.8 !default; + +@mixin form-label { + display: block; + margin: 0; + font-size: $form-label-font-size; + font-weight: $form-label-font-weight; + line-height: $form-label-line-height; + color: $form-label-color; +} + +@mixin form-label-middle { + $input-border-width: get-border-value($input-border, width); + margin: 0 0 $form-spacing; + padding: ($form-spacing / 2 + rem-calc($input-border-width)) 0; +} + +@mixin foundation-form-label { + label { + @include form-label; + + &.middle { + @include form-label-middle; + } + } +} diff --git a/libraries/foundation-6/scss/forms/_meter.scss b/libraries/foundation-6/scss/forms/_meter.scss new file mode 100755 index 00000000..10cf985f --- /dev/null +++ b/libraries/foundation-6/scss/forms/_meter.scss @@ -0,0 +1,111 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group meter +//// + +/// Height of a `<meter>` element. +/// @type Length +$meter-height: 1rem !default; + +/// Border radius of a `<meter>` element. +/// @type Length +$meter-radius: $global-radius !default; + +/// Background color of a `<meter>` element. +/// @type Color +$meter-background: $medium-gray !default; + +/// Meter fill for an optimal value in a `<meter>` element. +/// @type Color +$meter-fill-good: $success-color !default; + +/// Meter fill for an average value in a `<meter>` element. +/// @type Color +$meter-fill-medium: $warning-color !default; + +/// Meter fill for a suboptimal value in a `<meter>` element. +/// @type Color +$meter-fill-bad: $alert-color !default; + +@mixin foundation-meter-element { + meter { + -webkit-appearance: none; + -moz-appearance: none; + display: block; + width: 100%; + height: $meter-height; + margin-bottom: 1rem; + + @if has-value($meter-radius) { + border-radius: $meter-radius; + } + + // For Firefox + background: $meter-background; + border: 0; + + // Chrome/Safari/Edge + &::-webkit-meter-bar { + background: $meter-background; + + @if has-value($meter-radius) { + border-radius: $meter-radius; + } + + border: 0; + } + + &::-webkit-meter-inner-element { + @if has-value($meter-radius) { + border-radius: $meter-radius; + } + } + + &::-webkit-meter-optimum-value { + background: $meter-fill-good; + + @if has-value($meter-radius) { + border-radius: $meter-radius; + } + } + + &::-webkit-meter-suboptimum-value { + background: $meter-fill-medium; + + @if has-value($meter-radius) { + border-radius: $meter-radius; + } + } + + &::-webkit-meter-even-less-good-value { + background: $meter-fill-bad; + + @if has-value($meter-radius) { + border-radius: $meter-radius; + } + } + + &::-moz-meter-bar { + background: $primary-color; + + @if has-value($meter-radius) { + border-radius: $meter-radius; + } + } + + &:-moz-meter-optimum::-moz-meter-bar { + background: $meter-fill-good; + } + + &:-moz-meter-sub-optimum::-moz-meter-bar { + background: $meter-fill-medium; + } + + &:-moz-meter-sub-sub-optimum::-moz-meter-bar { + background: $meter-fill-bad; + } + } +} diff --git a/libraries/foundation-6/scss/forms/_progress.scss b/libraries/foundation-6/scss/forms/_progress.scss new file mode 100755 index 00000000..d157a33a --- /dev/null +++ b/libraries/foundation-6/scss/forms/_progress.scss @@ -0,0 +1,94 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group progress-bar +//// + +/// Height of a progress bar. +/// @type Number +$progress-height: 1rem !default; + +/// Background color of a progress bar. +/// @type Color +$progress-background: $medium-gray !default; + +/// Bottom margin of a progress bar. +/// @type Number +$progress-margin-bottom: $global-margin !default; + +/// Default color of a progress bar's meter. +/// @type Color +$progress-meter-background: $primary-color !default; + +/// Default radius of a progress bar. +/// @type Number +$progress-radius: $global-radius !default; + +@mixin foundation-progress-element { + progress { + -webkit-appearance: none; + -moz-appearance: none; + display: block; + width: 100%; + height: $progress-height; + margin-bottom: $progress-margin-bottom; + + @if hasvalue($progress-radius) { + border-radius: $progress-radius; + } + + // For Firefox + background: $progress-background; + border: 0; + + &::-webkit-progress-bar { + background: $progress-background; + + @if hasvalue($progress-radius) { + border-radius: $progress-radius; + } + } + + &::-webkit-progress-value { + background: $progress-meter-background; + + @if hasvalue($progress-radius) { + border-radius: $progress-radius; + } + } + + &::-moz-progress-bar { + background: $progress-meter-background; + + @if hasvalue($progress-radius) { + border-radius: $progress-radius; + } + } + + @each $name, $color in $foundation-palette { + &.#{$name} { + // Internet Explorer sets the fill with color + color: $color; + + &::-webkit-progress-value { + background: $color; + } + + &::-moz-progress-bar { + background: $color; + } + } + } + + // For IE and Edge + &::-ms-fill{ + @if hasvalue($progress-radius) { + border-radius: $progress-radius; + } + + border: 0; + } + } +} diff --git a/libraries/foundation-6/scss/forms/_range.scss b/libraries/foundation-6/scss/forms/_range.scss new file mode 100755 index 00000000..9524458b --- /dev/null +++ b/libraries/foundation-6/scss/forms/_range.scss @@ -0,0 +1,144 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group slider +//// + +/// Default height of the slider. +/// @type Number +$slider-height: 0.5rem !default; + +/// Default background color of the slider's track. +/// @type Color +$slider-background: $light-gray !default; + +/// Default color of the active fill color of the slider. +/// @type Color +$slider-fill-background: $medium-gray !default; + +/// Default height of the handle of the slider. +/// @type Number +$slider-handle-height: 1.4rem !default; + +/// Default width of the handle of the slider. +/// @type Number +$slider-handle-width: 1.4rem !default; + +/// Default color of the handle for the slider. +/// @type Color +$slider-handle-background: $primary-color !default; + +/// Default fade amount of a disabled slider. +/// @type Number +$slider-opacity-disabled: 0.25 !default; + +/// Default radius for slider. +/// @type Number +$slider-radius: $global-radius !default; + +@mixin foundation-range-input { + // scss-lint:disable QualifyingElement + input[type="range"] { + $margin: ($slider-handle-height - $slider-height) / 2; + + -webkit-appearance: none; + -moz-appearance: none; + display: block; + width: 100%; + height: auto; + cursor: pointer; + margin-top: $margin; + margin-bottom: $margin; + border: 0; + line-height: 1; + + @if has-value($slider-radius) { + border-radius: $slider-radius; + } + + &:focus { + outline: 0; + } + + &[disabled] { + opacity: $slider-opacity-disabled; + } + + // Chrome/Safari + &::-webkit-slider-runnable-track { + height: $slider-height; + background: $slider-background; + } + + &::-webkit-slider-handle { + -webkit-appearance: none; + background: $slider-handle-background; + width: $slider-handle-width; + height: $slider-handle-height; + margin-top: -$margin; + + @if has-value($slider-radius) { + border-radius: $slider-radius; + } + } + + // Firefox + &::-moz-range-track { + -moz-appearance: none; + height: $slider-height; + background: $slider-background; + } + + &::-moz-range-thumb { + -moz-appearance: none; + background: $slider-handle-background; + width: $slider-handle-width; + height: $slider-handle-height; + margin-top: -$margin; + + @if has-value($slider-radius) { + border-radius: $slider-radius; + } + } + + // Internet Explorer + &::-ms-track { + height: $slider-height; + background: $slider-background; + color: transparent; + border: 0; + overflow: visible; + border-top: $margin solid $body-background; + border-bottom: $margin solid $body-background; + } + + &::-ms-thumb { + background: $slider-handle-background; + width: $slider-handle-width; + height: $slider-handle-height; + border: 0; + + @if has-value($slider-radius) { + border-radius: $slider-radius; + } + } + + &::-ms-fill-lower { + background: $slider-fill-background; + } + + &::-ms-fill-upper { + background: $slider-background; + } + + @at-root { + output { + line-height: $slider-handle-height; + vertical-align: middle; + margin-left: 0.5em; + } + } + } +} diff --git a/libraries/foundation-6/scss/forms/_select.scss b/libraries/foundation-6/scss/forms/_select.scss new file mode 100755 index 00000000..71aef3b7 --- /dev/null +++ b/libraries/foundation-6/scss/forms/_select.scss @@ -0,0 +1,67 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group forms +//// + +/// Background color for select menus. +/// @type Color +$select-background: $white !default; + +/// Color of the dropdown triangle inside select menus. Set to `transparent` to remove it entirely. +/// @type Color +$select-triangle-color: $dark-gray !default; + +/// Default radius for select menus. +/// @type Color +$select-radius: $global-radius !default; + +@mixin form-select { + $height: ($input-font-size + ($form-spacing * 1.5) - rem-calc(1)); + + height: $height; + padding: ($form-spacing / 2); + border: $input-border; + margin: 0 0 $form-spacing; + font-size: $input-font-size; + font-family: $input-font-family; + line-height: normal; + color: $input-color; + background-color: $select-background; + border-radius: $select-radius; + -webkit-appearance: none; + -moz-appearance: none; + + @if $select-triangle-color != transparent { + @include background-triangle($select-triangle-color); + background-size: 9px 6px; + background-position: $global-right (-$form-spacing) center; + background-origin: content-box; + background-repeat: no-repeat; + padding-#{$global-right}: ($form-spacing * 1.5); + } + + // Disabled state + &:disabled { + background-color: $input-background-disabled; + cursor: $input-cursor-disabled; + } + + // Hide the dropdown arrow shown in newer IE versions + &::-ms-expand { + display: none; + } + + &[multiple] { + height: auto; + background-image: none; + } +} + +@mixin foundation-form-select { + select { + @include form-select; + } +} diff --git a/libraries/foundation-6/scss/forms/_text.scss b/libraries/foundation-6/scss/forms/_text.scss new file mode 100755 index 00000000..a61db361 --- /dev/null +++ b/libraries/foundation-6/scss/forms/_text.scss @@ -0,0 +1,163 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group forms +//// + +/// Font color of text inputs. +/// @type Color +$input-color: $black !default; + +/// Font color of placeholder text within text inputs. +/// @type Color +$input-placeholder-color: $medium-gray !default; + +/// Font family of text inputs. +/// @type Font +$input-font-family: inherit !default; + +/// Font size of text inputs. +/// @type Number +$input-font-size: rem-calc(16) !default; + +/// Background color of text inputs. +/// @type Color +$input-background: $white !default; + +/// Background color of focused of text inputs. +/// @type Color +$input-background-focus: $white !default; + +/// Background color of disabled text inputs. +/// @type Color +$input-background-disabled: $light-gray !default; + +/// Border around text inputs. +/// @type Border +$input-border: 1px solid $medium-gray !default; + +/// Border around focused text inputs. +/// @type Color +$input-border-focus: 1px solid $dark-gray !default; + +/// Box shadow inside text inputs when not focused. +/// @type Shadow +$input-shadow: inset 0 1px 2px rgba($black, 0.1) !default; + +/// Box shadow outside text inputs when focused. +/// @type Shadow +$input-shadow-focus: 0 0 5px $medium-gray !default; + +/// Cursor to use when hovering over a disabled text input. +/// @type Cursor +$input-cursor-disabled: not-allowed !default; + +/// Properties to transition on text inputs. +/// @type Transition +$input-transition: box-shadow 0.5s, border-color 0.25s ease-in-out !default; + +/// Enables the up/down buttons that Chrome and Firefox add to `<input type='number'>` elements. +/// @type Boolean +$input-number-spinners: true !default; + +/// Radius for text inputs. +/// @type Border +$input-radius: $global-radius !default; + +@mixin form-element { + $height: ($input-font-size + ($form-spacing * 1.5) - rem-calc(1)); + + display: block; + box-sizing: border-box; + width: 100%; + height: $height; + padding: $form-spacing / 2; + border: $input-border; + margin: 0 0 $form-spacing; + + font-family: $input-font-family; + font-size: $input-font-size; + color: $input-color; + background-color: $input-background; + box-shadow: $input-shadow; + border-radius: $input-radius; + + @if has-value($input-transition) { + transition: $input-transition; + } + + // Focus state + &:focus { + border: $input-border-focus; + background-color: $input-background-focus; + outline: none; + box-shadow: $input-shadow-focus; + + @if has-value($input-transition) { + transition: $input-transition; + } + } +} + +@mixin foundation-form-text { + // Text inputs + #{text-inputs()}, + textarea { + @include form-element; + -webkit-appearance: none; + -moz-appearance: none; + } + + // Text areas + textarea { + max-width: 100%; + + &[rows] { + height: auto; + } + } + + input, + textarea { + // Placeholder text + &::placeholder { + color: $input-placeholder-color; + } + + // Disabled/readonly state + &:disabled, + &[readonly] { + background-color: $input-background-disabled; + cursor: $input-cursor-disabled; + } + } + + // Reset styles on button-like inputs + [type='submit'], + [type='button'] { + border-radius: $button-radius; + -webkit-appearance: none; + -moz-appearance: none; + } + + // Reset Normalize setting content-box to search elements + // scss-lint:disable QualifyingElement + input[type='search'] { + box-sizing: border-box; + } + + // Number input styles + [type='number'] { + @if not $input-number-spinners { + -moz-appearance: textfield; + + [type='number']::-webkit-inner-spin-button, + [type='number']::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; + } + } + } +} diff --git a/libraries/foundation-6/scss/foundation.scss b/libraries/foundation-6/scss/foundation.scss new file mode 100755 index 00000000..72128c11 --- /dev/null +++ b/libraries/foundation-6/scss/foundation.scss @@ -0,0 +1,102 @@ +/** + * Foundation for Sites by ZURB + * Version 6.2.3 + * foundation.zurb.com + * Licensed under MIT Open Source + */ + +// Sass utilities +@import 'util/util'; + +// Global variables and styles +@import 'global'; + +// Components +@import 'grid/grid'; +@import 'typography/typography'; +@import 'forms/forms'; +@import 'components/visibility'; +@import 'components/float'; +@import 'components/button'; +@import 'components/button-group'; +@import 'components/accordion-menu'; +@import 'components/accordion'; +@import 'components/badge'; +@import 'components/breadcrumbs'; +@import 'components/callout'; +@import 'components/close-button'; +@import 'components/drilldown'; +@import 'components/dropdown-menu'; +@import 'components/dropdown'; +@import 'components/flex'; +@import 'components/flex-video'; +@import 'components/label'; +@import 'components/media-object'; +@import 'components/menu'; +@import 'components/menu-icon'; +@import 'components/off-canvas'; +@import 'components/orbit'; +@import 'components/pagination'; +@import 'components/progress-bar'; +@import 'components/reveal'; +@import 'components/slider'; +@import 'components/sticky'; +@import 'components/switch'; +@import 'components/table'; +@import 'components/tabs'; +@import 'components/title-bar'; +@import 'components/top-bar'; +@import 'components/thumbnail'; +@import 'components/tooltip'; + +@mixin foundation-everything($flex: false) { + @if $flex { + $global-flexbox: true !global; + } + + @include foundation-global-styles; + @if not $flex { + @include foundation-grid; + } + @else { + @include foundation-flex-grid; + } + @include foundation-typography; + @include foundation-forms; + @include foundation-button; + @include foundation-accordion; + @include foundation-accordion-menu; + @include foundation-badge; + @include foundation-breadcrumbs; + @include foundation-button-group; + @include foundation-callout; + @include foundation-close-button; + @include foundation-menu; + @include foundation-menu-icon; + @include foundation-drilldown-menu; + @include foundation-dropdown; + @include foundation-dropdown-menu; + @include foundation-flex-video; + @include foundation-label; + @include foundation-media-object; + @include foundation-off-canvas; + @include foundation-orbit; + @include foundation-pagination; + @include foundation-progress-bar; + @include foundation-slider; + @include foundation-sticky; + @include foundation-reveal; + @include foundation-switch; + @include foundation-table; + @include foundation-tabs; + @include foundation-thumbnail; + @include foundation-title-bar; + @include foundation-tooltip; + @include foundation-top-bar; + @include foundation-visibility-classes; + @include foundation-float-classes; + + @if $flex { + @include foundation-flex-classes; + } +} diff --git a/libraries/foundation-6/scss/grid/_classes.scss b/libraries/foundation-6/scss/grid/_classes.scss new file mode 100755 index 00000000..abbfd4aa --- /dev/null +++ b/libraries/foundation-6/scss/grid/_classes.scss @@ -0,0 +1,151 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group grid +//// + +/// Outputs CSS classes for the grid. +/// @access private +@mixin foundation-grid( + $row: 'row', + $column: 'column', + $column-row: 'column-row', + $push: 'push', + $pull: 'pull', + $center: 'centered', + $uncenter: 'uncentered', + $collapse: 'collapse', + $uncollapse: 'uncollapse', + $offset: 'offset', + $end: 'end', + $expanded: 'expanded' +) { + // Row + .#{$row} { + @include grid-row; + + // Collapsing + &.#{$collapse} { + > .#{$column} { + @include grid-col-collapse; + } + } + + // Nesting + & & { + @include grid-row-nest($grid-column-gutter); + + &.#{$collapse} { + margin-left: 0; + margin-right: 0; + } + } + + // Expanded (full-width) row + &.#{$expanded} { + max-width: none; + + .#{$row} { + margin-left: auto; + margin-right: auto; + } + } + } + + // Column + .#{$column} { + @include grid-col; + + @if $grid-column-align-edge { + &.#{$end} { + @include grid-col-end; + } + } + } + + // Column row + // The double .row class is needed to bump up the specificity + .#{$column}.#{$row}.#{$row} { + float: none; + + // To properly nest a column row, padding and margin is removed + .#{$row} & { + padding-left: 0; + padding-right: 0; + margin-left: 0; + margin-right: 0; + } + } + + @include -zf-each-breakpoint { + @for $i from 1 through $grid-column-count { + // Column width + .#{$-zf-size}-#{$i} { + @include grid-col-size($i); + } + + // Source ordering + @if $i < $grid-column-count { + .#{$-zf-size}-#{$push}-#{$i} { + @include grid-col-pos($i); + } + + .#{$-zf-size}-#{$pull}-#{$i} { + @include grid-col-pos(-$i); + } + } + + // Offsets + $o: $i - 1; + + .#{$-zf-size}-#{$offset}-#{$o} { + @include grid-col-off($o); + } + } + + // Block grid + @for $i from 1 through $block-grid-max { + .#{$-zf-size}-up-#{$i} { + @include grid-layout($i, ".#{$column}"); + } + } + + // Responsive collapsing + .#{$-zf-size}-#{$collapse} { + > .#{$column} { @include grid-col-collapse; } + + .#{$row}, + .#{$expanded}.#{$row} &.#{$row} { + margin-left: 0; + margin-right: 0; + } + } + + .#{$-zf-size}-#{$uncollapse} { + $gutter: -zf-get-bp-val($grid-column-gutter, $-zf-size); + + > .#{$column} { @include grid-col-uncollapse($gutter); } + } + + // Positioning + .#{$-zf-size}-#{$center} { + @include grid-col-pos(center); + } + + // Gutter adjustment + .#{$-zf-size}-#{$uncenter}, + .#{$-zf-size}-#{$push}-0, + .#{$-zf-size}-#{$pull}-0 { + @include grid-col-unpos; + } + } + + @if $column == 'column' { + .columns { + // scss-lint:disable PlaceholderInExtend + @extend .column; + } + } +} diff --git a/libraries/foundation-6/scss/grid/_column.scss b/libraries/foundation-6/scss/grid/_column.scss new file mode 100755 index 00000000..a128cd8a --- /dev/null +++ b/libraries/foundation-6/scss/grid/_column.scss @@ -0,0 +1,126 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group grid +//// + +/// Calculates the width of a column based on a number of factors. +/// +/// @param {Number|List} $columns +/// Width of the column. Accepts multiple values: +/// - A percentage value will make the column that exact size. +/// - A single digit will make the column span that number of columns wide, taking into account the column count of the parent row. +/// - A string of the format "x of y" will make a column that is *x* columns wide, assuming *y* total columns for the parent. +/// +/// @returns {Number} A calculated percentage value. +@function grid-column($columns) { + $width: 0%; + + // Parsing percents, decimals, and column counts + @if type-of($columns) == 'number' { + @if unit($columns) == '%' { + $width: $columns; + } + @else if $columns < 1 { + $width: percentage($columns); + } + @else { + $width: percentage($columns / $grid-column-count); + } + } + + // Parsing "n of n" expressions + @else if type-of($columns) == 'list' { + @if length($columns) != 3 { + @error 'Wrong syntax for grid-column(). Use the format "n of n".'; + } + @else { + $width: percentage(nth($columns, 1) / nth($columns, 3)); + } + } + + // Anything else is incorrect + @else { + @error 'Wrong syntax for grid-column(). Use a number, decimal, percentage, or "n of n".'; + } + + @return $width; +} + +/// Creates a grid column. +/// +/// @param {Mixed} $columns [$grid-column-count] - Width of the column. Refer to the `grid-column()` function to see possible values. +/// @param {Number} $gutter [$grid-column-gutter] - Spacing between columns. +@mixin grid-column( + $columns: $grid-column-count, + $gutter: $grid-column-gutter +) { + @include grid-column-size($columns); + float: $global-left; + + // Gutters + @if type-of($gutter) == 'map' { + @each $breakpoint, $value in $gutter { + $padding: rem-calc($value) / 2; + + @include breakpoint($breakpoint) { + padding-left: $padding; + padding-right: $padding; + } + } + } + @else if type-of($gutter) == 'number' and strip-unit($gutter) > 0 { + $padding: rem-calc($gutter) / 2; + padding-left: $padding; + padding-right: $padding; + } + + // Last column alignment + @if $grid-column-align-edge { + &:last-child:not(:first-child) { + float: $global-right; + } + } +} + +/// Creates a grid column row. This is the equivalent of adding `.row` and `.column` to the same element. +/// +/// @param {Number} $gutter [$grid-column-gutter] - Width of the gutters on either side of the column row. +@mixin grid-column-row( + $gutter: $grid-column-gutter +) { + @include grid-row; + @include grid-column($gutter: $gutter); + + &, + &:last-child { + float: none; + } +} + +/// Shorthand for `grid-column()`. +/// @alias grid-column +@function grid-col( + $columns: $grid-column-count +) { + @return grid-column($columns); +} + +/// Shorthand for `grid-column()`. +/// @alias grid-column +@mixin grid-col( + $columns: $grid-column-count, + $gutter: $grid-column-gutter +) { + @include grid-column($columns, $gutter); +} + +/// Shorthand for `grid-column-row()`. +/// @alias grid-column-row +@mixin grid-col-row( + $gutter: $grid-column-gutter +) { + @include grid-column-row($gutter); +} diff --git a/libraries/foundation-6/scss/grid/_flex-grid.scss b/libraries/foundation-6/scss/grid/_flex-grid.scss new file mode 100755 index 00000000..d8f33a64 --- /dev/null +++ b/libraries/foundation-6/scss/grid/_flex-grid.scss @@ -0,0 +1,280 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group flex-grid +//// + +/// Creates a container for a flex grid row. +/// +/// @param {Keyword|List} $behavior [null] +/// Modifications to the default grid styles. `nest` indicates the row will be placed inside another row. `collapse` indicates that the columns inside this row will not have padding. `nest collapse` combines both behaviors. +/// @param {Number} $width [$grid-row-width] - Maximum width of the row. +/// @param {Number} $columns [null] - Number of columns to use for this row. If set to `null` (the default), the global column count will be used. +/// @param {Boolean} $base [true] - Set to `false` to prevent basic styles from being output. Useful if you're calling this mixin on the same element twice, as it prevents duplicate CSS output. +/// @param {Number} $gutter [$grid-column-gutter] - Gutter to use when inverting margins, in case the row is nested. +@mixin flex-grid-row( + $behavior: null, + $width: $grid-row-width, + $columns: null, + $base: true, + $gutter: $grid-column-gutter +) { + $margin: auto; + + @if index($behavior, nest) != null { + @include grid-row-nest($gutter); + + @if index($behavior, collapse) != null { + margin-left: 0; + margin-right: 0; + } + } + @else { + max-width: $width; + margin-left: auto; + margin-right: auto; + } + + @if $base { + display: flex; + flex-flow: row wrap; + } + + @if $columns != null { + @include grid-context($columns, $base) { + @content; + } + } +} + +/// Calculates the `flex` property for a flex grid column. It accepts all of the same values as the basic `grid-column()` function, along with two extras: +/// - `null` (the default) will make the column expand to fill space. +/// - `shrink` will make the column contract, so it only takes up the horizontal space it needs. +/// +/// @param {Mixed} $columns [null] - Width of the column. +@function flex-grid-column($columns: null) { + // scss-lint:disable ZeroUnit + $flex: 1 1 0px; + + @if $columns == shrink { + $flex: 0 0 auto; + } + @else if $columns != null { + $flex: 0 0 grid-column($columns); + } + + @return $flex; +} + +/// Creates a column for a flex grid. By default, the column will stretch to the full width of its container, but this can be overridden with sizing classes, or by using the `unstack` class on the parent flex row. +/// +/// @param {Mixed} $columns [null] - Width of the column. Refer to the `flex-grid-column()` function to see possible values. +/// @param {Number} $gutter [$grid-column-gutter] - Space between columns, added as a left and right padding. +@mixin flex-grid-column( + $columns: null, + $gutter: $grid-column-gutter +) { + // Base properties + flex: flex-grid-column($columns); + + // Gutters + @if type-of($gutter) == 'map' { + @each $breakpoint, $value in $gutter { + $padding: rem-calc($value) / 2; + + @include breakpoint($breakpoint) { + padding-left: $padding; + padding-right: $padding; + } + } + } + @else if type-of($gutter) == 'number' and strip-unit($gutter) > 0 { + $padding: rem-calc($gutter) / 2; + padding-left: $padding; + padding-right: $padding; + } + + // fixes recent Chrome version not limiting child width + // https://stackoverflow.com/questions/34934586/white-space-nowrap-and-flexbox-did-not-work-in-chrome + @if $columns == null { + min-width: initial; + } + // max-width fixes IE 10/11 not respecting the flex-basis property + @if $columns != null and $columns != shrink { + max-width: grid-column($columns); + } +} + +/// Creates a block grid for a flex grid row. +/// +/// @param {Number} $n - Number of columns to display on each row. +/// @param {String} $selector - Selector to use to target columns within the row. +@mixin flex-grid-layout( + $n, + $selector: '.column' +) { + flex-wrap: wrap; + + > #{$selector} { + $pct: percentage(1/$n); + + flex: 0 0 $pct; + max-width: $pct; + } +} + +/// Changes the source order of a flex grid column. Columns with lower numbers appear first in the layout. +/// @param {Number} $order [0] - Order number to apply. +@mixin flex-grid-order($order: 0) { + @warn 'This mixin is being replaced by flex-order(). flex-grid-order() will be removed in Foundation 6.3.'; + @include flex-order($order); +} + +/// Horizontally or vertically aligns the columns within a flex row. Apply this mixin to a flex row. +/// +/// @param {Keyword} $x [null] - Horizontal alignment to use. Can be `left`, `right`, `center`, `justify`, or `spaced`. Or, set it to `null` (the default) to not set horizontal alignment. +/// @param {Keyword} $y [null] - Vertical alignment to use. Can be `top`, `bottom`, `middle`, or `stretch`. Or, set it to `null` (the default) to not set vertical alignment. +@mixin flex-grid-row-align($x: null, $y: null) { + @warn 'This mixin is being replaced by flex-align(). flex-grid-row-align() will be removed in Foundation 6.3.'; + @include flex-align($x, $y); +} + +/// Vertically align a single column within a flex row. Apply this mixin to a flex column. +/// +/// @param {Keyword} $y [null] - Vertical alignment to use. Can be `top`, `bottom`, `middle`, or `stretch`. Or, set it to `null` (the default) to not set vertical alignment. +@mixin flex-grid-column-align($y: null) { + @warn 'This mixin is being replaced by flex-align-self(). flex-grid-column-align() will be removed in Foundation 6.3.'; + @include flex-align-self($y); +} + +@mixin foundation-flex-grid { + // Row + .row { + @include flex-grid-row; + + // Nesting behavior + & & { + @include flex-grid-row(nest, $base: false); + } + + // Expanded row + &.expanded { + max-width: none; + } + + &.collapse { + > .column { + @include grid-col-collapse; + > .row { + margin-left: 0; + margin-right: 0; + } + } + } + } + + // Column + .column { + @include flex-grid-column; + } + + // Column row + // The double .row class is needed to bump up the specificity + .column.row.row { + float: none; + display: block; + + // To properly nest a column row, padding and margin is removed + .row & { + padding-left: 0; + padding-right: 0; + margin-left: 0; + margin-right: 0; + } + } + + @include -zf-each-breakpoint { + @for $i from 1 through $grid-column-count { + // Sizing (percentage) + .#{$-zf-size}-#{$i} { + flex: flex-grid-column($i); + max-width: grid-column($i); + } + + // Offsets + $o: $i - 1; + + .#{$-zf-size}-offset-#{$o} { + @include grid-column-offset($o); + } + } + + // Source ordering + @for $i from 1 through 6 { + .#{$-zf-size}-order-#{$i} { + @include flex-order($i); + } + } + + // Block grid + @for $i from 1 through $block-grid-max { + .#{$-zf-size}-up-#{$i} { + @include flex-grid-layout($i); + } + } + + @if $-zf-size != $-zf-zero-breakpoint { + // Sizing (expand) + @include breakpoint($-zf-size) { + .#{$-zf-size}-expand { + flex: flex-grid-column(); + } + } + + // Auto-stacking/unstacking + @at-root (without: media) { + .row.#{$-zf-size}-unstack { + > .column { + flex: flex-grid-column(100%); + + @include breakpoint($-zf-size) { + flex: flex-grid-column(); + } + } + } + } + } + + // Responsive collapsing + .#{$-zf-size}-collapse { + > .column { @include grid-col-collapse; } + } + + .#{$-zf-size}-uncollapse { + $gutter: -zf-get-bp-val($grid-column-gutter, $-zf-size); + + > .column { @include grid-col-uncollapse($gutter); } + } + } + + // Sizing (shrink) + .shrink { + flex: flex-grid-column(shrink); + max-width: 100%; + } + + // Vertical alignment using align-items and align-self + // Remove these in 6.3 + @each $vdir, $prop in $-zf-flex-align { + .column.align-#{$vdir} { + @include flex-align-self($vdir); + } + } + + .columns { + // scss-lint:disable PlaceholderInExtend + @extend .column; + } +} diff --git a/libraries/foundation-6/scss/grid/_grid.scss b/libraries/foundation-6/scss/grid/_grid.scss new file mode 100755 index 00000000..0a8d879c --- /dev/null +++ b/libraries/foundation-6/scss/grid/_grid.scss @@ -0,0 +1,60 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group grid +//// + +/// The maximum width of a row. +/// @type Number +$grid-row-width: $global-width !default; + +/// The default column count of a grid. Changing this value affects the logic of the grid mixins, and the number of CSS classes output. +/// @type Number +$grid-column-count: 12 !default; + +/// The amount of space between columns at different screen sizes. To use just one size, set the variable to a number instead of a map. +/// @type Map | Length +/// @since 6.1.0 +$grid-column-gutter: ( + small: 20px, + medium: 30px, +) !default; + +/// If `true`, the last column in a row will align to the opposite edge of the row. +/// @type Boolean +$grid-column-align-edge: true !default; + +/// The highest number of `.x-up` classes available when using the block grid CSS. +/// @type Number +$block-grid-max: 8 !default; + +// Internal value to store the end column float direction +$-zf-end-float: if($grid-column-align-edge, $global-right, $global-left); + +// The last piece to transition the responsive gutter feature +// Remove this in 6.3 +$grid-column-responsive-gutter: null !default; +@if $grid-column-responsive-gutter { + // scss-lint:disable DebugStatement + @warn 'Rename $grid-column-responsive-gutter to $grid-column-gutter to remove this warning.'; + $grid-column-gutter: $grid-column-responsive-gutter; +} + +// If a single value is passed as a gutter, convert it to a map so the code knows what to do with it +@if type-of($grid-column-gutter) == 'number' { + $grid-column-gutter: ( + small: $grid-column-gutter, + ); +} + +@import 'row'; +@import 'column'; +@import 'size'; +@import 'position'; +@import 'gutter'; +@import 'classes'; +@import 'layout'; + +@import 'flex-grid'; diff --git a/libraries/foundation-6/scss/grid/_gutter.scss b/libraries/foundation-6/scss/grid/_gutter.scss new file mode 100755 index 00000000..5897eb55 --- /dev/null +++ b/libraries/foundation-6/scss/grid/_gutter.scss @@ -0,0 +1,34 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group grid +//// + +/// Collapse the gutters on a column by removing the padding. **Note:** only use this mixin within a breakpoint. To collapse a column's gutters on all screen sizes, use the `$gutter` parameter of the `grid-column()` mixin instead. +@mixin grid-column-collapse { + padding-left: 0; + padding-right: 0; +} + +/// Un-collapse the gutters on a column by re-adding the padding. +/// +/// @param {Number} $gutter [$grid-column-gutter] - Spacing between columns. +@mixin grid-column-uncollapse($gutter: $grid-column-gutter) { + $gutter: rem-calc($gutter) / 2; + padding-left: $gutter; + padding-right: $gutter; +} + +/// Shorthand for `grid-column-collapse()`. +/// @alias grid-column-collapse +@mixin grid-col-collapse { + @include grid-column-collapse; +} + +/// Shorthand for `grid-column-uncollapse()`. +/// @alias grid-column-uncollapse +@mixin grid-col-uncollapse($gutter: $grid-column-gutter) { + @include grid-column-uncollapse($gutter); +} diff --git a/libraries/foundation-6/scss/grid/_layout.scss b/libraries/foundation-6/scss/grid/_layout.scss new file mode 100755 index 00000000..9f5da07c --- /dev/null +++ b/libraries/foundation-6/scss/grid/_layout.scss @@ -0,0 +1,51 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group grid +//// + +/// Sizes child elements so that `$n` number of items appear on each row. +/// +/// @param {Number} $n - Number of elements to display per row. +/// @param {String} $selector ['.column'] - Selector(s) to use for child elements. +@mixin grid-layout( + $n, + $selector: '.column' +) { + & > #{$selector} { + width: percentage(1/$n); + float: $global-left; + + &:nth-of-type(1n) { + clear: none; + } + + &:nth-of-type(#{$n}n+1) { + clear: both; + } + + &:last-child { + float: left; + } + } +} + +/// Adds extra CSS to block grid children so the last items in the row center automatically. Apply this to the columns, not the row. +/// +/// @param {Number} $n - Number of items that appear in each row. +@mixin grid-layout-center-last($n) { + @for $i from 1 to $n { + @if $i == 1 { + &:nth-child(#{$n}n+1):last-child { + margin-left: (100 - 100/$n * $i) / 2 * 1%; + } + } + @else { + &:nth-child(#{$n}n+1):nth-last-child(#{$i}) { + margin-left: (100 - 100/$n * $i) / 2 * 1%; + } + } + } +} diff --git a/libraries/foundation-6/scss/grid/_position.scss b/libraries/foundation-6/scss/grid/_position.scss new file mode 100755 index 00000000..4d1bea5d --- /dev/null +++ b/libraries/foundation-6/scss/grid/_position.scss @@ -0,0 +1,73 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group grid +//// + +/// Reposition a column. +/// +/// @param {Number|Keyword} $position - Direction and amount to move. The column will move equal to the width of the column count specified. A positive number will push the column to the right, while a negative number will pull it to the left. Set to center to center the column. +@mixin grid-column-position($position) { + @if type-of($position) == 'number' { + $offset: percentage($position / $grid-column-count); + + position: relative; + #{$global-left}: $offset; + } + @else if $position == center { + float: none; + margin-left: auto; + margin-right: auto; + } + @else { + @warn 'Wrong syntax for grid-column-position(). Enter a positive or negative number, or center.'; + } +} + +/// Reset a position definition. +@mixin grid-column-unposition { + position: static; + margin-left: 0; + margin-right: 0; + float: left; +} + +/// Offsets a column to the right by `$n` columns. +/// @param {Number|List} $n - Width to offset by. You can pass in any value accepted by the `grid-column()` mixin, such as `6`, `50%`, or `1 of 2`. +@mixin grid-column-offset($n) { + margin-#{$global-left}: grid-column($n); +} + +/// Disable the default behavior of the last column in a row aligning to the opposite edge. +@mixin grid-column-end { + // This extra specificity is required for the property to be applied + &:last-child:last-child { + float: $global-left; + } +} + +/// Shorthand for `grid-column-position()`. +/// @alias grid-column-position +@mixin grid-col-pos($position) { + @include grid-column-position($position); +} + +/// Shorthand for `grid-column-unposition()`. +/// @alias grid-column-unposition +@mixin grid-col-unpos { + @include grid-column-unposition; +} + +/// Shorthand for `grid-column-offset()`. +/// @alias grid-column-offset +@mixin grid-col-off($n) { + @include grid-column-offset($n); +} + +/// Shorthand for `grid-column-end()`. +/// @alias grid-column-end +@mixin grid-col-end { + @include grid-column-end; +} diff --git a/libraries/foundation-6/scss/grid/_row.scss b/libraries/foundation-6/scss/grid/_row.scss new file mode 100755 index 00000000..9cd14883 --- /dev/null +++ b/libraries/foundation-6/scss/grid/_row.scss @@ -0,0 +1,95 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group grid +//// + +/// Change the behavior of columns defined inside this mixin to use a different column count. +/// @content +/// +/// @param {Number} $columns - Number of columns to use. +/// @param {Boolean} $root [false] +/// If `false`, selectors inside this mixin will nest inside the parent selector. +/// If `true`, selectors will not nest. +@mixin grid-context( + $columns, + $root: false +) { + // Store the current column count so it can be re-set later + $old-grid-column-count: $grid-column-count; + $grid-column-count: $columns !global; + + @if $root { + @at-root { @content; } + } + @else { + @content; + } + + // Restore the old column count + $grid-column-count: $old-grid-column-count; +} + +/// Creates a grid row. +/// @content +/// +/// @param {Number} $columns [null] - Column count for this row. `null` will use the default column count. +/// @param {Keywords} $behavior [null] +/// Modifications to the default grid styles. `nest` indicates the row will be placed inside another row. `collapse` indicates that the columns inside this row will not have padding. `nest collapse` combines both behaviors. +/// @param {Number} $width [$grid-row-width] - Maximum width of the row. +/// @param {Boolean} $cf [true] - Whether or not to include a clearfix. +/// @param {Number} $gutter [$grid-column-gutter] - Gutter to use when inverting margins, in case the row is nested. +@mixin grid-row( + $columns: null, + $behavior: null, + $width: $grid-row-width, + $cf: true, + $gutter: $grid-column-gutter +) { + $margin: auto; + + @if index($behavior, nest) != null { + @include grid-row-nest($gutter); + + @if index($behavior, collapse) != null { + margin-left: 0; + margin-right: 0; + } + } + @else { + max-width: $width; + margin-left: auto; + margin-right: auto; + } + + @if $cf { + @include clearfix; + } + + @if $columns != null { + @include grid-context($columns) { + @content; + } + } +} + +/// Inverts the margins of a row to nest it inside of a column. +/// +/// @param {Map|null} $gutter [null] - Gutter value to use when inverting the margins. Set to `null` to refer to the responsive gutter settings. +@mixin grid-row-nest($gutter: $grid-column-gutter) { + @if type-of($gutter) == 'number' { + $gutter: ($-zf-zero-breakpoint: $gutter); + } + max-width: none; + + @each $breakpoint, $value in $gutter { + $margin: rem-calc($value) / 2 * -1; + + @include breakpoint($breakpoint) { + margin-left: $margin; + margin-right: $margin; + } + } +} diff --git a/libraries/foundation-6/scss/grid/_size.scss b/libraries/foundation-6/scss/grid/_size.scss new file mode 100755 index 00000000..c01c8cab --- /dev/null +++ b/libraries/foundation-6/scss/grid/_size.scss @@ -0,0 +1,24 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group grid +//// + +/// Set the width of a grid column. +/// +/// @param {Number|List} $width [$grid-column-count] - Width to make the column. You can pass in any value accepted by the `grid-column()` function, such as `6`, `50%`, or `1 of 2`. +@mixin grid-column-size( + $columns: $grid-column-count +) { + width: grid-column($columns); +} + +/// Shorthand for `grid-column-size()`. +/// @alias grid-column-size +@mixin grid-col-size( + $columns: $grid-column-count +) { + @include grid-column-size($columns); +} diff --git a/libraries/foundation-6/scss/settings/_settings.scss b/libraries/foundation-6/scss/settings/_settings.scss new file mode 100755 index 00000000..af51ab2b --- /dev/null +++ b/libraries/foundation-6/scss/settings/_settings.scss @@ -0,0 +1,568 @@ +// Foundation for Sites Settings +// ----------------------------- +// +// Table of Contents: +// +// 1. Global +// 2. Breakpoints +// 3. The Grid +// 4. Base Typography +// 5. Typography Helpers +// 6. Abide +// 7. Accordion +// 8. Accordion Menu +// 9. Badge +// 10. Breadcrumbs +// 11. Button +// 12. Button Group +// 13. Callout +// 14. Close Button +// 15. Drilldown +// 16. Dropdown +// 17. Dropdown Menu +// 18. Flex Video +// 19. Forms +// 20. Label +// 21. Media Object +// 22. Menu +// 23. Meter +// 24. Off-canvas +// 25. Orbit +// 26. Pagination +// 27. Progress Bar +// 28. Reveal +// 29. Slider +// 30. Switch +// 31. Table +// 32. Tabs +// 33. Thumbnail +// 34. Title Bar +// 35. Tooltip +// 36. Top Bar + +@import 'util/util'; + +// 1. Global +// --------- + +$global-font-size: 100%; +$global-width: rem-calc(1200); +$global-lineheight: 1.5; +$foundation-palette: ( + primary: #2199e8, + secondary: #777, + success: #3adb76, + warning: #ffae00, + alert: #ec5840, +); +$light-gray: #e6e6e6; +$medium-gray: #cacaca; +$dark-gray: #8a8a8a; +$black: #0a0a0a; +$white: #fefefe; +$body-background: $white; +$body-font-color: $black; +$body-font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif; +$body-antialiased: true; +$global-margin: 1rem; +$global-padding: 1rem; +$global-weight-normal: normal; +$global-weight-bold: bold; +$global-radius: 0; +$global-text-direction: ltr; +$global-flexbox: false; +$print-transparent-backgrounds: true; + +@include add-foundation-colors; + +// 2. Breakpoints +// -------------- + +$breakpoints: ( + small: 0, + medium: 640px, + large: 1024px, + xlarge: 1200px, + xxlarge: 1440px, +); +$breakpoint-classes: (small medium large); + +// 3. The Grid +// ----------- + +$grid-row-width: $global-width; +$grid-column-count: 12; +$grid-column-gutter: ( + small: 20px, + medium: 30px, +); +$grid-column-align-edge: true; +$block-grid-max: 8; + +// 4. Base Typography +// ------------------ + +$header-font-family: $body-font-family; +$header-font-weight: $global-weight-normal; +$header-font-style: normal; +$font-family-monospace: Consolas, 'Liberation Mono', Courier, monospace; +$header-sizes: ( + small: ( + 'h1': 24, + 'h2': 20, + 'h3': 19, + 'h4': 18, + 'h5': 17, + 'h6': 16, + ), + medium: ( + 'h1': 48, + 'h2': 40, + 'h3': 31, + 'h4': 25, + 'h5': 20, + 'h6': 16, + ), +); +$header-color: inherit; +$header-lineheight: 1.4; +$header-margin-bottom: 0.5rem; +$header-text-rendering: optimizeLegibility; +$small-font-size: 80%; +$header-small-font-color: $medium-gray; +$paragraph-lineheight: 1.6; +$paragraph-margin-bottom: 1rem; +$paragraph-text-rendering: optimizeLegibility; +$code-color: $black; +$code-font-family: $font-family-monospace; +$code-font-weight: $global-weight-normal; +$code-background: $light-gray; +$code-border: 1px solid $medium-gray; +$code-padding: rem-calc(2 5 1); +$anchor-color: $primary-color; +$anchor-color-hover: scale-color($anchor-color, $lightness: -14%); +$anchor-text-decoration: none; +$anchor-text-decoration-hover: none; +$hr-width: $global-width; +$hr-border: 1px solid $medium-gray; +$hr-margin: rem-calc(20) auto; +$list-lineheight: $paragraph-lineheight; +$list-margin-bottom: $paragraph-margin-bottom; +$list-style-type: disc; +$list-style-position: outside; +$list-side-margin: 1.25rem; +$list-nested-side-margin: 1.25rem; +$defnlist-margin-bottom: 1rem; +$defnlist-term-weight: $global-weight-bold; +$defnlist-term-margin-bottom: 0.3rem; +$blockquote-color: $dark-gray; +$blockquote-padding: rem-calc(9 20 0 19); +$blockquote-border: 1px solid $medium-gray; +$cite-font-size: rem-calc(13); +$cite-color: $dark-gray; +$keystroke-font: $font-family-monospace; +$keystroke-color: $black; +$keystroke-background: $light-gray; +$keystroke-padding: rem-calc(2 4 0); +$keystroke-radius: $global-radius; +$abbr-underline: 1px dotted $black; + +// 5. Typography Helpers +// --------------------- + +$lead-font-size: $global-font-size * 1.25; +$lead-lineheight: 1.6; +$subheader-lineheight: 1.4; +$subheader-color: $dark-gray; +$subheader-font-weight: $global-weight-normal; +$subheader-margin-top: 0.2rem; +$subheader-margin-bottom: 0.5rem; +$stat-font-size: 2.5rem; + +// 6. Abide +// -------- + +$abide-inputs: true; +$abide-labels: true; +$input-background-invalid: map-get($foundation-palette, alert); +$form-label-color-invalid: map-get($foundation-palette, alert); +$input-error-color: map-get($foundation-palette, alert); +$input-error-font-size: rem-calc(12); +$input-error-font-weight: $global-weight-bold; + +// 7. Accordion +// ------------ + +$accordion-background: $white; +$accordion-plusminus: true; +$accordion-item-color: foreground($accordion-background, $primary-color); +$accordion-item-background-hover: $light-gray; +$accordion-item-padding: 1.25rem 1rem; +$accordion-content-background: $white; +$accordion-content-border: 1px solid $light-gray; +$accordion-content-color: foreground($accordion-content-background, $body-font-color); +$accordion-content-padding: 1rem; + +// 8. Accordion Menu +// ----------------- + +$accordionmenu-arrows: true; +$accordionmenu-arrow-color: $primary-color; + +// 9. Badge +// -------- + +$badge-background: $primary-color; +$badge-color: foreground($badge-background); +$badge-padding: 0.3em; +$badge-minwidth: 2.1em; +$badge-font-size: 0.6rem; + +// 10. Breadcrumbs +// --------------- + +$breadcrumbs-margin: 0 0 $global-margin 0; +$breadcrumbs-item-font-size: rem-calc(11); +$breadcrumbs-item-color: $primary-color; +$breadcrumbs-item-color-current: $black; +$breadcrumbs-item-color-disabled: $medium-gray; +$breadcrumbs-item-margin: 0.75rem; +$breadcrumbs-item-uppercase: true; +$breadcrumbs-item-slash: true; + +// 11. Button +// ---------- + +$button-padding: 0.85em 1em; +$button-margin: 0 0 $global-margin 0; +$button-fill: solid; +$button-background: $primary-color; +$button-background-hover: scale-color($button-background, $lightness: -15%); +$button-color: $white; +$button-color-alt: $black; +$button-radius: $global-radius; +$button-sizes: ( + tiny: 0.6rem, + small: 0.75rem, + default: 0.9rem, + large: 1.25rem, +); +$button-opacity-disabled: 0.25; + +// 12. Button Group +// ---------------- + +$buttongroup-margin: 1rem; +$buttongroup-spacing: 1px; +$buttongroup-child-selector: '.button'; +$buttongroup-expand-max: 6; + +// 13. Callout +// ----------- + +$callout-background: $white; +$callout-background-fade: 85%; +$callout-border: 1px solid rgba($black, 0.25); +$callout-margin: 0 0 1rem 0; +$callout-padding: 1rem; +$callout-font-color: $body-font-color; +$callout-font-color-alt: $body-background; +$callout-radius: $global-radius; +$callout-link-tint: 30%; + +// 14. Close Button +// ---------------- + +$closebutton-position: right top; +$closebutton-offset-horizontal: 1rem; +$closebutton-offset-vertical: 0.5rem; +$closebutton-size: 2em; +$closebutton-lineheight: 1; +$closebutton-color: $dark-gray; +$closebutton-color-hover: $black; + +// 15. Drilldown +// ------------- + +$drilldown-transition: transform 0.15s linear; +$drilldown-arrows: true; +$drilldown-arrow-color: $primary-color; +$drilldown-background: $white; + +// 16. Dropdown +// ------------ + +$dropdown-padding: 1rem; +$dropdown-border: 1px solid $medium-gray; +$dropdown-font-size: 1rem; +$dropdown-width: 300px; +$dropdown-radius: $global-radius; +$dropdown-sizes: ( + tiny: 100px, + small: 200px, + large: 400px, +); + +// 17. Dropdown Menu +// ----------------- + +$dropdownmenu-arrows: true; +$dropdownmenu-arrow-color: $anchor-color; +$dropdownmenu-min-width: 200px; +$dropdownmenu-background: $white; +$dropdownmenu-border: 1px solid $medium-gray; + +// 18. Flex Video +// -------------- + +$flexvideo-margin-bottom: rem-calc(16); +$flexvideo-ratio: 4 by 3; +$flexvideo-ratio-widescreen: 16 by 9; + +// 19. Forms +// --------- + +$fieldset-border: 1px solid $medium-gray; +$fieldset-padding: rem-calc(20); +$fieldset-margin: rem-calc(18 0); +$legend-padding: rem-calc(0 3); +$form-spacing: rem-calc(16); +$helptext-color: $black; +$helptext-font-size: rem-calc(13); +$helptext-font-style: italic; +$input-prefix-color: $black; +$input-prefix-background: $light-gray; +$input-prefix-border: 1px solid $medium-gray; +$input-prefix-padding: 1rem; +$form-label-color: $black; +$form-label-font-size: rem-calc(14); +$form-label-font-weight: $global-weight-normal; +$form-label-line-height: 1.8; +$select-background: $white; +$select-triangle-color: $dark-gray; +$select-radius: $global-radius; +$input-color: $black; +$input-placeholder-color: $medium-gray; +$input-font-family: inherit; +$input-font-size: rem-calc(16); +$input-background: $white; +$input-background-focus: $white; +$input-background-disabled: $light-gray; +$input-border: 1px solid $medium-gray; +$input-border-focus: 1px solid $dark-gray; +$input-shadow: inset 0 1px 2px rgba($black, 0.1); +$input-shadow-focus: 0 0 5px $medium-gray; +$input-cursor-disabled: not-allowed; +$input-transition: box-shadow 0.5s, border-color 0.25s ease-in-out; +$input-number-spinners: true; +$input-radius: $global-radius; + +// 20. Label +// --------- + +$label-background: $primary-color; +$label-color: foreground($label-background); +$label-font-size: 0.8rem; +$label-padding: 0.33333rem 0.5rem; +$label-radius: $global-radius; + +// 21. Media Object +// ---------------- + +$mediaobject-margin-bottom: $global-margin; +$mediaobject-section-padding: $global-padding; +$mediaobject-image-width-stacked: 100%; + +// 22. Menu +// -------- + +$menu-margin: 0; +$menu-margin-nested: 1rem; +$menu-item-padding: 0.7rem 1rem; +$menu-item-color-active: $white; +$menu-item-background-active: map-get($foundation-palette, primary); +$menu-icon-spacing: 0.25rem; + +// 23. Meter +// --------- + +$meter-height: 1rem; +$meter-radius: $global-radius; +$meter-background: $medium-gray; +$meter-fill-good: $success-color; +$meter-fill-medium: $warning-color; +$meter-fill-bad: $alert-color; + +// 24. Off-canvas +// -------------- + +$offcanvas-size: 250px; +$offcanvas-background: $light-gray; +$offcanvas-zindex: -1; +$offcanvas-transition-length: 0.5s; +$offcanvas-transition-timing: ease; +$offcanvas-fixed-reveal: true; +$offcanvas-exit-background: rgba($white, 0.25); +$maincontent-class: 'off-canvas-content'; +$maincontent-shadow: 0 0 10px rgba($black, 0.5); + +// 25. Orbit +// --------- + +$orbit-bullet-background: $medium-gray; +$orbit-bullet-background-active: $dark-gray; +$orbit-bullet-diameter: 1.2rem; +$orbit-bullet-margin: 0.1rem; +$orbit-bullet-margin-top: 0.8rem; +$orbit-bullet-margin-bottom: 0.8rem; +$orbit-caption-background: rgba($black, 0.5); +$orbit-caption-padding: 1rem; +$orbit-control-background-hover: rgba($black, 0.5); +$orbit-control-padding: 1rem; +$orbit-control-zindex: 10; + +// 26. Pagination +// -------------- + +$pagination-font-size: rem-calc(14); +$pagination-margin-bottom: $global-margin; +$pagination-item-color: $black; +$pagination-item-padding: rem-calc(3 10); +$pagination-item-spacing: rem-calc(1); +$pagination-radius: $global-radius; +$pagination-item-background-hover: $light-gray; +$pagination-item-background-current: $primary-color; +$pagination-item-color-current: foreground($pagination-item-background-current); +$pagination-item-color-disabled: $medium-gray; +$pagination-ellipsis-color: $black; +$pagination-mobile-items: false; +$pagination-arrows: true; + +// 27. Progress Bar +// ---------------- + +$progress-height: 1rem; +$progress-background: $medium-gray; +$progress-margin-bottom: $global-margin; +$progress-meter-background: $primary-color; +$progress-radius: $global-radius; + +// 28. Reveal +// ---------- + +$reveal-background: $white; +$reveal-width: 600px; +$reveal-max-width: $global-width; +$reveal-padding: $global-padding; +$reveal-border: 1px solid $medium-gray; +$reveal-radius: $global-radius; +$reveal-zindex: 1005; +$reveal-overlay-background: rgba($black, 0.45); + +// 29. Slider +// ---------- + +$slider-width-vertical: 0.5rem; +$slider-transition: all 0.2s ease-in-out; +$slider-height: 0.5rem; +$slider-background: $light-gray; +$slider-fill-background: $medium-gray; +$slider-handle-height: 1.4rem; +$slider-handle-width: 1.4rem; +$slider-handle-background: $primary-color; +$slider-opacity-disabled: 0.25; +$slider-radius: $global-radius; + +// 30. Switch +// ---------- + +$switch-background: $medium-gray; +$switch-background-active: $primary-color; +$switch-height: 2rem; +$switch-height-tiny: 1.5rem; +$switch-height-small: 1.75rem; +$switch-height-large: 2.5rem; +$switch-radius: $global-radius; +$switch-margin: $global-margin; +$switch-paddle-background: $white; +$switch-paddle-offset: 0.25rem; +$switch-paddle-radius: $global-radius; +$switch-paddle-transition: all 0.25s ease-out; + +// 31. Table +// --------- + +$table-background: $white; +$table-color-scale: 5%; +$table-border: 1px solid smart-scale($table-background, $table-color-scale); +$table-padding: rem-calc(8 10 10); +$table-hover-scale: 2%; +$table-row-hover: darken($table-background, $table-hover-scale); +$table-row-stripe-hover: darken($table-background, $table-color-scale + $table-hover-scale); +$table-striped-background: smart-scale($table-background, $table-color-scale); +$table-stripe: even; +$table-head-background: smart-scale($table-background, $table-color-scale / 2); +$table-foot-background: smart-scale($table-background, $table-color-scale); +$table-head-font-color: $body-font-color; +$table-foot-font-color: $body-font-color; +$show-header-for-stacked: false; + +// 32. Tabs +// -------- + +$tab-margin: 0; +$tab-background: $white; +$tab-background-active: $light-gray; +$tab-item-font-size: rem-calc(12); +$tab-item-background-hover: $white; +$tab-item-padding: 1.25rem 1.5rem; +$tab-expand-max: 6; +$tab-content-background: $white; +$tab-content-border: $light-gray; +$tab-content-color: foreground($tab-background, $primary-color); +$tab-content-padding: 1rem; + +// 33. Thumbnail +// ------------- + +$thumbnail-border: solid 4px $white; +$thumbnail-margin-bottom: $global-margin; +$thumbnail-shadow: 0 0 0 1px rgba($black, 0.2); +$thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5); +$thumbnail-transition: box-shadow 200ms ease-out; +$thumbnail-radius: $global-radius; + +// 34. Title Bar +// ------------- + +$titlebar-background: $black; +$titlebar-color: $white; +$titlebar-padding: 0.5rem; +$titlebar-text-font-weight: bold; +$titlebar-icon-color: $white; +$titlebar-icon-color-hover: $medium-gray; +$titlebar-icon-spacing: 0.25rem; + +// 35. Tooltip +// ----------- + +$has-tip-font-weight: $global-weight-bold; +$has-tip-border-bottom: dotted 1px $dark-gray; +$tooltip-background-color: $black; +$tooltip-color: $white; +$tooltip-padding: 0.75rem; +$tooltip-font-size: $small-font-size; +$tooltip-pip-width: 0.75rem; +$tooltip-pip-height: $tooltip-pip-width * 0.866; +$tooltip-radius: $global-radius; + +// 36. Top Bar +// ----------- + +$topbar-padding: 0.5rem; +$topbar-background: $light-gray; +$topbar-submenu-background: $topbar-background; +$topbar-title-spacing: 1rem; +$topbar-input-width: 200px; +$topbar-unstack-breakpoint: medium; + diff --git a/libraries/foundation-6/scss/typography/_alignment.scss b/libraries/foundation-6/scss/typography/_alignment.scss new file mode 100755 index 00000000..77ffd617 --- /dev/null +++ b/libraries/foundation-6/scss/typography/_alignment.scss @@ -0,0 +1,22 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +@mixin foundation-text-alignment { + @each $size in $breakpoint-classes { + @include breakpoint($size) { + @each $align in (left, right, center, justify) { + @if $size != $-zf-zero-breakpoint { + .#{$size}-text-#{$align} { + text-align: $align; + } + } + @else { + .text-#{$align} { + text-align: $align; + } + } + } + } + } +} diff --git a/libraries/foundation-6/scss/typography/_base.scss b/libraries/foundation-6/scss/typography/_base.scss new file mode 100755 index 00000000..55a9b518 --- /dev/null +++ b/libraries/foundation-6/scss/typography/_base.scss @@ -0,0 +1,443 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group typography-base +//// + +// Base Typography +// - - - - - - - - - - - - - - - +// These are styles applied to basic HTML tags, including: +// - Paragraphs <p> +// - Bold/italics <b> <strong> <i> <em> +// - Small text <small> +// - Headings <h1>—<h6> +// - Anchors <a> +// - Dividers <hr> +// - Lists <ul> <ol> <dl> +// - Blockquotes <blockquote> +// - Code blocks <code> +// - Abbreviations <abbr> +// - Citations <cite> +// - Keystrokes <kbd> + +/// Font family for header elements. +/// @type String | List +$header-font-family: $body-font-family !default; + +/// Font weight of headers. +/// @type String +$header-font-weight: $global-weight-normal !default; + +/// Font style (e.g. italicized) of headers. +/// @type String +$header-font-style: normal !default; + +/// Font stack used for elements that use monospaced type, such as code samples +/// @type String | List +$font-family-monospace: Consolas, 'Liberation Mono', Courier, monospace !default; + +/// Sizes of headings at various screen sizes. Each key is a breakpoint, and each value is a map of heading sizes. +/// @type Map +$header-sizes: ( + small: ( + 'h1': 24, + 'h2': 20, + 'h3': 19, + 'h4': 18, + 'h5': 17, + 'h6': 16, + ), + medium: ( + 'h1': 48, + 'h2': 40, + 'h3': 31, + 'h4': 25, + 'h5': 20, + 'h6': 16, + ), +) !default; + +/// Color of headers. +/// @type Color +$header-color: inherit !default; + +/// Line height of headers. +/// @type Number +$header-lineheight: 1.4 !default; + +/// Bottom margin of headers. +/// @type Number +$header-margin-bottom: 0.5rem !default; + +/// Text rendering method of headers. +/// @type String +$header-text-rendering: optimizeLegibility !default; + +/// Font size of `<small>` elements. +/// @type Number +$small-font-size: 80% !default; + +/// Color of `<small>` elements when placed inside headers. +/// @type Color +$header-small-font-color: $medium-gray !default; + +/// Line height of text inside `<p>` elements. +/// @type Number +$paragraph-lineheight: 1.6 !default; + +/// Bottom margin of paragraphs. +/// @type Number +$paragraph-margin-bottom: 1rem !default; + +/// Text rendering method for paragraph text. +/// @type String +$paragraph-text-rendering: optimizeLegibility !default; + +/// Text color of code samples. +/// @type Color +$code-color: $black !default; + +/// Font family of code samples. +/// @type String | List +$code-font-family: $font-family-monospace !default; + +/// Font weight of text in code samples. +/// @type String +$code-font-weight: $global-weight-normal !default; + +/// Background color of code samples. +/// @type Color +$code-background: $light-gray !default; + +/// Border around code samples. +/// @type List +$code-border: 1px solid $medium-gray !default; + +/// Padding around text of code samples. +/// @type Number | List +$code-padding: rem-calc(2 5 1) !default; + +/// Default color for links. +/// @type Color +$anchor-color: $primary-color !default; + +/// Default color for links on hover. +/// @type Color +$anchor-color-hover: scale-color($anchor-color, $lightness: -14%) !default; + +/// Default text deocration for links. +/// @type String +$anchor-text-decoration: none !default; + +/// Default text decoration for links on hover. +/// @type String +$anchor-text-decoration-hover: none !default; + +/// Maximum width of a divider. +/// @type Number +$hr-width: $global-width !default; + +/// Default border for a divider. +/// @type List +$hr-border: 1px solid $medium-gray !default; + +/// Default margin for a divider. +/// @type Number | List +$hr-margin: rem-calc(20) auto !default; + +/// Line height for items in a list. +/// @type Number +$list-lineheight: $paragraph-lineheight !default; + +/// Bottom margin for items in a list. +/// @type Number +$list-margin-bottom: $paragraph-margin-bottom !default; + +/// Bullet type to use for unordered lists (e.g., `square`, `circle`, `disc`). +/// @type String +$list-style-type: disc !default; + +/// Positioning for bullets on unordered list items. +/// @type String +$list-style-position: outside !default; + +/// Left (or right) margin for lists. +/// @type Number +$list-side-margin: 1.25rem !default; + +/// Left (or right) margin for a list inside a list. +/// @type Number +$list-nested-side-margin: 1.25rem !default; + +/// Bottom margin for `<dl>` elements. +/// @type Number +$defnlist-margin-bottom: 1rem !default; + +/// Font weight for `<dt>` elements. +/// @type String +$defnlist-term-weight: $global-weight-bold !default; + +/// Spacing between `<dt>` and `<dd>` elements. +/// @type Number +$defnlist-term-margin-bottom: 0.3rem !default; + +/// Text color of `<blockquote>` elements. +/// @type Color +$blockquote-color: $dark-gray !default; + +/// Padding inside a `<blockquote>` element. +/// @type Number | List +$blockquote-padding: rem-calc(9 20 0 19) !default; + +/// Side border for `<blockquote>` elements. +/// @type List +$blockquote-border: 1px solid $medium-gray !default; + +/// Font size for `<cite>` elements. +/// @type Number +$cite-font-size: rem-calc(13) !default; + +/// Text color for `<cite>` elements. +/// @type Color +$cite-color: $dark-gray !default; + +/// Font family for `<kbd>` elements. +/// @type String | List +$keystroke-font: $font-family-monospace !default; + +/// Text color for `<kbd>` elements. +/// @type Color +$keystroke-color: $black !default; + +/// Background color for `<kbd>` elements. +/// @type Color +$keystroke-background: $light-gray !default; + +/// Padding for `<kbd>` elements. +/// @type Number | List +$keystroke-padding: rem-calc(2 4 0) !default; + +/// Border radius for `<kbd>` elements. +/// @type Number | List +$keystroke-radius: $global-radius !default; + +/// Bottom border style for `<abbr>` elements. +/// @type List +$abbr-underline: 1px dotted $black !default; + +@mixin foundation-typography-base { + // Typography resets + div, + dl, + dt, + dd, + ul, + ol, + li, + h1, + h2, + h3, + h4, + h5, + h6, + pre, + form, + p, + blockquote, + th, + td { + margin: 0; + padding: 0; + } + + // Paragraphs + p { + font-size: inherit; + line-height: $paragraph-lineheight; + margin-bottom: $paragraph-margin-bottom; + text-rendering: $paragraph-text-rendering; + } + + // Emphasized text + em, + i { + font-style: italic; + line-height: inherit; + } + + // Strong text + strong, + b { + font-weight: $global-weight-bold; + line-height: inherit; + } + + // Small text + small { + font-size: $small-font-size; + line-height: inherit; + } + + // Headings + h1, + h2, + h3, + h4, + h5, + h6 { + font-family: $header-font-family; + font-weight: $header-font-weight; + font-style: $header-font-style; + color: $header-color; + text-rendering: $header-text-rendering; + margin-top: 0; + margin-bottom: $header-margin-bottom; + line-height: $header-lineheight; + + small { + color: $header-small-font-color; + line-height: 0; + } + } + + // Heading sizes + @each $size, $headers in $header-sizes { + @include breakpoint($size) { + @each $header, $font-size in $headers { + #{$header} { + font-size: rem-calc($font-size); + } + } + } + } + + // Links + a { + color: $anchor-color; + text-decoration: $anchor-text-decoration; + line-height: inherit; + cursor: pointer; + + &:hover, + &:focus { + color: $anchor-color-hover; + @if $anchor-text-decoration-hover != $anchor-text-decoration { + text-decoration: $anchor-text-decoration-hover; + } + } + + img { + border: 0; + } + } + + // Horizontal rule + hr { + max-width: $hr-width; + height: 0; + border-right: 0; + border-top: 0; + border-bottom: $hr-border; + border-left: 0; + margin: $hr-margin; + clear: both; + } + + // Lists + ul, + ol, + dl { + line-height: $list-lineheight; + margin-bottom: $list-margin-bottom; + list-style-position: $list-style-position; + } + + // List items + li { + font-size: inherit; + } + + // Unordered lists + ul { + list-style-type: $list-style-type; + margin-#{$global-left}: $list-side-margin; + } + + // Ordered lists + ol { + margin-#{$global-left}: $list-side-margin; + } + + // Nested unordered/ordered lists + ul, ol { + & & { + margin-#{$global-left}: $list-nested-side-margin; + margin-bottom: 0; + } + } + + // Definition lists + dl { + margin-bottom: $defnlist-margin-bottom; + + dt { + margin-bottom: $defnlist-term-margin-bottom; + font-weight: $defnlist-term-weight; + } + } + + // Blockquotes + blockquote { + margin: 0 0 $paragraph-margin-bottom; + padding: $blockquote-padding; + border-#{$global-left}: $blockquote-border; + + &, p { + line-height: $paragraph-lineheight; + color: $blockquote-color; + } + } + + // Citations + cite { + display: block; + font-size: $cite-font-size; + color: $cite-color; + + &:before { + content: '\2014 \0020'; + } + } + + // Abbreviations + abbr { + color: $body-font-color; + cursor: help; + border-bottom: $abbr-underline; + } + + // Code + code { + font-family: $code-font-family; + font-weight: $code-font-weight; + color: $code-color; + background-color: $code-background; + border: $code-border; + padding: $code-padding; + } + + // Keystrokes + kbd { + padding: $keystroke-padding; + margin: 0; + background-color: $keystroke-background; + color: $keystroke-color; + font-family: $keystroke-font; + + @if has-value($keystroke-radius) { + border-radius: $keystroke-radius; + } + } +} diff --git a/libraries/foundation-6/scss/typography/_helpers.scss b/libraries/foundation-6/scss/typography/_helpers.scss new file mode 100755 index 00000000..1e753aeb --- /dev/null +++ b/libraries/foundation-6/scss/typography/_helpers.scss @@ -0,0 +1,77 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group typography-helpers +//// + +/// Default font size for lead paragraphs. +/// @type Number +$lead-font-size: $global-font-size * 1.25 !default; + +/// Default line height for lead paragraphs. +/// @type String +$lead-lineheight: 1.6 !default; + +/// Default line height for subheaders. +/// @type Number +$subheader-lineheight: 1.4 !default; + +/// Default font color for subheaders. +/// @type Color +$subheader-color: $dark-gray !default; + +/// Default font weight for subheaders. +/// @type String +$subheader-font-weight: $global-weight-normal !default; + +/// Default top margin for subhheaders. +/// @type Number +$subheader-margin-top: 0.2rem !default; + +/// Default bottom margin for subheaders. +/// @type Number +$subheader-margin-bottom: 0.5rem !default; + +/// Default font size for statistic numbers. +/// @type Number +$stat-font-size: 2.5rem !default; + +@mixin foundation-typography-helpers { + // Use to create a subheading under a main header + // Make sure you pair the two elements in a <header> element, like this: + // <header> + // <h1>Heading</h1> + // <h2>Subheading</h2> + // </header> + .subheader { + margin-top: $subheader-margin-top; + margin-bottom: $subheader-margin-bottom; + font-weight: $subheader-font-weight; + line-height: $subheader-lineheight; + color: $subheader-color; + } + + // Use to style an introductory lead, deck, blurb, etc. + .lead { + font-size: $lead-font-size; + line-height: $lead-lineheight; + } + + // Use to style a large number to display a statistic + .stat { + font-size: $stat-font-size; + line-height: 1; + + p + & { + margin-top: -1rem; + } + } + + // Use to remove the bullets from an unordered list + .no-bullet { + margin-#{$global-left}: 0; + list-style: none; + } +} diff --git a/libraries/foundation-6/scss/typography/_print.scss b/libraries/foundation-6/scss/typography/_print.scss new file mode 100755 index 00000000..348aad9c --- /dev/null +++ b/libraries/foundation-6/scss/typography/_print.scss @@ -0,0 +1,77 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +/// If `true`, all elements will have transparent backgrounds when printed, to save on ink. +/// @type Boolean +/// @group global +$print-transparent-backgrounds: true !default; + +// scss-lint:disable all + +@mixin foundation-print-styles { + .show-for-print { display: none !important; } + + @media print { + * { + @if $print-transparent-backgrounds { + background: transparent !important; + } + + color: black !important; // Black prints faster: h5bp.com/s + box-shadow: none !important; + text-shadow: none !important; + } + + .show-for-print { display: block !important; } + .hide-for-print { display: none !important; } + + table.show-for-print { display: table !important; } + thead.show-for-print { display: table-header-group !important; } + tbody.show-for-print { display: table-row-group !important; } + tr.show-for-print { display: table-row !important; } + td.show-for-print { display: table-cell !important; } + th.show-for-print { display: table-cell !important; } + + // Display the URL of a link after the text + a, + a:visited { text-decoration: underline;} + a[href]:after { content: ' (' attr(href) ')'; } + + // Don't display the URL for images or JavaScript/internal links + .ir a:after, + a[href^='javascript:']:after, + a[href^='#']:after { content: ''; } + + // Display what an abbreviation stands for after the text + abbr[title]:after { content: ' (' attr(title) ')'; } + + // Prevent page breaks in the middle of a blockquote or preformatted text block + pre, + blockquote { + border: 1px solid $dark-gray; + page-break-inside: avoid; + } + + // h5bp.com/t + thead { display: table-header-group; } + + tr, + img { page-break-inside: avoid; } + + img { max-width: 100% !important; } + + @page { margin: 0.5cm; } + + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + + // Avoid page breaks after a heading + h2, + h3 { page-break-after: avoid; } + } +} diff --git a/libraries/foundation-6/scss/typography/_typography.scss b/libraries/foundation-6/scss/typography/_typography.scss new file mode 100755 index 00000000..d17c16ab --- /dev/null +++ b/libraries/foundation-6/scss/typography/_typography.scss @@ -0,0 +1,28 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group typography +//// + +// scss-lint:disable DeclarationOrder + +// Base typography styles (tags only) +@import 'base'; + +// Typography helper classes (classes only) +@import 'helpers'; + +// Text alignment classes +@import 'alignment'; + +// Print styles +@import 'print'; + +@mixin foundation-typography { + @include foundation-typography-base; + @include foundation-typography-helpers; + @include foundation-text-alignment; + @include foundation-print-styles; +} diff --git a/libraries/foundation-6/scss/util/_breakpoint.scss b/libraries/foundation-6/scss/util/_breakpoint.scss new file mode 100755 index 00000000..15707b99 --- /dev/null +++ b/libraries/foundation-6/scss/util/_breakpoint.scss @@ -0,0 +1,275 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group breakpoints +//// + +// scss-lint:disable ZeroUnit + +/// A list of named breakpoints. You can use these with the `breakpoint()` mixin to quickly create media queries. +/// @type Map +$breakpoints: ( + small: 0, + medium: 640px, + large: 1024px, + xlarge: 1200px, + xxlarge: 1440px, +) !default; + +$-zf-zero-breakpoint: small !default; + +@if nth(map-values($breakpoints), 1) != 0 { + @error 'Your smallest breakpoint (defined in $breakpoints) must be set to "0".'; +} +@else { + $-zf-zero-breakpoint: nth(map-keys($breakpoints), 1); +} + +/// All of the names in this list will be output as classes in your CSS, like `.small-12`, `.medium-6`, and so on. Each value in this list must also be in the `$breakpoints` map. +/// @type List +$breakpoint-classes: (small medium large) !default; + +/// Generates a media query string matching the input value. Refer to the documentation for the `breakpoint()` mixin to see what the possible inputs are. +/// +/// @param {Keyword|Number} $val [small] - Breakpoint name, or px, rem, or em value to process. +@function breakpoint($val: $-zf-zero-breakpoint) { + // Size or keyword + $bp: nth($val, 1); + // Value for max-width media queries + $bp-max: 0; + // Direction of media query (up, down, or only) + $dir: if(length($val) > 1, nth($val, 2), up); + // Eventual output + $str: ''; + // Is it a named media query? + $named: false; + + // Orientation media queries have a unique syntax + @if $bp == 'landscape' or $bp == 'portrait' { + @return '(orientation: #{$bp})'; + } + @else if $bp == 'retina' { + @return '(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)'; + } + + // Try to pull a named breakpoint out of the $breakpoints map + @if type-of($bp) == 'string' { + @if map-has-key($breakpoints, $bp) { + @if $dir == 'only' or $dir == 'down' { + $bp-max: -zf-map-next($breakpoints, $bp); + } + + $bp: map-get($breakpoints, $bp); + $named: true; + } + @else { + $bp: 0; + @warn 'breakpoint(): "#{$val}" is not defined in your $breakpoints setting.'; + } + } + + // Convert any pixel, rem, or unitless value to em + $bp: -zf-bp-to-em($bp); + @if $bp-max { + $bp-max: -zf-bp-to-em($bp-max) - (1/16); + } + + // Conditions to skip media query creation + // - It's a named breakpoint that resolved to "0 down" or "0 up" + // - It's a numeric breakpoint that resolved to "0 " + anything + @if $bp > 0em or $dir == 'only' or $dir == 'down' { + // `only` ranges use the format `(min-width: n) and (max-width: n)` + @if $dir == 'only' { + // Only named media queries can have an "only" range + @if $named == true { + // Only use "min-width" if the floor is greater than 0 + @if $bp > 0em { + $str: $str + '(min-width: #{$bp})'; + + // Only add "and" to the media query if there's a ceiling + @if $bp-max != null { + $str: $str + ' and '; + } + } + + // Only use "max-width" if there's a ceiling + @if $bp-max != null { + $str: $str + '(max-width: #{$bp-max})'; + } + } + @else { + @warn 'breakpoint(): Only named media queries can have an `only` range.'; + } + } + + // `down` ranges use the format `(max-width: n)` + @else if $dir == 'down' { + $max: if($named, $bp-max, $bp); + + // Skip media query creation if input value is exactly "0 down", + // unless the function was called as "small down", in which case it's just "small only" + @if $named or $bp > 0em { + @if $max != null { + $str: $str + '(max-width: #{$max})'; + } + } + } + + // `up` ranges use the format `(min-width: n)` + @else if $bp > 0em { + $str: $str + '(min-width: #{$bp})'; + } + } + + @return $str; +} + +/// Wraps a media query around the content you put inside the mixin. This mixin accepts a number of values: +/// - If a string is passed, the mixin will look for it in the `$breakpoints` map, and use a media query there. +/// - If a pixel value is passed, it will be converted to an em value using `$global-font-size` as the base. +/// - If a rem value is passed, the unit will be changed to em. +/// - If an em value is passed, the value will be used as-is. +/// +/// @param {Keyword|Number} $value - Breakpoint name, or px, rem, or em value to process. +/// +/// @output If the breakpoint is "0px and larger", outputs the content as-is. Otherwise, outputs the content wrapped in a media query. +@mixin breakpoint($value) { + $str: breakpoint($value); + + // If $str is still an empty string, no media query is needed + @if $str == '' { + @content; + } + + // Otherwise, wrap the content in a media query + @else { + @media screen and #{$str} { + @content; + } + } +} + +/// Convers the breakpoints map to a URL-encoded string, like this: `key1=value1&key2=value2`. The value is then dropped into the CSS for a special `<meta>` tag, which is read by the Foundation JavaScript. This is how we transfer values from Sass to JavaScript, so they can be defined in one place. +/// @access private +/// +/// @param {Map} $map - Map to convert. +/// +/// @returns {String} A string containing the map's contents. +@function -zf-bp-serialize($map) { + $str: ''; + @each $key, $value in $map { + $str: $str + $key + '=' + -zf-bp-to-em($value) + '&'; + } + $str: str-slice($str, 1, -2); + + @return $str; +} + +/// Find the next key in a map. +/// @access private +/// +/// @param {Map} $map - Map to traverse. +/// @param {Mixed} $key - Key to use as a starting point. +/// +/// @returns {Mixed} The value for the key after `$key`, if `$key` was found. If `$key` was not found, or `$key` was the last value in the map, returns `null`. +@function -zf-map-next($map, $key) { + // Store the values of the map as a list, so we can access them with nth + $values: map-values($map); + + // Ghetto for loop + $i: 1; + $found: false; + @each $val in map-keys($map) { + @if $found == false { + @if ($key == $val) { + $found: true; + } + $i: $i + 1; + } + } + + // If the key doesn't exist, or it's the last key in the map, return null + @if $i > length($map) { + @return null; + } + // Otherwise, return the value + @else { + @return nth($values, $i); + } +} + +/// Get a value for a breakpoint from a responsive config map. If the config map has the key `$value`, the exact breakpoint value is returned. If the config map does *not* have the breakpoint, the value matching the next lowest breakpoint in the config map is returned. +/// @access private +/// +/// @param {Map} $map - Input config map. +/// @param {Keyword} $value - Breakpoint name to use. +/// +/// @return {Mixed} The corresponding breakpoint value. +@function -zf-get-bp-val($map, $value) { + // Check if the breakpoint name exists globally + @if not map-has-key($breakpoints, $value) { + @return null; + } + // Check if the breakpoint name exists in the local config map + @else if map-has-key($map, $value) { + // If it does, just return the value + @return map-get($map, $value); + } + // Otherwise, find the next lowest breakpoint and return that value + @else { + $anchor: null; + $found: false; + + @each $key, $val in $breakpoints { + @if not $found { + @if map-has-key($map, $key) { + $anchor: $key; + } + @if $key == $value { + $found: true; + } + } + } + + @return map-get($map, $anchor); + } +} + +// Legacy breakpoint variables +// These will be removed in 6.3 +$small-up: null; +$small-only: null; +$medium-up: null; +$medium-only: null; +$large-up: null; +$large-only: null; +$xlarge-up: null; +$xlarge-only: null; +$xxlarge-up: null; +$xxlarge-only: null; + +@if map-has-key($breakpoints, small) { + $small-up: screen; + $small-only: unquote('screen and #{breakpoint(small only)}'); +} + +@if map-has-key($breakpoints, medium) { + $medium-up: unquote('screen and #{breakpoint(medium)}'); + $medium-only: unquote('screen and #{breakpoint(medium only)}'); +} + +@if map-has-key($breakpoints, large) { + $large-up: unquote('screen and #{breakpoint(large)}'); + $large-only: unquote('screen and #{breakpoint(large only)}'); +} + +@if map-has-key($breakpoints, xlarge) { + $xlarge-up: unquote('screen and #{breakpoint(xlarge)}'); + $xlarge-only: unquote('screen and #{breakpoint(xlarge only)}'); +} + +@if map-has-key($breakpoints, xxlarge) { + $xxlarge-up: unquote('screen and #{breakpoint(xxlarge)}'); +} diff --git a/libraries/foundation-6/scss/util/_color.scss b/libraries/foundation-6/scss/util/_color.scss new file mode 100755 index 00000000..a001de2a --- /dev/null +++ b/libraries/foundation-6/scss/util/_color.scss @@ -0,0 +1,60 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group functions +//// + +/// Checks the lightness of `$color`, and if it passes the `$threshold` of lightness, it returns the `$yes` color. Otherwise, it returns the `$no` color. Use this function to dynamically output a foreground color based on a given background color. +/// +/// @param {Color} $color - Color to check the lightness of. +/// @param {Color} $yes [$black] - Color to return if `$color` is light. +/// @param {Color} $no [$white] - Color to return if `$color` is dark. +/// @param {Percentage} $threshold [60%] - Threshold of lightness to check against. +/// +/// @returns {Color} The $yes color or $no color. +@function foreground($color, $yes: $black, $no: $white, $threshold: 60%) { + @if $color == transparent { + $color: $body-background; + } + @if (lightness($color) > $threshold) { + @return $yes; + } + @else { + @return $no; + } +} + +/// Scales a color to be lighter if it's light, or darker if it's dark. Use this function to tint a color appropriate to its lightness. +/// +/// @param {Color} $color - Color to scale. +/// @param {Percentage} $scale [5%] - Amount to scale up or down. +/// @param {Percentage} $threshold [40%] - Threshold of lightness to check against. +/// +/// @returns {Color} A scaled color. +@function smart-scale($color, $scale: 5%, $threshold: 40%) { + @if lightness($color) > $threshold { + $scale: -$scale; + } + @return scale-color($color, $lightness: $scale); +} + +/// Transfers the colors in the `$foundation-palette` variable into the legacy color variables, such as `$primary-color` and `$secondary-color`. Call this mixin below the Global section of your settings file to properly migrate your codebase. +@mixin add-foundation-colors() { + @if map-has-key($foundation-palette, primary) { + $primary-color: map-get($foundation-palette, primary) !global; + } + @if map-has-key($foundation-palette, secondary) { + $secondary-color: map-get($foundation-palette, secondary) !global; + } + @if map-has-key($foundation-palette, success) { + $success-color: map-get($foundation-palette, success) !global; + } + @if map-has-key($foundation-palette, warning) { + $warning-color: map-get($foundation-palette, warning) !global; + } + @if map-has-key($foundation-palette, alert) { + $alert-color: map-get($foundation-palette, alert) !global; + } +} diff --git a/libraries/foundation-6/scss/util/_flex.scss b/libraries/foundation-6/scss/util/_flex.scss new file mode 100755 index 00000000..cf7d3455 --- /dev/null +++ b/libraries/foundation-6/scss/util/_flex.scss @@ -0,0 +1,68 @@ +$-zf-flex-justify: ( + 'left': flex-start, + 'right': flex-end, + 'center': center, + 'justify': space-between, + 'spaced': space-around, +); + +$-zf-flex-align: ( + 'top': flex-start, + 'bottom': flex-end, + 'middle': center, + 'stretch': stretch, +); + +/// Enables flexbox by adding `display: flex` to the element. +@mixin flex { + display: flex; +} + +/// Horizontally or vertically aligns the items within a flex container. +/// +/// @param {Keyword} $x [null] - Horizontal alignment to use. Can be `left`, `right`, `center`, `justify`, or `spaced`. Or, set it to `null` (the default) to not set horizontal alignment. +/// @param {Keyword} $y [null] - Vertical alignment to use. Can be `top`, `bottom`, `middle`, or `stretch`. Or, set it to `null` (the default) to not set vertical alignment. +@mixin flex-align($x: null, $y: null) { + @if $x { + @if map-has-key($-zf-flex-justify, $x) { + $x: map-get($-zf-flex-justify, $x); + } + @else { + @warn 'flex-grid-row-align(): #{$x} is not a valid value for horizontal alignment. Use left, right, center, justify, or spaced.' + } + } + + @if $y { + @if map-has-key($-zf-flex-align, $y) { + $y: map-get($-zf-flex-align, $y); + } + @else { + @warn 'flex-grid-row-align(): #{$y} is not a valid value for vertical alignment. Use top, bottom, middle, or stretch.' + } + } + + justify-content: $x; + align-items: $y; +} + +/// Vertically align a single column within a flex row. Apply this mixin to a flex column. +/// +/// @param {Keyword} $y [null] - Vertical alignment to use. Can be `top`, `bottom`, `middle`, or `stretch`. Or, set it to `null` (the default) to not set vertical alignment. +@mixin flex-align-self($y: null) { + @if $y { + @if map-has-key($-zf-flex-align, $y) { + $y: map-get($-zf-flex-align, $y); + } + @else { + @warn 'flex-grid-column-align(): #{$y} is not a valid value for alignment. Use top, bottom, middle, or stretch.' + } + } + + align-self: $y; +} + +/// Changes the source order of a flex child. Children with lower numbers appear first in the layout. +/// @param {Number} $order [0] - Order number to apply. +@mixin flex-order($order: 0) { + order: $order; +} diff --git a/libraries/foundation-6/scss/util/_mixins.scss b/libraries/foundation-6/scss/util/_mixins.scss new file mode 100755 index 00000000..129e0db5 --- /dev/null +++ b/libraries/foundation-6/scss/util/_mixins.scss @@ -0,0 +1,235 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group functions +//// + +/// Creates a CSS triangle, which can be used for dropdown arrows, dropdown pips, and more. Use this mixin inside a `&::before` or `&::after` selector, to attach the triangle to an existing element. +/// +/// @param {Number} $triangle-size - Width of the triangle. +/// @param {Color} $triangle-color - Color of the triangle. +/// @param {Keyword} $triangle-direction - Direction the triangle points. Can be `up`, `right`, `down`, or `left`. +@mixin css-triangle( + $triangle-size, + $triangle-color, + $triangle-direction +) { + content: ''; + display: block; + width: 0; + height: 0; + border: inset $triangle-size; + + @if ($triangle-direction == down) { + border-color: $triangle-color transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + } + @if ($triangle-direction == up) { + border-color: transparent transparent $triangle-color; + border-bottom-style: solid; + border-top-width: 0; + } + @if ($triangle-direction == right) { + border-color: transparent transparent transparent $triangle-color; + border-left-style: solid; + border-right-width: 0; + } + @if ($triangle-direction == left) { + border-color: transparent $triangle-color transparent transparent; + border-right-style: solid; + border-left-width: 0; + } +} + +/// Creates a menu icon with a set width, height, number of bars, and colors. The mixin uses the height of the icon and the weight of the bars to determine spacing. <div class="docs-example-burger"></div> +/// +/// @param {Color} $color [$black] - Color to use for the icon. +/// @param {Color} $color-hover [$dark-gray] - Color to use when the icon is hovered over. +/// @param {Number} $width [20px] - Width of the icon. +/// @param {Number} $height [16px] - Height of the icon. +/// @param {Number} $weight [2px] - Height of individual bars in the icon. +/// @param {Number} $bars [3] - Number of bars in the icon. +@mixin hamburger( + $color: $black, + $color-hover: $dark-gray, + $width: 20px, + $height: 16px, + $weight: 2px, + $bars: 3 +) { + // box-shadow CSS output + $shadow: (); + $hover-shadow: (); + + // Spacing between bars is calculated based on the total height of the icon and the weight of each bar + $spacing: floor(($height - ($weight * $bars)) / ($bars - 1)); + + // Icon container + position: relative; + display: inline-block; + vertical-align: middle; + cursor: pointer; + width: $width; + height: $height; + + // Icon bars + &::after { + content: ''; + position: absolute; + display: block; + width: 100%; + height: $weight; + background: $color; + top: 0; + left: 0; + + @for $i from 2 through $bars { + $offset: ($weight + $spacing) * ($i - 1); + $shadow: append($shadow, 0 $offset 0 $color, comma); + } + + box-shadow: $shadow; + } + + // Hover state + @if $color-hover { + // Generate CSS + @for $i from 2 through $bars { + $offset: ($weight + $spacing) * ($i - 1); + $hover-shadow: append($hover-shadow, 0 $offset 0 $color-hover, comma); + } + + &:hover::after { + background: $color-hover; + box-shadow: $hover-shadow; + } + } +} + +/// Adds a downward-facing triangle as a background image to an element. The image is formatted as an SVG, making it easy to change the color. Because Internet Explorer doesn't support encoded SVGs as background images, a PNG fallback is also included. +/// There are two PNG fallbacks: a black triangle and a white triangle. The one used depends on the lightness of the input color. +/// +/// @param {Color} $color [$black] - Color to use for the triangle. +@mixin background-triangle($color: $black) { + $rgb: 'rgb%28#{red($color)}, #{green($color)}, #{blue($color)}%29'; + + background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: #{$rgb}'></polygon></svg>"); + + @media screen and (min-width:0\0) { + @if lightness($color) < 60% { + // White triangle + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=='); + } + @else { + // Black triangle + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMBJREFUeNrEllsOhCAMRVszC9IlzU7KCmVHTJsoMWYMUtpyv9BgbuXQB5ZSdgBYYY4ycgBivk8KYFsQMfMiTTBP4o3nUzCKzOabLJbLy2/g31evGkAginR4/ZegKH5qX3bJCscA3t0x3kgO5tQFyhhFf50xRqFLbyMUNJQzgyjGS/wgCpvKqkRBpuWrE4V9d+1E4dPUXqIg107SQOE/2DRQxMwTDygIInVDET9T3lCoj/6j/VCmGjZOl2lKpZ8AAwDQP7zIimDGFQAAAABJRU5ErkJggg=='); + } + } +} + +/// Applies the micro clearfix hack popularized by Nicolas Gallagher. Include this mixin on a container if its children are all floated, to give the container a proper height. +/// The clearfix is augmented with specific styles to prevent borders in flexbox environments +/// @link http://nicolasgallagher.com/micro-clearfix-hack/ Micro Clearfix Hack +/// @link http://danisadesigner.com/blog/flexbox-clear-fix-pseudo-elements/ Flexbox fix +@mixin clearfix { + &::before, + &::after { + content: ' '; + display: table; + @if $global-flexbox { + flex-basis: 0; + order: 1; + } + } + + &::after { + clear: both; + } +} + +/// Adds CSS for a "quantity query" selector that automatically sizes elements based on how many there are inside a container. +/// @link http://alistapart.com/article/quantity-queries-for-css Quantity Queries for CSS +/// +/// @param {Number} $max - Maximum number of items to detect. The higher this number is, the more CSS that's required to cover each number of items. +/// @param {Keyword} $elem [li] - Tag to use for sibling selectors. +@mixin auto-width($max, $elem: li) { + @for $i from 2 through $max { + &:nth-last-child(#{$i}):first-child, + &:nth-last-child(#{$i}):first-child ~ #{$elem} { + width: percentage(1 / $i); + } + } +} + +/// Removes the focus ring around an element when a mouse input is detected. +@mixin disable-mouse-outline { + [data-whatinput='mouse'] & { + outline: 0; + } +} + +/// Makes an element visually hidden, but still accessible to keyboards and assistive devices. +/// @link http://snook.ca/archives/html_and_css/hiding-content-for-accessibility Hiding Content for Accessibility +@mixin element-invisible { + position: absolute !important; + width: 1px; + height: 1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); +} + +/// Reverses the CSS output created by the `element-invisible()` mixin. +@mixin element-invisible-off { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; +} + +/// Vertically centers the element inside of its first non-static parent, +/// @link http://www.sitepoint.com/centering-with-sass/ Centering With Sass +@mixin vertical-center { + position: absolute; + top: 50%; + transform: translateY(-50%); +} + +/// Horizontally centers the element inside of its first non-static parent, +/// @link http://www.sitepoint.com/centering-with-sass/ Centering With Sass +@mixin horizontal-center { + position: absolute; + left: 50%; + transform: translateX(-50%); +} + +/// Absolutely centers the element inside of its first non-static parent, +/// @link http://www.sitepoint.com/centering-with-sass/ Centering With Sass +@mixin absolute-center { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +/// Iterates through breakpoints defined in `$breakpoint-classes` and prints the CSS inside the mixin at each breakpoint's media query. Use this with the grid, or any other component that has responsive classes. +/// +/// @param {Boolean} $small [true] - If `false`, the mixin will skip the `small` breakpoint. Use this with components that don't prefix classes with `small-`, only `medium-` and up. +@mixin -zf-each-breakpoint($small: true) { + $map: $breakpoint-classes; + + @if not $small { + $map: map-remove($map, $-zf-zero-breakpoint); + } + + @each $size in $map { + $-zf-size: $size !global; + + @include breakpoint($size) { + @content; + } + } +} diff --git a/libraries/foundation-6/scss/util/_selector.scss b/libraries/foundation-6/scss/util/_selector.scss new file mode 100755 index 00000000..65b00b4f --- /dev/null +++ b/libraries/foundation-6/scss/util/_selector.scss @@ -0,0 +1,40 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group functions +//// + +/// Generates a selector with every text input type. You can also filter the list to only output a subset of those selectors. +/// +/// @param {List|Keyword} $types [()] - A list of text input types to use. Leave blank to use all of them. +@function text-inputs($types: ()) { + $return: (); + + $all-types: + text + password + date + datetime + datetime-local + month + week + email + number + search + tel + time + url + color; + + @if not has-value($types) { + $types: $all-types; + } + + @each $type in $types { + $return: append($return, unquote('[type=\'#{$type}\']'), comma); + } + + @return $return; +} diff --git a/libraries/foundation-6/scss/util/_unit.scss b/libraries/foundation-6/scss/util/_unit.scss new file mode 100755 index 00000000..bb96c98c --- /dev/null +++ b/libraries/foundation-6/scss/util/_unit.scss @@ -0,0 +1,90 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group functions +//// + +$global-font-size: 100% !default; + +// scss-lint:disable ZeroUnit + +/// Removes the unit (e.g. px, em, rem) from a value, returning the number only. +/// +/// @param {Number} $num - Number to strip unit from. +/// +/// @returns {Number} The same number, sans unit. +@function strip-unit($num) { + @return $num / ($num * 0 + 1); +} + +/// Converts one or more pixel values into matching rem values. +/// +/// @param {Number|List} $values - One or more values to convert. Be sure to separate them with spaces and not commas. If you need to convert a comma-separated list, wrap the list in parentheses. +/// @param {Number} $base [null] - The base value to use when calculating the `rem`. If you're using Foundation out of the box, this is 16px. If this parameter is `null`, the function will reference the `$base-font-size` variable as the base. +/// +/// @returns {List} A list of converted values. +@function rem-calc($values, $base: null) { + $rem-values: (); + $count: length($values); + + // If no base is defined, defer to the global font size + @if $base == null { + $base: $global-font-size; + } + + // If the base font size is a %, then multiply it by 16px + // This is because 100% font size = 16px in most all browsers + @if unit($base) == '%' { + $base: ($base / 100%) * 16px; + } + + @if $count == 1 { + @return -zf-to-rem($values, $base); + } + + @for $i from 1 through $count { + $rem-values: append($rem-values, -zf-to-rem(nth($values, $i), $base)); + } + + @return $rem-values; +} + +// Converts a unitless, pixel, or rem value to em, for use in breakpoints. +@function -zf-bp-to-em($value) { + // Pixel and unitless values are converted to rems + @if unit($value) == 'px' or unitless($value) { + $value: rem-calc($value, $base: 16px); + } + + // Then the value is converted to ems + @return strip-unit($value) * 1em; +} + +/// Converts a pixel value to matching rem value. *Any* value passed, regardless of unit, is assumed to be a pixel value. By default, the base pixel value used to calculate the rem value is taken from the `$global-font-size` variable. +/// @access private +/// +/// @param {Number} $value - Pixel value to convert. +/// @param {Number} $base [null] - Base for pixel conversion. +/// +/// @returns {Number} A number in rems, calculated based on the given value and the base pixel value. rem values are passed through as is. +@function -zf-to-rem($value, $base: null) { + // Check if the value is a number + @if type-of($value) != 'number' { + @warn inspect($value) + ' was passed to rem-calc(), which is not a number.'; + @return $value; + } + + // Calculate rem if units for $value is not rem + @if unit($value) != 'rem' { + $value: strip-unit($value) / strip-unit($base) * 1rem; + } + + // Turn 0rem into 0 + @if $value == 0rem { + $value: 0; + } + + @return $value; +} diff --git a/libraries/foundation-6/scss/util/_util.scss b/libraries/foundation-6/scss/util/_util.scss new file mode 100755 index 00000000..c38b4254 --- /dev/null +++ b/libraries/foundation-6/scss/util/_util.scss @@ -0,0 +1,11 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +@import 'unit'; +@import 'value'; +@import 'color'; +@import 'selector'; +@import 'flex'; +@import 'breakpoint'; +@import 'mixins'; diff --git a/libraries/foundation-6/scss/util/_value.scss b/libraries/foundation-6/scss/util/_value.scss new file mode 100755 index 00000000..54e562b0 --- /dev/null +++ b/libraries/foundation-6/scss/util/_value.scss @@ -0,0 +1,107 @@ +// Foundation for Sites by ZURB +// foundation.zurb.com +// Licensed under MIT Open Source + +//// +/// @group functions +//// + +/// Determine if a value is not falsey, in CSS terms. Falsey values are `null`, `none`, `0` with any unit, or an empty list. +/// +/// @param {Mixed} $val - Value to check. +/// +/// @returns {Boolean} `true` if `$val` is not falsey. +@function has-value($val) { + @if $val == null or $val == none { + @return false; + } + @if type-of($val) == 'number' and strip-unit($val) == 0 { + @return false; + } + @if type-of($val) == 'list' and length($val) == 0 { + @return false; + } + @return true; +} + +/// Determine a top/right/bottom/right value on a padding, margin, etc. property, no matter how many values were passed in. Use this function if you need to know the specific side of a value, but don't know if the value is using a shorthand format. +/// +/// @param {List|Number} $val - Value to analyze. Should be a shorthand sizing property, e.g. "1em 2em 1em" +/// @param {Keyword} $side - Side to return. Should be `top`, `right`, `bottom`, or `left`. +/// +/// @returns {Number} A single value based on `$val` and `$side`. +@function get-side($val, $side) { + $length: length($val); + + @if $length == 1 { + @return $val; + } + @if $length == 2 { + @return map-get(( + top: nth($val, 1), + bottom: nth($val, 1), + left: nth($val, 2), + right: nth($val, 2), + ), $side); + } + @if $length == 3 { + @return map-get(( + top: nth($val, 1), + left: nth($val, 2), + right: nth($val, 2), + bottom: nth($val, 3), + ), $side); + } + @if $length == 4 { + @return map-get(( + top: nth($val, 1), + right: nth($val, 2), + bottom: nth($val, 3), + left: nth($val, 4), + ), $side); + } +} + +/// Given border $val, find a specific element of the border, which is $elem. The possible values for $elem are width, style, and color. +/// +/// @param {List} $val - Border value to find a value in. +/// @param {Keyword} $elem - Border component to extract. +/// +/// @returns {Mixed} If the value exists, returns the value. If the value is not in the border definition, the function will return a 0px width, solid style, or black border. +@function get-border-value($val, $elem) { + // Find the width, style, or color and return it + @each $v in $val { + $type: type-of($v); + @if $elem == width and $type == 'number' { + @return $v; + } + @if $elem == style and $type == 'string' { + @return $v; + } + @if $elem == color and $type == 'color' { + @return $v; + } + } + + // Defaults + $defaults: ( + width: 0, + style: solid, + color: #000, + ); + + @return map-get($defaults, $elem); +} + +/// Finds a value in a nested map. +/// @link https://css-tricks.com/snippets/sass/deep-getset-maps/ Deep Get/Set in Maps +/// +/// @param {Map} $map - Map to pull a value from. +/// @param {String} $keys... - Keys to use when looking for a value. +/// @returns {Mixed} The value found in the map. +@function map-deep-get($map, $keys...) { + @each $key in $keys { + $map: map-get($map, $key); + } + @return $map; +} diff --git a/libraries/foundation-6/test/javascript/components/abide.js b/libraries/foundation-6/test/javascript/components/abide.js new file mode 100755 index 00000000..b476bfe9 --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/abide.js @@ -0,0 +1,39 @@ +/* jslint mocha: true */ +/*global describe, it, before, beforeEach, after, afterEach, $, Foundation */ + +describe('Abide', function() { + var plugin; + var $html; + + afterEach(function() { + plugin.destroy(); + $html.remove(); + }); + + describe('constructor()', function() { + it('stores the element & plugin options', function() { + $html = $('<form data-abide novalidate></form>').appendTo('body'); + plugin = new Foundation.Abide($html, {}); + + plugin.$element.should.be.an('object'); + plugin.options.should.be.an('object'); + }); + }); + + describe('validateInput()', function() { + it('returns true for hidden inputs', function() { + $html = $("<form data-abide novalidate><input type='hidden' required></form>").appendTo("body"); + plugin = new Foundation.Abide($html, {}); + + plugin.validateInput($html.find("input")).should.equal(true); + }); + + it('returns true for inputs with [data-abide-ignore]', function() { + $html = $("<form data-abide novalidate><input type='text' required data-abide-ignore></form>").appendTo("body"); + plugin = new Foundation.Abide($html, {}); + + plugin.validateInput($html.find("input")).should.equal(true); + }); + }); + +}); diff --git a/libraries/foundation-6/test/javascript/components/accordion.js b/libraries/foundation-6/test/javascript/components/accordion.js new file mode 100755 index 00000000..302031bf --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/accordion.js @@ -0,0 +1,20 @@ +describe('Accordion', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.Accordion($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/accordionMenu.js b/libraries/foundation-6/test/javascript/components/accordionMenu.js new file mode 100755 index 00000000..7a3c8df3 --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/accordionMenu.js @@ -0,0 +1,20 @@ +describe('Accordion Menu', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.AccordionMenu($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/drilldown.js b/libraries/foundation-6/test/javascript/components/drilldown.js new file mode 100755 index 00000000..915dee4b --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/drilldown.js @@ -0,0 +1,20 @@ +describe('Drilldown Menu', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.Drilldown($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/dropdown.js b/libraries/foundation-6/test/javascript/components/dropdown.js new file mode 100755 index 00000000..18c62daa --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/dropdown.js @@ -0,0 +1,20 @@ +describe('Dropdown', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.Dropdown($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/dropdownMenu.js b/libraries/foundation-6/test/javascript/components/dropdownMenu.js new file mode 100755 index 00000000..b8967f38 --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/dropdownMenu.js @@ -0,0 +1,20 @@ +describe('Dropdown Menu', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.DropdownMenu($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/equalizer.js b/libraries/foundation-6/test/javascript/components/equalizer.js new file mode 100755 index 00000000..85508a26 --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/equalizer.js @@ -0,0 +1,20 @@ +describe('Equalizer', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.Equalizer($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/interchange.js b/libraries/foundation-6/test/javascript/components/interchange.js new file mode 100755 index 00000000..945b7465 --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/interchange.js @@ -0,0 +1,20 @@ +describe('Interchange', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.Interchange($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/magellan.js b/libraries/foundation-6/test/javascript/components/magellan.js new file mode 100755 index 00000000..26678f2c --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/magellan.js @@ -0,0 +1,20 @@ +describe('Magellan', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.Magellan($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/offcanvas.js b/libraries/foundation-6/test/javascript/components/offcanvas.js new file mode 100755 index 00000000..3935a140 --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/offcanvas.js @@ -0,0 +1,20 @@ +describe('Off Canvas', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.OffCanvas($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/orbit.js b/libraries/foundation-6/test/javascript/components/orbit.js new file mode 100755 index 00000000..84d0b403 --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/orbit.js @@ -0,0 +1,20 @@ +describe('Orbit', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.Orbit($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/responsiveMenu.js b/libraries/foundation-6/test/javascript/components/responsiveMenu.js new file mode 100755 index 00000000..bdfc4875 --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/responsiveMenu.js @@ -0,0 +1,20 @@ +describe('Responsive Menu', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.ResponsiveMenu($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/responsiveToggle.js b/libraries/foundation-6/test/javascript/components/responsiveToggle.js new file mode 100755 index 00000000..0065c29c --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/responsiveToggle.js @@ -0,0 +1,20 @@ +describe('Responsive Toggle', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.ResponsiveToggle($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/reveal.js b/libraries/foundation-6/test/javascript/components/reveal.js new file mode 100755 index 00000000..01a25ea2 --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/reveal.js @@ -0,0 +1,20 @@ +describe('Reveal', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.Reveal($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/slider.js b/libraries/foundation-6/test/javascript/components/slider.js new file mode 100755 index 00000000..41987331 --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/slider.js @@ -0,0 +1,20 @@ +describe('Slider', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.Slider($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/sticky.js b/libraries/foundation-6/test/javascript/components/sticky.js new file mode 100755 index 00000000..b332c75a --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/sticky.js @@ -0,0 +1,20 @@ +describe('Sticky', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.Sticky($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/tabs.js b/libraries/foundation-6/test/javascript/components/tabs.js new file mode 100755 index 00000000..0dab0cee --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/tabs.js @@ -0,0 +1,20 @@ +describe('Tabs', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.Tabs($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/components/toggler.js b/libraries/foundation-6/test/javascript/components/toggler.js new file mode 100755 index 00000000..12538c17 --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/toggler.js @@ -0,0 +1,135 @@ +describe('Toggler', function() { + var plugin; + var $html; + + afterEach(function() { + plugin.destroy(); + $html.remove(); + }); + + describe('constructor()', function() { + it('stores the element and plugin options', function() { + $html = $('<div id="toggler" data-toggler="class"></div>').appendTo('body'); + plugin = new Foundation.Toggler($html, {}); + + plugin.$element.should.be.an('object'); + plugin.options.should.be.an('object'); + }); + }); + + describe('init()', function() { + it('stores the class defined on the data-toggler attribute', function() { + $html = $('<div id="toggler" data-toggler="class"></div>').appendTo('body'); + plugin = new Foundation.Toggler($html, {}); + + plugin.className.should.equal('class'); + }); + + it('stores the class defined on the data-toggler attribute (with leading dot)', function() { + $html = $('<div id="toggler" data-toggler=".class"></div>').appendTo('body'); + plugin = new Foundation.Toggler($html, {}); + + plugin.className.should.equal('class'); + }); + + it('stores defined animation classes', function() { + $html = $('<div id="toggler" data-toggler data-animate="fade-in fade-out"></div>').appendTo('body'); + plugin = new Foundation.Toggler($html, {}); + + plugin.animationIn.should.equal('fade-in'); + plugin.animationOut.should.equal('fade-out'); + }); + + it('adds Aria attributes to click triggers', function() { + $html = $('<div id="toggler" data-toggler="class"></div>').appendTo('body'); + var $triggers = $(` + <a data-open="toggler">Open</a> + <a data-close="toggler">Close</a> + <a data-toggle="toggler">Toggle</a> + `).appendTo('body'); + plugin = new Foundation.Toggler($html, {}); + + $('[data-open]').should.have.attr('aria-controls', 'toggler'); + $('[data-close]').should.have.attr('aria-controls', 'toggler'); + $('[data-toggle]').should.have.attr('aria-controls', 'toggler'); + + $triggers.remove(); + }); + + it('sets aria-expanded to true if the element is visible', function() { + $html = $('<div id="toggler" data-toggler="class"></div>').appendTo('body'); + plugin = new Foundation.Toggler($html, {}); + + $('#toggler').should.have.attr('aria-expanded', 'true'); + }); + + it('sets aria-expanded to false if the element is invisible', function() { + var $css = $('<style>#toggler { display: none }</style>').appendTo('body'); + $html = $('<div id="toggler" data-toggler="class"></div>').appendTo('body'); + plugin = new Foundation.Toggler($html, {}); + + $('#toggler').should.have.attr('aria-expanded', 'false'); + $css.remove(); + }); + }); + + describe('toggle()', function() { + it('calls Toggler._toggleClass() if the element toggles with a class'); + it('calls Toggler._toggleAnimate() if the element toggles with animation'); + }); + + describe('toggleClass()', function() { + it('toggles a class on the element', function() { + $html = $('<div id="toggler" data-toggler="class"></div>').appendTo('body'); + plugin = new Foundation.Toggler($html, {}); + + plugin._toggleClass(); + $('#toggler').should.have.class('class'); + + plugin._toggleClass(); + $('#toggler').should.not.have.class('class'); + }); + + it('updates aria-expanded after the class is toggled', function() { + $html = $('<div id="toggler" data-toggler="class"></div>').appendTo('body'); + plugin = new Foundation.Toggler($html, {}); + + plugin._toggleClass(); + $('#toggler').should.have.attr('aria-expanded', 'true'); + + plugin._toggleClass(); + $('#toggler').should.have.attr('aria-expanded', 'false'); + }); + }); + + // [TODO] Re-enable this if you can get it working in PhantomJS + xdescribe('toggleAnimate()', function() { + it('animates an invisible element in', function(done) { + var $css = $('<style>#toggler { display: none; }</style>').appendTo('body'); + $html = $('<div id="toggler" data-toggler data-animate="fade-in fade-out"></div>').appendTo('body'); + plugin = new Foundation.Toggler($html, {}); + + $html.on('on.zf.toggler', function() { + $('#toggler').should.be.visible; + $('#toggler').should.have.attr('aria-expanded', 'true'); + $css.remove(); + done(); + }); + + plugin._toggleAnimate(); + }); + + it('animates an visible element out', function(done) { + $html = $('<div id="toggler" data-toggler data-animate="fade-in fade-out"></div>').appendTo('body'); + plugin = new Foundation.Toggler($html, {}); + + $html.on('off.zf.toggler', function() { + $('#toggler').should.be.hidden; + $('#toggler').should.have.attr('aria-expanded', 'false'); + done(); + }); + + plugin._toggleAnimate(); + }); + }); +}); diff --git a/libraries/foundation-6/test/javascript/components/tooltip.js b/libraries/foundation-6/test/javascript/components/tooltip.js new file mode 100755 index 00000000..d680367a --- /dev/null +++ b/libraries/foundation-6/test/javascript/components/tooltip.js @@ -0,0 +1,20 @@ +describe('Tooltip', function() { + var plugin; + var $html; + + // afterEach(function() { + // plugin.destroy(); + // $html.remove(); + // }); + + describe('constructor()', function() { + // it('', function() { + // $html = $('').appendTo('body'); + // plugin = new Foundation.Tooltip($html, {}); + + // plugin.$element.should.be.an('object'); + // plugin.options.should.be.an('object'); + // }); + }); + +}); \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/index.html b/libraries/foundation-6/test/javascript/index.html new file mode 100755 index 00000000..0c6e7fde --- /dev/null +++ b/libraries/foundation-6/test/javascript/index.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> + <head> + <title>Mocha</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <link rel="stylesheet" href="lib/mocha.css" /> + <link rel="stylesheet" href="../../_build/assets/css/foundation.css"> + <link rel="stylesheet" href="../../node_modules/motion-ui/dist/motion-ui.css"> + </head> + <body> + <div id="mocha"></div> + <script src="../../node_modules/jquery/dist/jquery.js"></script> + <script src="../../_build/assets/js/foundation.js"></script> + <script src="lib/mocha.js"></script> + <script src="lib/chai.js"></script> + <script src="lib/chai-jquery.js"></script> + <script src="lib/sinon.js"></script> + <script> + mocha.setup('bdd'); + chai.should(); + </script> + <script src="js-tests.js"></script> + <script> + mocha.run(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/javascript/lib/chai-jquery.js b/libraries/foundation-6/test/javascript/lib/chai-jquery.js new file mode 100755 index 00000000..819a27d6 --- /dev/null +++ b/libraries/foundation-6/test/javascript/lib/chai-jquery.js @@ -0,0 +1,231 @@ +(function (chaiJquery) { + // Module systems magic dance. + if (typeof require === "function" && typeof exports === "object" && typeof module === "object") { + // NodeJS + module.exports = chaiJquery; + } else if (typeof define === "function" && define.amd) { + // AMD + define(['jquery'], function ($) { + return function (chai, utils) { + return chaiJquery(chai, utils, $); + }; + }); + } else { + // Other environment (usually <script> tag): plug in to global chai instance directly. + chai.use(function (chai, utils) { + return chaiJquery(chai, utils, jQuery); + }); + } +}(function (chai, utils, $) { + var inspect = utils.inspect, + flag = utils.flag; + $ = $ || jQuery; + + var setPrototypeOf = '__proto__' in Object ? + function (object, prototype) { + object.__proto__ = prototype; + } : + function (object, prototype) { + var excludeNames = /^(?:length|name|arguments|caller)$/; + + function copyProperties(dst, src) { + Object.getOwnPropertyNames(src).forEach(function (name) { + if (!excludeNames.test(name)) { + Object.defineProperty(dst, name, + Object.getOwnPropertyDescriptor(src, name)); + } + }); + } + + copyProperties(object, prototype); + copyProperties(object, Object.getPrototypeOf(prototype)); + }; + + $.fn.inspect = function (depth) { + var el = $('<div />').append(this.clone()); + if (depth !== undefined) { + var children = el.children(); + while (depth-- > 0) + children = children.children(); + children.html('...'); + } + return el.html(); + }; + + var props = {attr: 'attribute', css: 'CSS property', prop: 'property'}; + for (var prop in props) { + (function (prop, description) { + chai.Assertion.addMethod(prop, function (name, val) { + var actual = flag(this, 'object')[prop](name); + + if (!flag(this, 'negate') || undefined === val) { + this.assert( + undefined !== actual + , 'expected #{this} to have a #{exp} ' + description + , 'expected #{this} not to have a #{exp} ' + description + , name + ); + } + + if (undefined !== val) { + this.assert( + val === actual + , 'expected #{this} to have a ' + inspect(name) + ' ' + description + ' with the value #{exp}, but the value was #{act}' + , 'expected #{this} not to have a ' + inspect(name) + ' ' + description + ' with the value #{act}' + , val + , actual + ); + } + + flag(this, 'object', actual); + }); + })(prop, props[prop]); + } + + chai.Assertion.addMethod('data', function (name, val) { + // Work around a chai bug (https://github.com/logicalparadox/chai/issues/16) + if (flag(this, 'negate') && undefined !== val && undefined === flag(this, 'object').data(name)) { + return; + } + + var assertion = new chai.Assertion(flag(this, 'object').data()); + if (flag(this, 'negate')) + assertion = assertion.not; + return assertion.property(name, val); + }); + + chai.Assertion.addMethod('class', function (className) { + this.assert( + flag(this, 'object').hasClass(className) + , 'expected #{this} to have class #{exp}' + , 'expected #{this} not to have class #{exp}' + , className + ); + }); + + chai.Assertion.addMethod('id', function (id) { + this.assert( + flag(this, 'object').attr('id') === id + , 'expected #{this} to have id #{exp}' + , 'expected #{this} not to have id #{exp}' + , id + ); + }); + + chai.Assertion.addMethod('html', function (html) { + var actual = flag(this, 'object').html(); + this.assert( + actual === html + , 'expected #{this} to have HTML #{exp}, but the HTML was #{act}' + , 'expected #{this} not to have HTML #{exp}' + , html + , actual + ); + }); + + chai.Assertion.addMethod('text', function (text) { + var actual = flag(this, 'object').text(); + this.assert( + actual === text + , 'expected #{this} to have text #{exp}, but the text was #{act}' + , 'expected #{this} not to have text #{exp}' + , text + , actual + ); + }); + + chai.Assertion.addMethod('value', function (value) { + var actual = flag(this, 'object').val(); + this.assert( + flag(this, 'object').val() === value + , 'expected #{this} to have value #{exp}, but the value was #{act}' + , 'expected #{this} not to have value #{exp}' + , value + , actual + ); + }); + + chai.Assertion.addMethod('descendants', function (selector) { + this.assert( + flag(this, 'object').has(selector).length > 0 + , 'expected #{this} to have #{exp}' + , 'expected #{this} not to have #{exp}' + , selector + ); + }); + + $.each(['visible', 'hidden', 'selected', 'checked', 'enabled', 'disabled'], function (i, attr) { + chai.Assertion.addProperty(attr, function () { + this.assert( + flag(this, 'object').is(':' + attr) + , 'expected #{this} to be ' + attr + , 'expected #{this} not to be ' + attr); + }); + }); + + chai.Assertion.overwriteProperty('exist', function (_super) { + return function () { + var obj = flag(this, 'object'); + if (obj instanceof $) { + this.assert( + obj.length > 0 + , 'expected ' + inspect(obj.selector) + ' to exist' + , 'expected ' + inspect(obj.selector) + ' not to exist'); + } else { + _super.apply(this, arguments); + } + }; + }); + + chai.Assertion.overwriteProperty('empty', function (_super) { + return function () { + var obj = flag(this, 'object'); + if (obj instanceof $) { + this.assert( + obj.is(':empty') + , 'expected #{this} to be empty' + , 'expected #{this} not to be empty'); + } else { + _super.apply(this, arguments); + } + }; + }); + + chai.Assertion.overwriteMethod('match', function (_super) { + return function (selector) { + var obj = flag(this, 'object'); + if (obj instanceof $) { + this.assert( + obj.is(selector) + , 'expected #{this} to match #{exp}' + , 'expected #{this} not to match #{exp}' + , selector + ); + } else { + _super.apply(this, arguments); + } + } + }); + + chai.Assertion.overwriteChainableMethod('contain', + function (_super) { + return function (text) { + var obj = flag(this, 'object'); + if (obj instanceof $) { + this.assert( + obj.is(':contains(\'' + text + '\')') + , 'expected #{this} to contain #{exp}' + , 'expected #{this} not to contain #{exp}' + , text); + } else { + _super.apply(this, arguments); + } + } + }, + function(_super) { + return function() { + _super.call(this); + }; + } + ); +})); diff --git a/libraries/foundation-6/test/javascript/lib/chai.js b/libraries/foundation-6/test/javascript/lib/chai.js new file mode 100755 index 00000000..7c901714 --- /dev/null +++ b/libraries/foundation-6/test/javascript/lib/chai.js @@ -0,0 +1,5332 @@ + +;(function(){ + +/** + * Require the module at `name`. + * + * @param {String} name + * @return {Object} exports + * @api public + */ + +function require(name) { + var module = require.modules[name]; + if (!module) throw new Error('failed to require "' + name + '"'); + + if (!('exports' in module) && typeof module.definition === 'function') { + module.client = module.component = true; + module.definition.call(this, module.exports = {}, module); + delete module.definition; + } + + return module.exports; +} + +/** + * Meta info, accessible in the global scope unless you use AMD option. + */ + +require.loader = 'component'; + +/** + * Internal helper object, contains a sorting function for semantiv versioning + */ +require.helper = {}; +require.helper.semVerSort = function(a, b) { + var aArray = a.version.split('.'); + var bArray = b.version.split('.'); + for (var i=0; i<aArray.length; ++i) { + var aInt = parseInt(aArray[i], 10); + var bInt = parseInt(bArray[i], 10); + if (aInt === bInt) { + var aLex = aArray[i].substr((""+aInt).length); + var bLex = bArray[i].substr((""+bInt).length); + if (aLex === '' && bLex !== '') return 1; + if (aLex !== '' && bLex === '') return -1; + if (aLex !== '' && bLex !== '') return aLex > bLex ? 1 : -1; + continue; + } else if (aInt > bInt) { + return 1; + } else { + return -1; + } + } + return 0; +} + +/** + * Find and require a module which name starts with the provided name. + * If multiple modules exists, the highest semver is used. + * This function can only be used for remote dependencies. + + * @param {String} name - module name: `user~repo` + * @param {Boolean} returnPath - returns the canonical require path if true, + * otherwise it returns the epxorted module + */ +require.latest = function (name, returnPath) { + function showError(name) { + throw new Error('failed to find latest module of "' + name + '"'); + } + // only remotes with semvers, ignore local files conataining a '/' + var versionRegexp = /(.*)~(.*)@v?(\d+\.\d+\.\d+[^\/]*)$/; + var remoteRegexp = /(.*)~(.*)/; + if (!remoteRegexp.test(name)) showError(name); + var moduleNames = Object.keys(require.modules); + var semVerCandidates = []; + var otherCandidates = []; // for instance: name of the git branch + for (var i=0; i<moduleNames.length; i++) { + var moduleName = moduleNames[i]; + if (new RegExp(name + '@').test(moduleName)) { + var version = moduleName.substr(name.length+1); + var semVerMatch = versionRegexp.exec(moduleName); + if (semVerMatch != null) { + semVerCandidates.push({version: version, name: moduleName}); + } else { + otherCandidates.push({version: version, name: moduleName}); + } + } + } + if (semVerCandidates.concat(otherCandidates).length === 0) { + showError(name); + } + if (semVerCandidates.length > 0) { + var module = semVerCandidates.sort(require.helper.semVerSort).pop().name; + if (returnPath === true) { + return module; + } + return require(module); + } + // if the build contains more than one branch of the same module + // you should not use this funciton + var module = otherCandidates.sort(function(a, b) {return a.name > b.name})[0].name; + if (returnPath === true) { + return module; + } + return require(module); +} + +/** + * Registered modules. + */ + +require.modules = {}; + +/** + * Register module at `name` with callback `definition`. + * + * @param {String} name + * @param {Function} definition + * @api private + */ + +require.register = function (name, definition) { + require.modules[name] = { + definition: definition + }; +}; + +/** + * Define a module's exports immediately with `exports`. + * + * @param {String} name + * @param {Generic} exports + * @api private + */ + +require.define = function (name, exports) { + require.modules[name] = { + exports: exports + }; +}; +require.register("chaijs~assertion-error@1.0.0", function (exports, module) { +/*! + * assertion-error + * Copyright(c) 2013 Jake Luer <jake@qualiancy.com> + * MIT Licensed + */ + +/*! + * Return a function that will copy properties from + * one object to another excluding any originally + * listed. Returned function will create a new `{}`. + * + * @param {String} excluded properties ... + * @return {Function} + */ + +function exclude () { + var excludes = [].slice.call(arguments); + + function excludeProps (res, obj) { + Object.keys(obj).forEach(function (key) { + if (!~excludes.indexOf(key)) res[key] = obj[key]; + }); + } + + return function extendExclude () { + var args = [].slice.call(arguments) + , i = 0 + , res = {}; + + for (; i < args.length; i++) { + excludeProps(res, args[i]); + } + + return res; + }; +}; + +/*! + * Primary Exports + */ + +module.exports = AssertionError; + +/** + * ### AssertionError + * + * An extension of the JavaScript `Error` constructor for + * assertion and validation scenarios. + * + * @param {String} message + * @param {Object} properties to include (optional) + * @param {callee} start stack function (optional) + */ + +function AssertionError (message, _props, ssf) { + var extend = exclude('name', 'message', 'stack', 'constructor', 'toJSON') + , props = extend(_props || {}); + + // default values + this.message = message || 'Unspecified AssertionError'; + this.showDiff = false; + + // copy from properties + for (var key in props) { + this[key] = props[key]; + } + + // capture stack trace + ssf = ssf || arguments.callee; + if (ssf && Error.captureStackTrace) { + Error.captureStackTrace(this, ssf); + } +} + +/*! + * Inherit from Error.prototype + */ + +AssertionError.prototype = Object.create(Error.prototype); + +/*! + * Statically set name + */ + +AssertionError.prototype.name = 'AssertionError'; + +/*! + * Ensure correct constructor + */ + +AssertionError.prototype.constructor = AssertionError; + +/** + * Allow errors to be converted to JSON for static transfer. + * + * @param {Boolean} include stack (default: `true`) + * @return {Object} object that can be `JSON.stringify` + */ + +AssertionError.prototype.toJSON = function (stack) { + var extend = exclude('constructor', 'toJSON', 'stack') + , props = extend({ name: this.name }, this); + + // include stack if exists and not turned off + if (false !== stack && this.stack) { + props.stack = this.stack; + } + + return props; +}; + +}); + +require.register("chaijs~type-detect@0.1.1", function (exports, module) { +/*! + * type-detect + * Copyright(c) 2013 jake luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/*! + * Primary Exports + */ + +var exports = module.exports = getType; + +/*! + * Detectable javascript natives + */ + +var natives = { + '[object Array]': 'array' + , '[object RegExp]': 'regexp' + , '[object Function]': 'function' + , '[object Arguments]': 'arguments' + , '[object Date]': 'date' +}; + +/** + * ### typeOf (obj) + * + * Use several different techniques to determine + * the type of object being tested. + * + * + * @param {Mixed} object + * @return {String} object type + * @api public + */ + +function getType (obj) { + var str = Object.prototype.toString.call(obj); + if (natives[str]) return natives[str]; + if (obj === null) return 'null'; + if (obj === undefined) return 'undefined'; + if (obj === Object(obj)) return 'object'; + return typeof obj; +} + +exports.Library = Library; + +/** + * ### Library + * + * Create a repository for custom type detection. + * + * ```js + * var lib = new type.Library; + * ``` + * + */ + +function Library () { + this.tests = {}; +} + +/** + * #### .of (obj) + * + * Expose replacement `typeof` detection to the library. + * + * ```js + * if ('string' === lib.of('hello world')) { + * // ... + * } + * ``` + * + * @param {Mixed} object to test + * @return {String} type + */ + +Library.prototype.of = getType; + +/** + * #### .define (type, test) + * + * Add a test to for the `.test()` assertion. + * + * Can be defined as a regular expression: + * + * ```js + * lib.define('int', /^[0-9]+$/); + * ``` + * + * ... or as a function: + * + * ```js + * lib.define('bln', function (obj) { + * if ('boolean' === lib.of(obj)) return true; + * var blns = [ 'yes', 'no', 'true', 'false', 1, 0 ]; + * if ('string' === lib.of(obj)) obj = obj.toLowerCase(); + * return !! ~blns.indexOf(obj); + * }); + * ``` + * + * @param {String} type + * @param {RegExp|Function} test + * @api public + */ + +Library.prototype.define = function (type, test) { + if (arguments.length === 1) return this.tests[type]; + this.tests[type] = test; + return this; +}; + +/** + * #### .test (obj, test) + * + * Assert that an object is of type. Will first + * check natives, and if that does not pass it will + * use the user defined custom tests. + * + * ```js + * assert(lib.test('1', 'int')); + * assert(lib.test('yes', 'bln')); + * ``` + * + * @param {Mixed} object + * @param {String} type + * @return {Boolean} result + * @api public + */ + +Library.prototype.test = function (obj, type) { + if (type === getType(obj)) return true; + var test = this.tests[type]; + + if (test && 'regexp' === getType(test)) { + return test.test(obj); + } else if (test && 'function' === getType(test)) { + return test(obj); + } else { + throw new ReferenceError('Type test "' + type + '" not defined or invalid.'); + } +}; + +}); + +require.register("chaijs~deep-eql@0.1.3", function (exports, module) { +/*! + * deep-eql + * Copyright(c) 2013 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/*! + * Module dependencies + */ + +var type = require('chaijs~type-detect@0.1.1'); + +/*! + * Buffer.isBuffer browser shim + */ + +var Buffer; +try { Buffer = require('buffer').Buffer; } +catch(ex) { + Buffer = {}; + Buffer.isBuffer = function() { return false; } +} + +/*! + * Primary Export + */ + +module.exports = deepEqual; + +/** + * Assert super-strict (egal) equality between + * two objects of any type. + * + * @param {Mixed} a + * @param {Mixed} b + * @param {Array} memoised (optional) + * @return {Boolean} equal match + */ + +function deepEqual(a, b, m) { + if (sameValue(a, b)) { + return true; + } else if ('date' === type(a)) { + return dateEqual(a, b); + } else if ('regexp' === type(a)) { + return regexpEqual(a, b); + } else if (Buffer.isBuffer(a)) { + return bufferEqual(a, b); + } else if ('arguments' === type(a)) { + return argumentsEqual(a, b, m); + } else if (!typeEqual(a, b)) { + return false; + } else if (('object' !== type(a) && 'object' !== type(b)) + && ('array' !== type(a) && 'array' !== type(b))) { + return sameValue(a, b); + } else { + return objectEqual(a, b, m); + } +} + +/*! + * Strict (egal) equality test. Ensures that NaN always + * equals NaN and `-0` does not equal `+0`. + * + * @param {Mixed} a + * @param {Mixed} b + * @return {Boolean} equal match + */ + +function sameValue(a, b) { + if (a === b) return a !== 0 || 1 / a === 1 / b; + return a !== a && b !== b; +} + +/*! + * Compare the types of two given objects and + * return if they are equal. Note that an Array + * has a type of `array` (not `object`) and arguments + * have a type of `arguments` (not `array`/`object`). + * + * @param {Mixed} a + * @param {Mixed} b + * @return {Boolean} result + */ + +function typeEqual(a, b) { + return type(a) === type(b); +} + +/*! + * Compare two Date objects by asserting that + * the time values are equal using `saveValue`. + * + * @param {Date} a + * @param {Date} b + * @return {Boolean} result + */ + +function dateEqual(a, b) { + if ('date' !== type(b)) return false; + return sameValue(a.getTime(), b.getTime()); +} + +/*! + * Compare two regular expressions by converting them + * to string and checking for `sameValue`. + * + * @param {RegExp} a + * @param {RegExp} b + * @return {Boolean} result + */ + +function regexpEqual(a, b) { + if ('regexp' !== type(b)) return false; + return sameValue(a.toString(), b.toString()); +} + +/*! + * Assert deep equality of two `arguments` objects. + * Unfortunately, these must be sliced to arrays + * prior to test to ensure no bad behavior. + * + * @param {Arguments} a + * @param {Arguments} b + * @param {Array} memoize (optional) + * @return {Boolean} result + */ + +function argumentsEqual(a, b, m) { + if ('arguments' !== type(b)) return false; + a = [].slice.call(a); + b = [].slice.call(b); + return deepEqual(a, b, m); +} + +/*! + * Get enumerable properties of a given object. + * + * @param {Object} a + * @return {Array} property names + */ + +function enumerable(a) { + var res = []; + for (var key in a) res.push(key); + return res; +} + +/*! + * Simple equality for flat iterable objects + * such as Arrays or Node.js buffers. + * + * @param {Iterable} a + * @param {Iterable} b + * @return {Boolean} result + */ + +function iterableEqual(a, b) { + if (a.length !== b.length) return false; + + var i = 0; + var match = true; + + for (; i < a.length; i++) { + if (a[i] !== b[i]) { + match = false; + break; + } + } + + return match; +} + +/*! + * Extension to `iterableEqual` specifically + * for Node.js Buffers. + * + * @param {Buffer} a + * @param {Mixed} b + * @return {Boolean} result + */ + +function bufferEqual(a, b) { + if (!Buffer.isBuffer(b)) return false; + return iterableEqual(a, b); +} + +/*! + * Block for `objectEqual` ensuring non-existing + * values don't get in. + * + * @param {Mixed} object + * @return {Boolean} result + */ + +function isValue(a) { + return a !== null && a !== undefined; +} + +/*! + * Recursively check the equality of two objects. + * Once basic sameness has been established it will + * defer to `deepEqual` for each enumerable key + * in the object. + * + * @param {Mixed} a + * @param {Mixed} b + * @return {Boolean} result + */ + +function objectEqual(a, b, m) { + if (!isValue(a) || !isValue(b)) { + return false; + } + + if (a.prototype !== b.prototype) { + return false; + } + + var i; + if (m) { + for (i = 0; i < m.length; i++) { + if ((m[i][0] === a && m[i][1] === b) + || (m[i][0] === b && m[i][1] === a)) { + return true; + } + } + } else { + m = []; + } + + try { + var ka = enumerable(a); + var kb = enumerable(b); + } catch (ex) { + return false; + } + + ka.sort(); + kb.sort(); + + if (!iterableEqual(ka, kb)) { + return false; + } + + m.push([ a, b ]); + + var key; + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!deepEqual(a[key], b[key], m)) { + return false; + } + } + + return true; +} + +}); + +require.register("chai", function (exports, module) { +module.exports = require('chai/lib/chai.js'); + +}); + +require.register("chai/lib/chai.js", function (exports, module) { +/*! + * chai + * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +var used = [] + , exports = module.exports = {}; + +/*! + * Chai version + */ + +exports.version = '2.1.0'; + +/*! + * Assertion Error + */ + +exports.AssertionError = require('chaijs~assertion-error@1.0.0'); + +/*! + * Utils for plugins (not exported) + */ + +var util = require('chai/lib/chai/utils/index.js'); + +/** + * # .use(function) + * + * Provides a way to extend the internals of Chai + * + * @param {Function} + * @returns {this} for chaining + * @api public + */ + +exports.use = function (fn) { + if (!~used.indexOf(fn)) { + fn(this, util); + used.push(fn); + } + + return this; +}; + +/*! + * Utility Functions + */ + +exports.util = util; + +/*! + * Configuration + */ + +var config = require('chai/lib/chai/config.js'); +exports.config = config; + +/*! + * Primary `Assertion` prototype + */ + +var assertion = require('chai/lib/chai/assertion.js'); +exports.use(assertion); + +/*! + * Core Assertions + */ + +var core = require('chai/lib/chai/core/assertions.js'); +exports.use(core); + +/*! + * Expect interface + */ + +var expect = require('chai/lib/chai/interface/expect.js'); +exports.use(expect); + +/*! + * Should interface + */ + +var should = require('chai/lib/chai/interface/should.js'); +exports.use(should); + +/*! + * Assert interface + */ + +var assert = require('chai/lib/chai/interface/assert.js'); +exports.use(assert); + +}); + +require.register("chai/lib/chai/assertion.js", function (exports, module) { +/*! + * chai + * http://chaijs.com + * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +var config = require('chai/lib/chai/config.js'); + +module.exports = function (_chai, util) { + /*! + * Module dependencies. + */ + + var AssertionError = _chai.AssertionError + , flag = util.flag; + + /*! + * Module export. + */ + + _chai.Assertion = Assertion; + + /*! + * Assertion Constructor + * + * Creates object for chaining. + * + * @api private + */ + + function Assertion (obj, msg, stack) { + flag(this, 'ssfi', stack || arguments.callee); + flag(this, 'object', obj); + flag(this, 'message', msg); + } + + Object.defineProperty(Assertion, 'includeStack', { + get: function() { + console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.'); + return config.includeStack; + }, + set: function(value) { + console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.'); + config.includeStack = value; + } + }); + + Object.defineProperty(Assertion, 'showDiff', { + get: function() { + console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.'); + return config.showDiff; + }, + set: function(value) { + console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.'); + config.showDiff = value; + } + }); + + Assertion.addProperty = function (name, fn) { + util.addProperty(this.prototype, name, fn); + }; + + Assertion.addMethod = function (name, fn) { + util.addMethod(this.prototype, name, fn); + }; + + Assertion.addChainableMethod = function (name, fn, chainingBehavior) { + util.addChainableMethod(this.prototype, name, fn, chainingBehavior); + }; + + Assertion.overwriteProperty = function (name, fn) { + util.overwriteProperty(this.prototype, name, fn); + }; + + Assertion.overwriteMethod = function (name, fn) { + util.overwriteMethod(this.prototype, name, fn); + }; + + Assertion.overwriteChainableMethod = function (name, fn, chainingBehavior) { + util.overwriteChainableMethod(this.prototype, name, fn, chainingBehavior); + }; + + /*! + * ### .assert(expression, message, negateMessage, expected, actual) + * + * Executes an expression and check expectations. Throws AssertionError for reporting if test doesn't pass. + * + * @name assert + * @param {Philosophical} expression to be tested + * @param {String or Function} message or function that returns message to display if fails + * @param {String or Function} negatedMessage or function that returns negatedMessage to display if negated expression fails + * @param {Mixed} expected value (remember to check for negation) + * @param {Mixed} actual (optional) will default to `this.obj` + * @api private + */ + + Assertion.prototype.assert = function (expr, msg, negateMsg, expected, _actual, showDiff) { + var ok = util.test(this, arguments); + if (true !== showDiff) showDiff = false; + if (true !== config.showDiff) showDiff = false; + + if (!ok) { + var msg = util.getMessage(this, arguments) + , actual = util.getActual(this, arguments); + throw new AssertionError(msg, { + actual: actual + , expected: expected + , showDiff: showDiff + }, (config.includeStack) ? this.assert : flag(this, 'ssfi')); + } + }; + + /*! + * ### ._obj + * + * Quick reference to stored `actual` value for plugin developers. + * + * @api private + */ + + Object.defineProperty(Assertion.prototype, '_obj', + { get: function () { + return flag(this, 'object'); + } + , set: function (val) { + flag(this, 'object', val); + } + }); +}; + +}); + +require.register("chai/lib/chai/config.js", function (exports, module) { +module.exports = { + + /** + * ### config.includeStack + * + * User configurable property, influences whether stack trace + * is included in Assertion error message. Default of false + * suppresses stack trace in the error message. + * + * chai.config.includeStack = true; // enable stack on error + * + * @param {Boolean} + * @api public + */ + + includeStack: false, + + /** + * ### config.showDiff + * + * User configurable property, influences whether or not + * the `showDiff` flag should be included in the thrown + * AssertionErrors. `false` will always be `false`; `true` + * will be true when the assertion has requested a diff + * be shown. + * + * @param {Boolean} + * @api public + */ + + showDiff: true, + + /** + * ### config.truncateThreshold + * + * User configurable property, sets length threshold for actual and + * expected values in assertion errors. If this threshold is exceeded, + * the value is truncated. + * + * Set it to zero if you want to disable truncating altogether. + * + * chai.config.truncateThreshold = 0; // disable truncating + * + * @param {Number} + * @api public + */ + + truncateThreshold: 40 + +}; + +}); + +require.register("chai/lib/chai/core/assertions.js", function (exports, module) { +/*! + * chai + * http://chaijs.com + * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +module.exports = function (chai, _) { + var Assertion = chai.Assertion + , toString = Object.prototype.toString + , flag = _.flag; + + /** + * ### Language Chains + * + * The following are provided as chainable getters to + * improve the readability of your assertions. They + * do not provide testing capabilities unless they + * have been overwritten by a plugin. + * + * **Chains** + * + * - to + * - be + * - been + * - is + * - that + * - which + * - and + * - has + * - have + * - with + * - at + * - of + * - same + * + * @name language chains + * @api public + */ + + [ 'to', 'be', 'been' + , 'is', 'and', 'has', 'have' + , 'with', 'that', 'which', 'at' + , 'of', 'same' ].forEach(function (chain) { + Assertion.addProperty(chain, function () { + return this; + }); + }); + + /** + * ### .not + * + * Negates any of assertions following in the chain. + * + * expect(foo).to.not.equal('bar'); + * expect(goodFn).to.not.throw(Error); + * expect({ foo: 'baz' }).to.have.property('foo') + * .and.not.equal('bar'); + * + * @name not + * @api public + */ + + Assertion.addProperty('not', function () { + flag(this, 'negate', true); + }); + + /** + * ### .deep + * + * Sets the `deep` flag, later used by the `equal` and + * `property` assertions. + * + * expect(foo).to.deep.equal({ bar: 'baz' }); + * expect({ foo: { bar: { baz: 'quux' } } }) + * .to.have.deep.property('foo.bar.baz', 'quux'); + * + * @name deep + * @api public + */ + + Assertion.addProperty('deep', function () { + flag(this, 'deep', true); + }); + + /** + * ### .any + * + * Sets the `any` flag, (opposite of the `all` flag) + * later used in the `keys` assertion. + * + * expect(foo).to.have.any.keys('bar', 'baz'); + * + * @name any + * @api public + */ + + Assertion.addProperty('any', function () { + flag(this, 'any', true); + flag(this, 'all', false) + }); + + + /** + * ### .all + * + * Sets the `all` flag (opposite of the `any` flag) + * later used by the `keys` assertion. + * + * expect(foo).to.have.all.keys('bar', 'baz'); + * + * @name all + * @api public + */ + + Assertion.addProperty('all', function () { + flag(this, 'all', true); + flag(this, 'any', false); + }); + + /** + * ### .a(type) + * + * The `a` and `an` assertions are aliases that can be + * used either as language chains or to assert a value's + * type. + * + * // typeof + * expect('test').to.be.a('string'); + * expect({ foo: 'bar' }).to.be.an('object'); + * expect(null).to.be.a('null'); + * expect(undefined).to.be.an('undefined'); + * + * // language chain + * expect(foo).to.be.an.instanceof(Foo); + * + * @name a + * @alias an + * @param {String} type + * @param {String} message _optional_ + * @api public + */ + + function an (type, msg) { + if (msg) flag(this, 'message', msg); + type = type.toLowerCase(); + var obj = flag(this, 'object') + , article = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(type.charAt(0)) ? 'an ' : 'a '; + + this.assert( + type === _.type(obj) + , 'expected #{this} to be ' + article + type + , 'expected #{this} not to be ' + article + type + ); + } + + Assertion.addChainableMethod('an', an); + Assertion.addChainableMethod('a', an); + + /** + * ### .include(value) + * + * The `include` and `contain` assertions can be used as either property + * based language chains or as methods to assert the inclusion of an object + * in an array or a substring in a string. When used as language chains, + * they toggle the `contains` flag for the `keys` assertion. + * + * expect([1,2,3]).to.include(2); + * expect('foobar').to.contain('foo'); + * expect({ foo: 'bar', hello: 'universe' }).to.include.keys('foo'); + * + * @name include + * @alias contain + * @alias includes + * @alias contains + * @param {Object|String|Number} obj + * @param {String} message _optional_ + * @api public + */ + + function includeChainingBehavior () { + flag(this, 'contains', true); + } + + function include (val, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + var expected = false; + if (_.type(obj) === 'array' && _.type(val) === 'object') { + for (var i in obj) { + if (_.eql(obj[i], val)) { + expected = true; + break; + } + } + } else if (_.type(val) === 'object') { + if (!flag(this, 'negate')) { + for (var k in val) new Assertion(obj).property(k, val[k]); + return; + } + var subset = {}; + for (var k in val) subset[k] = obj[k]; + expected = _.eql(subset, val); + } else { + expected = obj && ~obj.indexOf(val); + } + this.assert( + expected + , 'expected #{this} to include ' + _.inspect(val) + , 'expected #{this} to not include ' + _.inspect(val)); + } + + Assertion.addChainableMethod('include', include, includeChainingBehavior); + Assertion.addChainableMethod('contain', include, includeChainingBehavior); + Assertion.addChainableMethod('contains', include, includeChainingBehavior); + Assertion.addChainableMethod('includes', include, includeChainingBehavior); + + /** + * ### .ok + * + * Asserts that the target is truthy. + * + * expect('everthing').to.be.ok; + * expect(1).to.be.ok; + * expect(false).to.not.be.ok; + * expect(undefined).to.not.be.ok; + * expect(null).to.not.be.ok; + * + * @name ok + * @api public + */ + + Assertion.addProperty('ok', function () { + this.assert( + flag(this, 'object') + , 'expected #{this} to be truthy' + , 'expected #{this} to be falsy'); + }); + + /** + * ### .true + * + * Asserts that the target is `true`. + * + * expect(true).to.be.true; + * expect(1).to.not.be.true; + * + * @name true + * @api public + */ + + Assertion.addProperty('true', function () { + this.assert( + true === flag(this, 'object') + , 'expected #{this} to be true' + , 'expected #{this} to be false' + , this.negate ? false : true + ); + }); + + /** + * ### .false + * + * Asserts that the target is `false`. + * + * expect(false).to.be.false; + * expect(0).to.not.be.false; + * + * @name false + * @api public + */ + + Assertion.addProperty('false', function () { + this.assert( + false === flag(this, 'object') + , 'expected #{this} to be false' + , 'expected #{this} to be true' + , this.negate ? true : false + ); + }); + + /** + * ### .null + * + * Asserts that the target is `null`. + * + * expect(null).to.be.null; + * expect(undefined).not.to.be.null; + * + * @name null + * @api public + */ + + Assertion.addProperty('null', function () { + this.assert( + null === flag(this, 'object') + , 'expected #{this} to be null' + , 'expected #{this} not to be null' + ); + }); + + /** + * ### .undefined + * + * Asserts that the target is `undefined`. + * + * expect(undefined).to.be.undefined; + * expect(null).to.not.be.undefined; + * + * @name undefined + * @api public + */ + + Assertion.addProperty('undefined', function () { + this.assert( + undefined === flag(this, 'object') + , 'expected #{this} to be undefined' + , 'expected #{this} not to be undefined' + ); + }); + + /** + * ### .exist + * + * Asserts that the target is neither `null` nor `undefined`. + * + * var foo = 'hi' + * , bar = null + * , baz; + * + * expect(foo).to.exist; + * expect(bar).to.not.exist; + * expect(baz).to.not.exist; + * + * @name exist + * @api public + */ + + Assertion.addProperty('exist', function () { + this.assert( + null != flag(this, 'object') + , 'expected #{this} to exist' + , 'expected #{this} to not exist' + ); + }); + + + /** + * ### .empty + * + * Asserts that the target's length is `0`. For arrays, it checks + * the `length` property. For objects, it gets the count of + * enumerable keys. + * + * expect([]).to.be.empty; + * expect('').to.be.empty; + * expect({}).to.be.empty; + * + * @name empty + * @api public + */ + + Assertion.addProperty('empty', function () { + var obj = flag(this, 'object') + , expected = obj; + + if (Array.isArray(obj) || 'string' === typeof object) { + expected = obj.length; + } else if (typeof obj === 'object') { + expected = Object.keys(obj).length; + } + + this.assert( + !expected + , 'expected #{this} to be empty' + , 'expected #{this} not to be empty' + ); + }); + + /** + * ### .arguments + * + * Asserts that the target is an arguments object. + * + * function test () { + * expect(arguments).to.be.arguments; + * } + * + * @name arguments + * @alias Arguments + * @api public + */ + + function checkArguments () { + var obj = flag(this, 'object') + , type = Object.prototype.toString.call(obj); + this.assert( + '[object Arguments]' === type + , 'expected #{this} to be arguments but got ' + type + , 'expected #{this} to not be arguments' + ); + } + + Assertion.addProperty('arguments', checkArguments); + Assertion.addProperty('Arguments', checkArguments); + + /** + * ### .equal(value) + * + * Asserts that the target is strictly equal (`===`) to `value`. + * Alternately, if the `deep` flag is set, asserts that + * the target is deeply equal to `value`. + * + * expect('hello').to.equal('hello'); + * expect(42).to.equal(42); + * expect(1).to.not.equal(true); + * expect({ foo: 'bar' }).to.not.equal({ foo: 'bar' }); + * expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' }); + * + * @name equal + * @alias equals + * @alias eq + * @alias deep.equal + * @param {Mixed} value + * @param {String} message _optional_ + * @api public + */ + + function assertEqual (val, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'deep')) { + return this.eql(val); + } else { + this.assert( + val === obj + , 'expected #{this} to equal #{exp}' + , 'expected #{this} to not equal #{exp}' + , val + , this._obj + , true + ); + } + } + + Assertion.addMethod('equal', assertEqual); + Assertion.addMethod('equals', assertEqual); + Assertion.addMethod('eq', assertEqual); + + /** + * ### .eql(value) + * + * Asserts that the target is deeply equal to `value`. + * + * expect({ foo: 'bar' }).to.eql({ foo: 'bar' }); + * expect([ 1, 2, 3 ]).to.eql([ 1, 2, 3 ]); + * + * @name eql + * @alias eqls + * @param {Mixed} value + * @param {String} message _optional_ + * @api public + */ + + function assertEql(obj, msg) { + if (msg) flag(this, 'message', msg); + this.assert( + _.eql(obj, flag(this, 'object')) + , 'expected #{this} to deeply equal #{exp}' + , 'expected #{this} to not deeply equal #{exp}' + , obj + , this._obj + , true + ); + } + + Assertion.addMethod('eql', assertEql); + Assertion.addMethod('eqls', assertEql); + + /** + * ### .above(value) + * + * Asserts that the target is greater than `value`. + * + * expect(10).to.be.above(5); + * + * Can also be used in conjunction with `length` to + * assert a minimum length. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.above(2); + * expect([ 1, 2, 3 ]).to.have.length.above(2); + * + * @name above + * @alias gt + * @alias greaterThan + * @param {Number} value + * @param {String} message _optional_ + * @api public + */ + + function assertAbove (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len > n + , 'expected #{this} to have a length above #{exp} but got #{act}' + , 'expected #{this} to not have a length above #{exp}' + , n + , len + ); + } else { + this.assert( + obj > n + , 'expected #{this} to be above ' + n + , 'expected #{this} to be at most ' + n + ); + } + } + + Assertion.addMethod('above', assertAbove); + Assertion.addMethod('gt', assertAbove); + Assertion.addMethod('greaterThan', assertAbove); + + /** + * ### .least(value) + * + * Asserts that the target is greater than or equal to `value`. + * + * expect(10).to.be.at.least(10); + * + * Can also be used in conjunction with `length` to + * assert a minimum length. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.of.at.least(2); + * expect([ 1, 2, 3 ]).to.have.length.of.at.least(3); + * + * @name least + * @alias gte + * @param {Number} value + * @param {String} message _optional_ + * @api public + */ + + function assertLeast (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len >= n + , 'expected #{this} to have a length at least #{exp} but got #{act}' + , 'expected #{this} to have a length below #{exp}' + , n + , len + ); + } else { + this.assert( + obj >= n + , 'expected #{this} to be at least ' + n + , 'expected #{this} to be below ' + n + ); + } + } + + Assertion.addMethod('least', assertLeast); + Assertion.addMethod('gte', assertLeast); + + /** + * ### .below(value) + * + * Asserts that the target is less than `value`. + * + * expect(5).to.be.below(10); + * + * Can also be used in conjunction with `length` to + * assert a maximum length. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.below(4); + * expect([ 1, 2, 3 ]).to.have.length.below(4); + * + * @name below + * @alias lt + * @alias lessThan + * @param {Number} value + * @param {String} message _optional_ + * @api public + */ + + function assertBelow (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len < n + , 'expected #{this} to have a length below #{exp} but got #{act}' + , 'expected #{this} to not have a length below #{exp}' + , n + , len + ); + } else { + this.assert( + obj < n + , 'expected #{this} to be below ' + n + , 'expected #{this} to be at least ' + n + ); + } + } + + Assertion.addMethod('below', assertBelow); + Assertion.addMethod('lt', assertBelow); + Assertion.addMethod('lessThan', assertBelow); + + /** + * ### .most(value) + * + * Asserts that the target is less than or equal to `value`. + * + * expect(5).to.be.at.most(5); + * + * Can also be used in conjunction with `length` to + * assert a maximum length. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.of.at.most(4); + * expect([ 1, 2, 3 ]).to.have.length.of.at.most(3); + * + * @name most + * @alias lte + * @param {Number} value + * @param {String} message _optional_ + * @api public + */ + + function assertMost (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len <= n + , 'expected #{this} to have a length at most #{exp} but got #{act}' + , 'expected #{this} to have a length above #{exp}' + , n + , len + ); + } else { + this.assert( + obj <= n + , 'expected #{this} to be at most ' + n + , 'expected #{this} to be above ' + n + ); + } + } + + Assertion.addMethod('most', assertMost); + Assertion.addMethod('lte', assertMost); + + /** + * ### .within(start, finish) + * + * Asserts that the target is within a range. + * + * expect(7).to.be.within(5,10); + * + * Can also be used in conjunction with `length` to + * assert a length range. The benefit being a + * more informative error message than if the length + * was supplied directly. + * + * expect('foo').to.have.length.within(2,4); + * expect([ 1, 2, 3 ]).to.have.length.within(2,4); + * + * @name within + * @param {Number} start lowerbound inclusive + * @param {Number} finish upperbound inclusive + * @param {String} message _optional_ + * @api public + */ + + Assertion.addMethod('within', function (start, finish, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object') + , range = start + '..' + finish; + if (flag(this, 'doLength')) { + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + this.assert( + len >= start && len <= finish + , 'expected #{this} to have a length within ' + range + , 'expected #{this} to not have a length within ' + range + ); + } else { + this.assert( + obj >= start && obj <= finish + , 'expected #{this} to be within ' + range + , 'expected #{this} to not be within ' + range + ); + } + }); + + /** + * ### .instanceof(constructor) + * + * Asserts that the target is an instance of `constructor`. + * + * var Tea = function (name) { this.name = name; } + * , Chai = new Tea('chai'); + * + * expect(Chai).to.be.an.instanceof(Tea); + * expect([ 1, 2, 3 ]).to.be.instanceof(Array); + * + * @name instanceof + * @param {Constructor} constructor + * @param {String} message _optional_ + * @alias instanceOf + * @api public + */ + + function assertInstanceOf (constructor, msg) { + if (msg) flag(this, 'message', msg); + var name = _.getName(constructor); + this.assert( + flag(this, 'object') instanceof constructor + , 'expected #{this} to be an instance of ' + name + , 'expected #{this} to not be an instance of ' + name + ); + }; + + Assertion.addMethod('instanceof', assertInstanceOf); + Assertion.addMethod('instanceOf', assertInstanceOf); + + /** + * ### .property(name, [value]) + * + * Asserts that the target has a property `name`, optionally asserting that + * the value of that property is strictly equal to `value`. + * If the `deep` flag is set, you can use dot- and bracket-notation for deep + * references into objects and arrays. + * + * // simple referencing + * var obj = { foo: 'bar' }; + * expect(obj).to.have.property('foo'); + * expect(obj).to.have.property('foo', 'bar'); + * + * // deep referencing + * var deepObj = { + * green: { tea: 'matcha' } + * , teas: [ 'chai', 'matcha', { tea: 'konacha' } ] + * }; + + * expect(deepObj).to.have.deep.property('green.tea', 'matcha'); + * expect(deepObj).to.have.deep.property('teas[1]', 'matcha'); + * expect(deepObj).to.have.deep.property('teas[2].tea', 'konacha'); + * + * You can also use an array as the starting point of a `deep.property` + * assertion, or traverse nested arrays. + * + * var arr = [ + * [ 'chai', 'matcha', 'konacha' ] + * , [ { tea: 'chai' } + * , { tea: 'matcha' } + * , { tea: 'konacha' } ] + * ]; + * + * expect(arr).to.have.deep.property('[0][1]', 'matcha'); + * expect(arr).to.have.deep.property('[1][2].tea', 'konacha'); + * + * Furthermore, `property` changes the subject of the assertion + * to be the value of that property from the original object. This + * permits for further chainable assertions on that property. + * + * expect(obj).to.have.property('foo') + * .that.is.a('string'); + * expect(deepObj).to.have.property('green') + * .that.is.an('object') + * .that.deep.equals({ tea: 'matcha' }); + * expect(deepObj).to.have.property('teas') + * .that.is.an('array') + * .with.deep.property('[2]') + * .that.deep.equals({ tea: 'konacha' }); + * + * @name property + * @alias deep.property + * @param {String} name + * @param {Mixed} value (optional) + * @param {String} message _optional_ + * @returns value of property for chaining + * @api public + */ + + Assertion.addMethod('property', function (name, val, msg) { + if (msg) flag(this, 'message', msg); + + var isDeep = !!flag(this, 'deep') + , descriptor = isDeep ? 'deep property ' : 'property ' + , negate = flag(this, 'negate') + , obj = flag(this, 'object') + , pathInfo = isDeep ? _.getPathInfo(name, obj) : null + , hasProperty = isDeep + ? pathInfo.exists + : _.hasProperty(name, obj) + , value = isDeep + ? pathInfo.value + : obj[name]; + + if (negate && undefined !== val) { + if (undefined === value) { + msg = (msg != null) ? msg + ': ' : ''; + throw new Error(msg + _.inspect(obj) + ' has no ' + descriptor + _.inspect(name)); + } + } else { + this.assert( + hasProperty + , 'expected #{this} to have a ' + descriptor + _.inspect(name) + , 'expected #{this} to not have ' + descriptor + _.inspect(name)); + } + + if (undefined !== val) { + this.assert( + val === value + , 'expected #{this} to have a ' + descriptor + _.inspect(name) + ' of #{exp}, but got #{act}' + , 'expected #{this} to not have a ' + descriptor + _.inspect(name) + ' of #{act}' + , val + , value + ); + } + + flag(this, 'object', value); + }); + + + /** + * ### .ownProperty(name) + * + * Asserts that the target has an own property `name`. + * + * expect('test').to.have.ownProperty('length'); + * + * @name ownProperty + * @alias haveOwnProperty + * @param {String} name + * @param {String} message _optional_ + * @api public + */ + + function assertOwnProperty (name, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + this.assert( + obj.hasOwnProperty(name) + , 'expected #{this} to have own property ' + _.inspect(name) + , 'expected #{this} to not have own property ' + _.inspect(name) + ); + } + + Assertion.addMethod('ownProperty', assertOwnProperty); + Assertion.addMethod('haveOwnProperty', assertOwnProperty); + + /** + * ### .length(value) + * + * Asserts that the target's `length` property has + * the expected value. + * + * expect([ 1, 2, 3]).to.have.length(3); + * expect('foobar').to.have.length(6); + * + * Can also be used as a chain precursor to a value + * comparison for the length property. + * + * expect('foo').to.have.length.above(2); + * expect([ 1, 2, 3 ]).to.have.length.above(2); + * expect('foo').to.have.length.below(4); + * expect([ 1, 2, 3 ]).to.have.length.below(4); + * expect('foo').to.have.length.within(2,4); + * expect([ 1, 2, 3 ]).to.have.length.within(2,4); + * + * @name length + * @alias lengthOf + * @param {Number} length + * @param {String} message _optional_ + * @api public + */ + + function assertLengthChain () { + flag(this, 'doLength', true); + } + + function assertLength (n, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + new Assertion(obj, msg).to.have.property('length'); + var len = obj.length; + + this.assert( + len == n + , 'expected #{this} to have a length of #{exp} but got #{act}' + , 'expected #{this} to not have a length of #{act}' + , n + , len + ); + } + + Assertion.addChainableMethod('length', assertLength, assertLengthChain); + Assertion.addMethod('lengthOf', assertLength); + + /** + * ### .match(regexp) + * + * Asserts that the target matches a regular expression. + * + * expect('foobar').to.match(/^foo/); + * + * @name match + * @param {RegExp} RegularExpression + * @param {String} message _optional_ + * @api public + */ + + Assertion.addMethod('match', function (re, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + this.assert( + re.exec(obj) + , 'expected #{this} to match ' + re + , 'expected #{this} not to match ' + re + ); + }); + + /** + * ### .string(string) + * + * Asserts that the string target contains another string. + * + * expect('foobar').to.have.string('bar'); + * + * @name string + * @param {String} string + * @param {String} message _optional_ + * @api public + */ + + Assertion.addMethod('string', function (str, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + new Assertion(obj, msg).is.a('string'); + + this.assert( + ~obj.indexOf(str) + , 'expected #{this} to contain ' + _.inspect(str) + , 'expected #{this} to not contain ' + _.inspect(str) + ); + }); + + + /** + * ### .keys(key1, [key2], [...]) + * + * Asserts that the target contains any or all of the passed-in keys. + * Use in combination with `any`, `all`, `contains`, or `have` will affect + * what will pass. + * + * When used in conjunction with `any`, at least one key that is passed + * in must exist in the target object. This is regardless whether or not + * the `have` or `contain` qualifiers are used. Note, either `any` or `all` + * should be used in the assertion. If neither are used, the assertion is + * defaulted to `all`. + * + * When both `all` and `contain` are used, the target object must have at + * least all of the passed-in keys but may have more keys not listed. + * + * When both `all` and `have` are used, the target object must both contain + * all of the passed-in keys AND the number of keys in the target object must + * match the number of keys passed in (in other words, a target object must + * have all and only all of the passed-in keys). + * + * expect({ foo: 1, bar: 2 }).to.have.any.keys('foo', 'baz'); + * expect({ foo: 1, bar: 2 }).to.have.any.keys('foo'); + * expect({ foo: 1, bar: 2 }).to.contain.any.keys('bar', 'baz'); + * expect({ foo: 1, bar: 2 }).to.contain.any.keys(['foo']); + * expect({ foo: 1, bar: 2 }).to.contain.any.keys({'foo': 6}); + * expect({ foo: 1, bar: 2 }).to.have.all.keys(['bar', 'foo']); + * expect({ foo: 1, bar: 2 }).to.have.all.keys({'bar': 6, 'foo', 7}); + * expect({ foo: 1, bar: 2, baz: 3 }).to.contain.all.keys(['bar', 'foo']); + * expect({ foo: 1, bar: 2, baz: 3 }).to.contain.all.keys([{'bar': 6}}]); + * + * + * @name keys + * @alias key + * @param {String...|Array|Object} keys + * @api public + */ + + function assertKeys (keys) { + var obj = flag(this, 'object') + , str + , ok = true + , mixedArgsMsg = 'keys must be given single argument of Array|Object|String, or multiple String arguments'; + + switch (_.type(keys)) { + case "array": + if (arguments.length > 1) throw (new Error(mixedArgsMsg)); + break; + case "object": + if (arguments.length > 1) throw (new Error(mixedArgsMsg)); + keys = Object.keys(keys); + break; + default: + keys = Array.prototype.slice.call(arguments); + } + + if (!keys.length) throw new Error('keys required'); + + var actual = Object.keys(obj) + , expected = keys + , len = keys.length + , any = flag(this, 'any') + , all = flag(this, 'all'); + + if (!any && !all) { + all = true; + } + + // Has any + if (any) { + var intersection = expected.filter(function(key) { + return ~actual.indexOf(key); + }); + ok = intersection.length > 0; + } + + // Has all + if (all) { + ok = keys.every(function(key){ + return ~actual.indexOf(key); + }); + if (!flag(this, 'negate') && !flag(this, 'contains')) { + ok = ok && keys.length == actual.length; + } + } + + // Key string + if (len > 1) { + keys = keys.map(function(key){ + return _.inspect(key); + }); + var last = keys.pop(); + if (all) { + str = keys.join(', ') + ', and ' + last; + } + if (any) { + str = keys.join(', ') + ', or ' + last; + } + } else { + str = _.inspect(keys[0]); + } + + // Form + str = (len > 1 ? 'keys ' : 'key ') + str; + + // Have / include + str = (flag(this, 'contains') ? 'contain ' : 'have ') + str; + + // Assertion + this.assert( + ok + , 'expected #{this} to ' + str + , 'expected #{this} to not ' + str + , expected.slice(0).sort() + , actual.sort() + , true + ); + } + + Assertion.addMethod('keys', assertKeys); + Assertion.addMethod('key', assertKeys); + + /** + * ### .throw(constructor) + * + * Asserts that the function target will throw a specific error, or specific type of error + * (as determined using `instanceof`), optionally with a RegExp or string inclusion test + * for the error's message. + * + * var err = new ReferenceError('This is a bad function.'); + * var fn = function () { throw err; } + * expect(fn).to.throw(ReferenceError); + * expect(fn).to.throw(Error); + * expect(fn).to.throw(/bad function/); + * expect(fn).to.not.throw('good function'); + * expect(fn).to.throw(ReferenceError, /bad function/); + * expect(fn).to.throw(err); + * expect(fn).to.not.throw(new RangeError('Out of range.')); + * + * Please note that when a throw expectation is negated, it will check each + * parameter independently, starting with error constructor type. The appropriate way + * to check for the existence of a type of error but for a message that does not match + * is to use `and`. + * + * expect(fn).to.throw(ReferenceError) + * .and.not.throw(/good function/); + * + * @name throw + * @alias throws + * @alias Throw + * @param {ErrorConstructor} constructor + * @param {String|RegExp} expected error message + * @param {String} message _optional_ + * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types + * @returns error for chaining (null if no error) + * @api public + */ + + function assertThrows (constructor, errMsg, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + new Assertion(obj, msg).is.a('function'); + + var thrown = false + , desiredError = null + , name = null + , thrownError = null; + + if (arguments.length === 0) { + errMsg = null; + constructor = null; + } else if (constructor && (constructor instanceof RegExp || 'string' === typeof constructor)) { + errMsg = constructor; + constructor = null; + } else if (constructor && constructor instanceof Error) { + desiredError = constructor; + constructor = null; + errMsg = null; + } else if (typeof constructor === 'function') { + name = constructor.prototype.name || constructor.name; + if (name === 'Error' && constructor !== Error) { + name = (new constructor()).name; + } + } else { + constructor = null; + } + + try { + obj(); + } catch (err) { + // first, check desired error + if (desiredError) { + this.assert( + err === desiredError + , 'expected #{this} to throw #{exp} but #{act} was thrown' + , 'expected #{this} to not throw #{exp}' + , (desiredError instanceof Error ? desiredError.toString() : desiredError) + , (err instanceof Error ? err.toString() : err) + ); + + flag(this, 'object', err); + return this; + } + + // next, check constructor + if (constructor) { + this.assert( + err instanceof constructor + , 'expected #{this} to throw #{exp} but #{act} was thrown' + , 'expected #{this} to not throw #{exp} but #{act} was thrown' + , name + , (err instanceof Error ? err.toString() : err) + ); + + if (!errMsg) { + flag(this, 'object', err); + return this; + } + } + + // next, check message + var message = 'object' === _.type(err) && "message" in err + ? err.message + : '' + err; + + if ((message != null) && errMsg && errMsg instanceof RegExp) { + this.assert( + errMsg.exec(message) + , 'expected #{this} to throw error matching #{exp} but got #{act}' + , 'expected #{this} to throw error not matching #{exp}' + , errMsg + , message + ); + + flag(this, 'object', err); + return this; + } else if ((message != null) && errMsg && 'string' === typeof errMsg) { + this.assert( + ~message.indexOf(errMsg) + , 'expected #{this} to throw error including #{exp} but got #{act}' + , 'expected #{this} to throw error not including #{act}' + , errMsg + , message + ); + + flag(this, 'object', err); + return this; + } else { + thrown = true; + thrownError = err; + } + } + + var actuallyGot = '' + , expectedThrown = name !== null + ? name + : desiredError + ? '#{exp}' //_.inspect(desiredError) + : 'an error'; + + if (thrown) { + actuallyGot = ' but #{act} was thrown' + } + + this.assert( + thrown === true + , 'expected #{this} to throw ' + expectedThrown + actuallyGot + , 'expected #{this} to not throw ' + expectedThrown + actuallyGot + , (desiredError instanceof Error ? desiredError.toString() : desiredError) + , (thrownError instanceof Error ? thrownError.toString() : thrownError) + ); + + flag(this, 'object', thrownError); + }; + + Assertion.addMethod('throw', assertThrows); + Assertion.addMethod('throws', assertThrows); + Assertion.addMethod('Throw', assertThrows); + + /** + * ### .respondTo(method) + * + * Asserts that the object or class target will respond to a method. + * + * Klass.prototype.bar = function(){}; + * expect(Klass).to.respondTo('bar'); + * expect(obj).to.respondTo('bar'); + * + * To check if a constructor will respond to a static function, + * set the `itself` flag. + * + * Klass.baz = function(){}; + * expect(Klass).itself.to.respondTo('baz'); + * + * @name respondTo + * @param {String} method + * @param {String} message _optional_ + * @api public + */ + + Assertion.addMethod('respondTo', function (method, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object') + , itself = flag(this, 'itself') + , context = ('function' === _.type(obj) && !itself) + ? obj.prototype[method] + : obj[method]; + + this.assert( + 'function' === typeof context + , 'expected #{this} to respond to ' + _.inspect(method) + , 'expected #{this} to not respond to ' + _.inspect(method) + ); + }); + + /** + * ### .itself + * + * Sets the `itself` flag, later used by the `respondTo` assertion. + * + * function Foo() {} + * Foo.bar = function() {} + * Foo.prototype.baz = function() {} + * + * expect(Foo).itself.to.respondTo('bar'); + * expect(Foo).itself.not.to.respondTo('baz'); + * + * @name itself + * @api public + */ + + Assertion.addProperty('itself', function () { + flag(this, 'itself', true); + }); + + /** + * ### .satisfy(method) + * + * Asserts that the target passes a given truth test. + * + * expect(1).to.satisfy(function(num) { return num > 0; }); + * + * @name satisfy + * @param {Function} matcher + * @param {String} message _optional_ + * @api public + */ + + Assertion.addMethod('satisfy', function (matcher, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + var result = matcher(obj); + this.assert( + result + , 'expected #{this} to satisfy ' + _.objDisplay(matcher) + , 'expected #{this} to not satisfy' + _.objDisplay(matcher) + , this.negate ? false : true + , result + ); + }); + + /** + * ### .closeTo(expected, delta) + * + * Asserts that the target is equal `expected`, to within a +/- `delta` range. + * + * expect(1.5).to.be.closeTo(1, 0.5); + * + * @name closeTo + * @param {Number} expected + * @param {Number} delta + * @param {String} message _optional_ + * @api public + */ + + Assertion.addMethod('closeTo', function (expected, delta, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + + new Assertion(obj, msg).is.a('number'); + if (_.type(expected) !== 'number' || _.type(delta) !== 'number') { + throw new Error('the arguments to closeTo must be numbers'); + } + + this.assert( + Math.abs(obj - expected) <= delta + , 'expected #{this} to be close to ' + expected + ' +/- ' + delta + , 'expected #{this} not to be close to ' + expected + ' +/- ' + delta + ); + }); + + function isSubsetOf(subset, superset, cmp) { + return subset.every(function(elem) { + if (!cmp) return superset.indexOf(elem) !== -1; + + return superset.some(function(elem2) { + return cmp(elem, elem2); + }); + }) + } + + /** + * ### .members(set) + * + * Asserts that the target is a superset of `set`, + * or that the target and `set` have the same strictly-equal (===) members. + * Alternately, if the `deep` flag is set, set members are compared for deep + * equality. + * + * expect([1, 2, 3]).to.include.members([3, 2]); + * expect([1, 2, 3]).to.not.include.members([3, 2, 8]); + * + * expect([4, 2]).to.have.members([2, 4]); + * expect([5, 2]).to.not.have.members([5, 2, 1]); + * + * expect([{ id: 1 }]).to.deep.include.members([{ id: 1 }]); + * + * @name members + * @param {Array} set + * @param {String} message _optional_ + * @api public + */ + + Assertion.addMethod('members', function (subset, msg) { + if (msg) flag(this, 'message', msg); + var obj = flag(this, 'object'); + + new Assertion(obj).to.be.an('array'); + new Assertion(subset).to.be.an('array'); + + var cmp = flag(this, 'deep') ? _.eql : undefined; + + if (flag(this, 'contains')) { + return this.assert( + isSubsetOf(subset, obj, cmp) + , 'expected #{this} to be a superset of #{act}' + , 'expected #{this} to not be a superset of #{act}' + , obj + , subset + ); + } + + this.assert( + isSubsetOf(obj, subset, cmp) && isSubsetOf(subset, obj, cmp) + , 'expected #{this} to have the same members as #{act}' + , 'expected #{this} to not have the same members as #{act}' + , obj + , subset + ); + }); + + /** + * ### .change(function) + * + * Asserts that a function changes an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val += 3 }; + * var noChangeFn = function() { return 'foo' + 'bar'; } + * expect(fn).to.change(obj, 'val'); + * expect(noChangFn).to.not.change(obj, 'val') + * + * @name change + * @alias changes + * @alias Change + * @param {String} object + * @param {String} property name + * @param {String} message _optional_ + * @api public + */ + + function assertChanges (object, prop, msg) { + if (msg) flag(this, 'message', msg); + var fn = flag(this, 'object'); + new Assertion(object, msg).to.have.property(prop); + new Assertion(fn).is.a('function'); + + var initial = object[prop]; + fn(); + + this.assert( + initial !== object[prop] + , 'expected .' + prop + ' to change' + , 'expected .' + prop + ' to not change' + ); + } + + Assertion.addChainableMethod('change', assertChanges); + Assertion.addChainableMethod('changes', assertChanges); + + /** + * ### .increase(function) + * + * Asserts that a function increases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 15 }; + * expect(fn).to.increase(obj, 'val'); + * + * @name increase + * @alias increases + * @alias Increase + * @param {String} object + * @param {String} property name + * @param {String} message _optional_ + * @api public + */ + + function assertIncreases (object, prop, msg) { + if (msg) flag(this, 'message', msg); + var fn = flag(this, 'object'); + new Assertion(object, msg).to.have.property(prop); + new Assertion(fn).is.a('function'); + + var initial = object[prop]; + fn(); + + this.assert( + object[prop] - initial > 0 + , 'expected .' + prop + ' to increase' + , 'expected .' + prop + ' to not increase' + ); + } + + Assertion.addChainableMethod('increase', assertIncreases); + Assertion.addChainableMethod('increases', assertIncreases); + + /** + * ### .decrease(function) + * + * Asserts that a function decreases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 5 }; + * expect(fn).to.decrease(obj, 'val'); + * + * @name decrease + * @alias decreases + * @alias Decrease + * @param {String} object + * @param {String} property name + * @param {String} message _optional_ + * @api public + */ + + function assertDecreases (object, prop, msg) { + if (msg) flag(this, 'message', msg); + var fn = flag(this, 'object'); + new Assertion(object, msg).to.have.property(prop); + new Assertion(fn).is.a('function'); + + var initial = object[prop]; + fn(); + + this.assert( + object[prop] - initial < 0 + , 'expected .' + prop + ' to decrease' + , 'expected .' + prop + ' to not decrease' + ); + } + + Assertion.addChainableMethod('decrease', assertDecreases); + Assertion.addChainableMethod('decreases', assertDecreases); + +}; + +}); + +require.register("chai/lib/chai/interface/assert.js", function (exports, module) { +/*! + * chai + * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + + +module.exports = function (chai, util) { + + /*! + * Chai dependencies. + */ + + var Assertion = chai.Assertion + , flag = util.flag; + + /*! + * Module export. + */ + + /** + * ### assert(expression, message) + * + * Write your own test expressions. + * + * assert('foo' !== 'bar', 'foo is not bar'); + * assert(Array.isArray([]), 'empty arrays are arrays'); + * + * @param {Mixed} expression to test for truthiness + * @param {String} message to display on error + * @name assert + * @api public + */ + + var assert = chai.assert = function (express, errmsg) { + var test = new Assertion(null, null, chai.assert); + test.assert( + express + , errmsg + , '[ negation message unavailable ]' + ); + }; + + /** + * ### .fail(actual, expected, [message], [operator]) + * + * Throw a failure. Node.js `assert` module-compatible. + * + * @name fail + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @param {String} operator + * @api public + */ + + assert.fail = function (actual, expected, message, operator) { + message = message || 'assert.fail()'; + throw new chai.AssertionError(message, { + actual: actual + , expected: expected + , operator: operator + }, assert.fail); + }; + + /** + * ### .ok(object, [message]) + * + * Asserts that `object` is truthy. + * + * assert.ok('everything', 'everything is ok'); + * assert.ok(false, 'this will fail'); + * + * @name ok + * @param {Mixed} object to test + * @param {String} message + * @api public + */ + + assert.ok = function (val, msg) { + new Assertion(val, msg).is.ok; + }; + + /** + * ### .notOk(object, [message]) + * + * Asserts that `object` is falsy. + * + * assert.notOk('everything', 'this will fail'); + * assert.notOk(false, 'this will pass'); + * + * @name notOk + * @param {Mixed} object to test + * @param {String} message + * @api public + */ + + assert.notOk = function (val, msg) { + new Assertion(val, msg).is.not.ok; + }; + + /** + * ### .equal(actual, expected, [message]) + * + * Asserts non-strict equality (`==`) of `actual` and `expected`. + * + * assert.equal(3, '3', '== coerces values to strings'); + * + * @name equal + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @api public + */ + + assert.equal = function (act, exp, msg) { + var test = new Assertion(act, msg, assert.equal); + + test.assert( + exp == flag(test, 'object') + , 'expected #{this} to equal #{exp}' + , 'expected #{this} to not equal #{act}' + , exp + , act + ); + }; + + /** + * ### .notEqual(actual, expected, [message]) + * + * Asserts non-strict inequality (`!=`) of `actual` and `expected`. + * + * assert.notEqual(3, 4, 'these numbers are not equal'); + * + * @name notEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @api public + */ + + assert.notEqual = function (act, exp, msg) { + var test = new Assertion(act, msg, assert.notEqual); + + test.assert( + exp != flag(test, 'object') + , 'expected #{this} to not equal #{exp}' + , 'expected #{this} to equal #{act}' + , exp + , act + ); + }; + + /** + * ### .strictEqual(actual, expected, [message]) + * + * Asserts strict equality (`===`) of `actual` and `expected`. + * + * assert.strictEqual(true, true, 'these booleans are strictly equal'); + * + * @name strictEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @api public + */ + + assert.strictEqual = function (act, exp, msg) { + new Assertion(act, msg).to.equal(exp); + }; + + /** + * ### .notStrictEqual(actual, expected, [message]) + * + * Asserts strict inequality (`!==`) of `actual` and `expected`. + * + * assert.notStrictEqual(3, '3', 'no coercion for strict equality'); + * + * @name notStrictEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @api public + */ + + assert.notStrictEqual = function (act, exp, msg) { + new Assertion(act, msg).to.not.equal(exp); + }; + + /** + * ### .deepEqual(actual, expected, [message]) + * + * Asserts that `actual` is deeply equal to `expected`. + * + * assert.deepEqual({ tea: 'green' }, { tea: 'green' }); + * + * @name deepEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @api public + */ + + assert.deepEqual = function (act, exp, msg) { + new Assertion(act, msg).to.eql(exp); + }; + + /** + * ### .notDeepEqual(actual, expected, [message]) + * + * Assert that `actual` is not deeply equal to `expected`. + * + * assert.notDeepEqual({ tea: 'green' }, { tea: 'jasmine' }); + * + * @name notDeepEqual + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @api public + */ + + assert.notDeepEqual = function (act, exp, msg) { + new Assertion(act, msg).to.not.eql(exp); + }; + + /** + * ### .isTrue(value, [message]) + * + * Asserts that `value` is true. + * + * var teaServed = true; + * assert.isTrue(teaServed, 'the tea has been served'); + * + * @name isTrue + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isAbove = function (val, abv, msg) { + new Assertion(val, msg).to.be.above(abv); + }; + + /** + * ### .isAbove(valueToCheck, valueToBeAbove, [message]) + * + * Asserts `valueToCheck` is strictly greater than (>) `valueToBeAbove` + * + * assert.isAbove(5, 2, '5 is strictly greater than 2'); + * + * @name isAbove + * @param {Mixed} valueToCheck + * @param {Mixed} valueToBeAbove + * @param {String} message + * @api public + */ + + assert.isBelow = function (val, blw, msg) { + new Assertion(val, msg).to.be.below(blw); + }; + + /** + * ### .isBelow(valueToCheck, valueToBeBelow, [message]) + * + * Asserts `valueToCheck` is strictly less than (<) `valueToBeBelow` + * + * assert.isBelow(3, 6, '3 is strictly less than 6'); + * + * @name isBelow + * @param {Mixed} valueToCheck + * @param {Mixed} valueToBeBelow + * @param {String} message + * @api public + */ + + assert.isTrue = function (val, msg) { + new Assertion(val, msg).is['true']; + }; + + /** + * ### .isFalse(value, [message]) + * + * Asserts that `value` is false. + * + * var teaServed = false; + * assert.isFalse(teaServed, 'no tea yet? hmm...'); + * + * @name isFalse + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isFalse = function (val, msg) { + new Assertion(val, msg).is['false']; + }; + + /** + * ### .isNull(value, [message]) + * + * Asserts that `value` is null. + * + * assert.isNull(err, 'there was no error'); + * + * @name isNull + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isNull = function (val, msg) { + new Assertion(val, msg).to.equal(null); + }; + + /** + * ### .isNotNull(value, [message]) + * + * Asserts that `value` is not null. + * + * var tea = 'tasty chai'; + * assert.isNotNull(tea, 'great, time for tea!'); + * + * @name isNotNull + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isNotNull = function (val, msg) { + new Assertion(val, msg).to.not.equal(null); + }; + + /** + * ### .isUndefined(value, [message]) + * + * Asserts that `value` is `undefined`. + * + * var tea; + * assert.isUndefined(tea, 'no tea defined'); + * + * @name isUndefined + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isUndefined = function (val, msg) { + new Assertion(val, msg).to.equal(undefined); + }; + + /** + * ### .isDefined(value, [message]) + * + * Asserts that `value` is not `undefined`. + * + * var tea = 'cup of chai'; + * assert.isDefined(tea, 'tea has been defined'); + * + * @name isDefined + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isDefined = function (val, msg) { + new Assertion(val, msg).to.not.equal(undefined); + }; + + /** + * ### .isFunction(value, [message]) + * + * Asserts that `value` is a function. + * + * function serveTea() { return 'cup of tea'; }; + * assert.isFunction(serveTea, 'great, we can have tea now'); + * + * @name isFunction + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isFunction = function (val, msg) { + new Assertion(val, msg).to.be.a('function'); + }; + + /** + * ### .isNotFunction(value, [message]) + * + * Asserts that `value` is _not_ a function. + * + * var serveTea = [ 'heat', 'pour', 'sip' ]; + * assert.isNotFunction(serveTea, 'great, we have listed the steps'); + * + * @name isNotFunction + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isNotFunction = function (val, msg) { + new Assertion(val, msg).to.not.be.a('function'); + }; + + /** + * ### .isObject(value, [message]) + * + * Asserts that `value` is an object (as revealed by + * `Object.prototype.toString`). + * + * var selection = { name: 'Chai', serve: 'with spices' }; + * assert.isObject(selection, 'tea selection is an object'); + * + * @name isObject + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isObject = function (val, msg) { + new Assertion(val, msg).to.be.a('object'); + }; + + /** + * ### .isNotObject(value, [message]) + * + * Asserts that `value` is _not_ an object. + * + * var selection = 'chai' + * assert.isNotObject(selection, 'tea selection is not an object'); + * assert.isNotObject(null, 'null is not an object'); + * + * @name isNotObject + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isNotObject = function (val, msg) { + new Assertion(val, msg).to.not.be.a('object'); + }; + + /** + * ### .isArray(value, [message]) + * + * Asserts that `value` is an array. + * + * var menu = [ 'green', 'chai', 'oolong' ]; + * assert.isArray(menu, 'what kind of tea do we want?'); + * + * @name isArray + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isArray = function (val, msg) { + new Assertion(val, msg).to.be.an('array'); + }; + + /** + * ### .isNotArray(value, [message]) + * + * Asserts that `value` is _not_ an array. + * + * var menu = 'green|chai|oolong'; + * assert.isNotArray(menu, 'what kind of tea do we want?'); + * + * @name isNotArray + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isNotArray = function (val, msg) { + new Assertion(val, msg).to.not.be.an('array'); + }; + + /** + * ### .isString(value, [message]) + * + * Asserts that `value` is a string. + * + * var teaOrder = 'chai'; + * assert.isString(teaOrder, 'order placed'); + * + * @name isString + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isString = function (val, msg) { + new Assertion(val, msg).to.be.a('string'); + }; + + /** + * ### .isNotString(value, [message]) + * + * Asserts that `value` is _not_ a string. + * + * var teaOrder = 4; + * assert.isNotString(teaOrder, 'order placed'); + * + * @name isNotString + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isNotString = function (val, msg) { + new Assertion(val, msg).to.not.be.a('string'); + }; + + /** + * ### .isNumber(value, [message]) + * + * Asserts that `value` is a number. + * + * var cups = 2; + * assert.isNumber(cups, 'how many cups'); + * + * @name isNumber + * @param {Number} value + * @param {String} message + * @api public + */ + + assert.isNumber = function (val, msg) { + new Assertion(val, msg).to.be.a('number'); + }; + + /** + * ### .isNotNumber(value, [message]) + * + * Asserts that `value` is _not_ a number. + * + * var cups = '2 cups please'; + * assert.isNotNumber(cups, 'how many cups'); + * + * @name isNotNumber + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isNotNumber = function (val, msg) { + new Assertion(val, msg).to.not.be.a('number'); + }; + + /** + * ### .isBoolean(value, [message]) + * + * Asserts that `value` is a boolean. + * + * var teaReady = true + * , teaServed = false; + * + * assert.isBoolean(teaReady, 'is the tea ready'); + * assert.isBoolean(teaServed, 'has tea been served'); + * + * @name isBoolean + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isBoolean = function (val, msg) { + new Assertion(val, msg).to.be.a('boolean'); + }; + + /** + * ### .isNotBoolean(value, [message]) + * + * Asserts that `value` is _not_ a boolean. + * + * var teaReady = 'yep' + * , teaServed = 'nope'; + * + * assert.isNotBoolean(teaReady, 'is the tea ready'); + * assert.isNotBoolean(teaServed, 'has tea been served'); + * + * @name isNotBoolean + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.isNotBoolean = function (val, msg) { + new Assertion(val, msg).to.not.be.a('boolean'); + }; + + /** + * ### .typeOf(value, name, [message]) + * + * Asserts that `value`'s type is `name`, as determined by + * `Object.prototype.toString`. + * + * assert.typeOf({ tea: 'chai' }, 'object', 'we have an object'); + * assert.typeOf(['chai', 'jasmine'], 'array', 'we have an array'); + * assert.typeOf('tea', 'string', 'we have a string'); + * assert.typeOf(/tea/, 'regexp', 'we have a regular expression'); + * assert.typeOf(null, 'null', 'we have a null'); + * assert.typeOf(undefined, 'undefined', 'we have an undefined'); + * + * @name typeOf + * @param {Mixed} value + * @param {String} name + * @param {String} message + * @api public + */ + + assert.typeOf = function (val, type, msg) { + new Assertion(val, msg).to.be.a(type); + }; + + /** + * ### .notTypeOf(value, name, [message]) + * + * Asserts that `value`'s type is _not_ `name`, as determined by + * `Object.prototype.toString`. + * + * assert.notTypeOf('tea', 'number', 'strings are not numbers'); + * + * @name notTypeOf + * @param {Mixed} value + * @param {String} typeof name + * @param {String} message + * @api public + */ + + assert.notTypeOf = function (val, type, msg) { + new Assertion(val, msg).to.not.be.a(type); + }; + + /** + * ### .instanceOf(object, constructor, [message]) + * + * Asserts that `value` is an instance of `constructor`. + * + * var Tea = function (name) { this.name = name; } + * , chai = new Tea('chai'); + * + * assert.instanceOf(chai, Tea, 'chai is an instance of tea'); + * + * @name instanceOf + * @param {Object} object + * @param {Constructor} constructor + * @param {String} message + * @api public + */ + + assert.instanceOf = function (val, type, msg) { + new Assertion(val, msg).to.be.instanceOf(type); + }; + + /** + * ### .notInstanceOf(object, constructor, [message]) + * + * Asserts `value` is not an instance of `constructor`. + * + * var Tea = function (name) { this.name = name; } + * , chai = new String('chai'); + * + * assert.notInstanceOf(chai, Tea, 'chai is not an instance of tea'); + * + * @name notInstanceOf + * @param {Object} object + * @param {Constructor} constructor + * @param {String} message + * @api public + */ + + assert.notInstanceOf = function (val, type, msg) { + new Assertion(val, msg).to.not.be.instanceOf(type); + }; + + /** + * ### .include(haystack, needle, [message]) + * + * Asserts that `haystack` includes `needle`. Works + * for strings and arrays. + * + * assert.include('foobar', 'bar', 'foobar contains string "bar"'); + * assert.include([ 1, 2, 3 ], 3, 'array contains value'); + * + * @name include + * @param {Array|String} haystack + * @param {Mixed} needle + * @param {String} message + * @api public + */ + + assert.include = function (exp, inc, msg) { + new Assertion(exp, msg, assert.include).include(inc); + }; + + /** + * ### .notInclude(haystack, needle, [message]) + * + * Asserts that `haystack` does not include `needle`. Works + * for strings and arrays. + *i + * assert.notInclude('foobar', 'baz', 'string not include substring'); + * assert.notInclude([ 1, 2, 3 ], 4, 'array not include contain value'); + * + * @name notInclude + * @param {Array|String} haystack + * @param {Mixed} needle + * @param {String} message + * @api public + */ + + assert.notInclude = function (exp, inc, msg) { + new Assertion(exp, msg, assert.notInclude).not.include(inc); + }; + + /** + * ### .match(value, regexp, [message]) + * + * Asserts that `value` matches the regular expression `regexp`. + * + * assert.match('foobar', /^foo/, 'regexp matches'); + * + * @name match + * @param {Mixed} value + * @param {RegExp} regexp + * @param {String} message + * @api public + */ + + assert.match = function (exp, re, msg) { + new Assertion(exp, msg).to.match(re); + }; + + /** + * ### .notMatch(value, regexp, [message]) + * + * Asserts that `value` does not match the regular expression `regexp`. + * + * assert.notMatch('foobar', /^foo/, 'regexp does not match'); + * + * @name notMatch + * @param {Mixed} value + * @param {RegExp} regexp + * @param {String} message + * @api public + */ + + assert.notMatch = function (exp, re, msg) { + new Assertion(exp, msg).to.not.match(re); + }; + + /** + * ### .property(object, property, [message]) + * + * Asserts that `object` has a property named by `property`. + * + * assert.property({ tea: { green: 'matcha' }}, 'tea'); + * + * @name property + * @param {Object} object + * @param {String} property + * @param {String} message + * @api public + */ + + assert.property = function (obj, prop, msg) { + new Assertion(obj, msg).to.have.property(prop); + }; + + /** + * ### .notProperty(object, property, [message]) + * + * Asserts that `object` does _not_ have a property named by `property`. + * + * assert.notProperty({ tea: { green: 'matcha' }}, 'coffee'); + * + * @name notProperty + * @param {Object} object + * @param {String} property + * @param {String} message + * @api public + */ + + assert.notProperty = function (obj, prop, msg) { + new Assertion(obj, msg).to.not.have.property(prop); + }; + + /** + * ### .deepProperty(object, property, [message]) + * + * Asserts that `object` has a property named by `property`, which can be a + * string using dot- and bracket-notation for deep reference. + * + * assert.deepProperty({ tea: { green: 'matcha' }}, 'tea.green'); + * + * @name deepProperty + * @param {Object} object + * @param {String} property + * @param {String} message + * @api public + */ + + assert.deepProperty = function (obj, prop, msg) { + new Assertion(obj, msg).to.have.deep.property(prop); + }; + + /** + * ### .notDeepProperty(object, property, [message]) + * + * Asserts that `object` does _not_ have a property named by `property`, which + * can be a string using dot- and bracket-notation for deep reference. + * + * assert.notDeepProperty({ tea: { green: 'matcha' }}, 'tea.oolong'); + * + * @name notDeepProperty + * @param {Object} object + * @param {String} property + * @param {String} message + * @api public + */ + + assert.notDeepProperty = function (obj, prop, msg) { + new Assertion(obj, msg).to.not.have.deep.property(prop); + }; + + /** + * ### .propertyVal(object, property, value, [message]) + * + * Asserts that `object` has a property named by `property` with value given + * by `value`. + * + * assert.propertyVal({ tea: 'is good' }, 'tea', 'is good'); + * + * @name propertyVal + * @param {Object} object + * @param {String} property + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.propertyVal = function (obj, prop, val, msg) { + new Assertion(obj, msg).to.have.property(prop, val); + }; + + /** + * ### .propertyNotVal(object, property, value, [message]) + * + * Asserts that `object` has a property named by `property`, but with a value + * different from that given by `value`. + * + * assert.propertyNotVal({ tea: 'is good' }, 'tea', 'is bad'); + * + * @name propertyNotVal + * @param {Object} object + * @param {String} property + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.propertyNotVal = function (obj, prop, val, msg) { + new Assertion(obj, msg).to.not.have.property(prop, val); + }; + + /** + * ### .deepPropertyVal(object, property, value, [message]) + * + * Asserts that `object` has a property named by `property` with value given + * by `value`. `property` can use dot- and bracket-notation for deep + * reference. + * + * assert.deepPropertyVal({ tea: { green: 'matcha' }}, 'tea.green', 'matcha'); + * + * @name deepPropertyVal + * @param {Object} object + * @param {String} property + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.deepPropertyVal = function (obj, prop, val, msg) { + new Assertion(obj, msg).to.have.deep.property(prop, val); + }; + + /** + * ### .deepPropertyNotVal(object, property, value, [message]) + * + * Asserts that `object` has a property named by `property`, but with a value + * different from that given by `value`. `property` can use dot- and + * bracket-notation for deep reference. + * + * assert.deepPropertyNotVal({ tea: { green: 'matcha' }}, 'tea.green', 'konacha'); + * + * @name deepPropertyNotVal + * @param {Object} object + * @param {String} property + * @param {Mixed} value + * @param {String} message + * @api public + */ + + assert.deepPropertyNotVal = function (obj, prop, val, msg) { + new Assertion(obj, msg).to.not.have.deep.property(prop, val); + }; + + /** + * ### .lengthOf(object, length, [message]) + * + * Asserts that `object` has a `length` property with the expected value. + * + * assert.lengthOf([1,2,3], 3, 'array has length of 3'); + * assert.lengthOf('foobar', 5, 'string has length of 6'); + * + * @name lengthOf + * @param {Mixed} object + * @param {Number} length + * @param {String} message + * @api public + */ + + assert.lengthOf = function (exp, len, msg) { + new Assertion(exp, msg).to.have.length(len); + }; + + /** + * ### .throws(function, [constructor/string/regexp], [string/regexp], [message]) + * + * Asserts that `function` will throw an error that is an instance of + * `constructor`, or alternately that it will throw an error with message + * matching `regexp`. + * + * assert.throw(fn, 'function throws a reference error'); + * assert.throw(fn, /function throws a reference error/); + * assert.throw(fn, ReferenceError); + * assert.throw(fn, ReferenceError, 'function throws a reference error'); + * assert.throw(fn, ReferenceError, /function throws a reference error/); + * + * @name throws + * @alias throw + * @alias Throw + * @param {Function} function + * @param {ErrorConstructor} constructor + * @param {RegExp} regexp + * @param {String} message + * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types + * @api public + */ + + assert.Throw = function (fn, errt, errs, msg) { + if ('string' === typeof errt || errt instanceof RegExp) { + errs = errt; + errt = null; + } + + var assertErr = new Assertion(fn, msg).to.Throw(errt, errs); + return flag(assertErr, 'object'); + }; + + /** + * ### .doesNotThrow(function, [constructor/regexp], [message]) + * + * Asserts that `function` will _not_ throw an error that is an instance of + * `constructor`, or alternately that it will not throw an error with message + * matching `regexp`. + * + * assert.doesNotThrow(fn, Error, 'function does not throw'); + * + * @name doesNotThrow + * @param {Function} function + * @param {ErrorConstructor} constructor + * @param {RegExp} regexp + * @param {String} message + * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types + * @api public + */ + + assert.doesNotThrow = function (fn, type, msg) { + if ('string' === typeof type) { + msg = type; + type = null; + } + + new Assertion(fn, msg).to.not.Throw(type); + }; + + /** + * ### .operator(val1, operator, val2, [message]) + * + * Compares two values using `operator`. + * + * assert.operator(1, '<', 2, 'everything is ok'); + * assert.operator(1, '>', 2, 'this will fail'); + * + * @name operator + * @param {Mixed} val1 + * @param {String} operator + * @param {Mixed} val2 + * @param {String} message + * @api public + */ + + assert.operator = function (val, operator, val2, msg) { + if (!~['==', '===', '>', '>=', '<', '<=', '!=', '!=='].indexOf(operator)) { + throw new Error('Invalid operator "' + operator + '"'); + } + var test = new Assertion(eval(val + operator + val2), msg); + test.assert( + true === flag(test, 'object') + , 'expected ' + util.inspect(val) + ' to be ' + operator + ' ' + util.inspect(val2) + , 'expected ' + util.inspect(val) + ' to not be ' + operator + ' ' + util.inspect(val2) ); + }; + + /** + * ### .closeTo(actual, expected, delta, [message]) + * + * Asserts that the target is equal `expected`, to within a +/- `delta` range. + * + * assert.closeTo(1.5, 1, 0.5, 'numbers are close'); + * + * @name closeTo + * @param {Number} actual + * @param {Number} expected + * @param {Number} delta + * @param {String} message + * @api public + */ + + assert.closeTo = function (act, exp, delta, msg) { + new Assertion(act, msg).to.be.closeTo(exp, delta); + }; + + /** + * ### .sameMembers(set1, set2, [message]) + * + * Asserts that `set1` and `set2` have the same members. + * Order is not taken into account. + * + * assert.sameMembers([ 1, 2, 3 ], [ 2, 1, 3 ], 'same members'); + * + * @name sameMembers + * @param {Array} set1 + * @param {Array} set2 + * @param {String} message + * @api public + */ + + assert.sameMembers = function (set1, set2, msg) { + new Assertion(set1, msg).to.have.same.members(set2); + } + + /** + * ### .sameDeepMembers(set1, set2, [message]) + * + * Asserts that `set1` and `set2` have the same members - using a deep equality checking. + * Order is not taken into account. + * + * assert.sameDeepMembers([ {b: 3}, {a: 2}, {c: 5} ], [ {c: 5}, {b: 3}, {a: 2} ], 'same deep members'); + * + * @name sameDeepMembers + * @param {Array} set1 + * @param {Array} set2 + * @param {String} message + * @api public + */ + + assert.sameDeepMembers = function (set1, set2, msg) { + new Assertion(set1, msg).to.have.same.deep.members(set2); + } + + /** + * ### .includeMembers(superset, subset, [message]) + * + * Asserts that `subset` is included in `superset`. + * Order is not taken into account. + * + * assert.includeMembers([ 1, 2, 3 ], [ 2, 1 ], 'include members'); + * + * @name includeMembers + * @param {Array} superset + * @param {Array} subset + * @param {String} message + * @api public + */ + + assert.includeMembers = function (superset, subset, msg) { + new Assertion(superset, msg).to.include.members(subset); + } + + /** + * ### .changes(function, object, property) + * + * Asserts that a function changes the value of a property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 22 }; + * assert.changes(fn, obj, 'val'); + * + * @name changes + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @api public + */ + + assert.changes = function (fn, obj, prop) { + new Assertion(fn).to.change(obj, prop); + } + + /** + * ### .doesNotChange(function, object, property) + * + * Asserts that a function does not changes the value of a property + * + * var obj = { val: 10 }; + * var fn = function() { console.log('foo'); }; + * assert.doesNotChange(fn, obj, 'val'); + * + * @name doesNotChange + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @api public + */ + + assert.doesNotChange = function (fn, obj, prop) { + new Assertion(fn).to.not.change(obj, prop); + } + + /** + * ### .increases(function, object, property) + * + * Asserts that a function increases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 13 }; + * assert.increases(fn, obj, 'val'); + * + * @name increases + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @api public + */ + + assert.increases = function (fn, obj, prop) { + new Assertion(fn).to.increase(obj, prop); + } + + /** + * ### .doesNotIncrease(function, object, property) + * + * Asserts that a function does not increase object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 8 }; + * assert.doesNotIncrease(fn, obj, 'val'); + * + * @name doesNotIncrease + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @api public + */ + + assert.doesNotIncrease = function (fn, obj, prop) { + new Assertion(fn).to.not.increase(obj, prop); + } + + /** + * ### .decreases(function, object, property) + * + * Asserts that a function decreases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 5 }; + * assert.decreases(fn, obj, 'val'); + * + * @name decreases + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @api public + */ + + assert.decreases = function (fn, obj, prop) { + new Assertion(fn).to.decrease(obj, prop); + } + + /** + * ### .doesNotDecrease(function, object, property) + * + * Asserts that a function does not decreases an object property + * + * var obj = { val: 10 }; + * var fn = function() { obj.val = 15 }; + * assert.doesNotDecrease(fn, obj, 'val'); + * + * @name doesNotDecrease + * @param {Function} modifier function + * @param {Object} object + * @param {String} property name + * @param {String} message _optional_ + * @api public + */ + + assert.doesNotDecrease = function (fn, obj, prop) { + new Assertion(fn).to.not.decrease(obj, prop); + } + + /*! + * Undocumented / untested + */ + + assert.ifError = function (val, msg) { + new Assertion(val, msg).to.not.be.ok; + }; + + /*! + * Aliases. + */ + + (function alias(name, as){ + assert[as] = assert[name]; + return alias; + }) + ('Throw', 'throw') + ('Throw', 'throws'); +}; + +}); + +require.register("chai/lib/chai/interface/expect.js", function (exports, module) { +/*! + * chai + * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +module.exports = function (chai, util) { + chai.expect = function (val, message) { + return new chai.Assertion(val, message); + }; + + /** + * ### .fail(actual, expected, [message], [operator]) + * + * Throw a failure. + * + * @name fail + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @param {String} operator + * @api public + */ + + chai.expect.fail = function (actual, expected, message, operator) { + message = message || 'expect.fail()'; + throw new chai.AssertionError(message, { + actual: actual + , expected: expected + , operator: operator + }, chai.expect.fail); + }; +}; + +}); + +require.register("chai/lib/chai/interface/should.js", function (exports, module) { +/*! + * chai + * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +module.exports = function (chai, util) { + var Assertion = chai.Assertion; + + function loadShould () { + // explicitly define this method as function as to have it's name to include as `ssfi` + function shouldGetter() { + if (this instanceof String || this instanceof Number) { + return new Assertion(this.constructor(this), null, shouldGetter); + } else if (this instanceof Boolean) { + return new Assertion(this == true, null, shouldGetter); + } + return new Assertion(this, null, shouldGetter); + } + function shouldSetter(value) { + // See https://github.com/chaijs/chai/issues/86: this makes + // `whatever.should = someValue` actually set `someValue`, which is + // especially useful for `global.should = require('chai').should()`. + // + // Note that we have to use [[DefineProperty]] instead of [[Put]] + // since otherwise we would trigger this very setter! + Object.defineProperty(this, 'should', { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } + // modify Object.prototype to have `should` + Object.defineProperty(Object.prototype, 'should', { + set: shouldSetter + , get: shouldGetter + , configurable: true + }); + + var should = {}; + + /** + * ### .fail(actual, expected, [message], [operator]) + * + * Throw a failure. + * + * @name fail + * @param {Mixed} actual + * @param {Mixed} expected + * @param {String} message + * @param {String} operator + * @api public + */ + + should.fail = function (actual, expected, message, operator) { + message = message || 'should.fail()'; + throw new chai.AssertionError(message, { + actual: actual + , expected: expected + , operator: operator + }, should.fail); + }; + + should.equal = function (val1, val2, msg) { + new Assertion(val1, msg).to.equal(val2); + }; + + should.Throw = function (fn, errt, errs, msg) { + new Assertion(fn, msg).to.Throw(errt, errs); + }; + + should.exist = function (val, msg) { + new Assertion(val, msg).to.exist; + } + + // negation + should.not = {} + + should.not.equal = function (val1, val2, msg) { + new Assertion(val1, msg).to.not.equal(val2); + }; + + should.not.Throw = function (fn, errt, errs, msg) { + new Assertion(fn, msg).to.not.Throw(errt, errs); + }; + + should.not.exist = function (val, msg) { + new Assertion(val, msg).to.not.exist; + } + + should['throw'] = should['Throw']; + should.not['throw'] = should.not['Throw']; + + return should; + }; + + chai.should = loadShould; + chai.Should = loadShould; +}; + +}); + +require.register("chai/lib/chai/utils/addChainableMethod.js", function (exports, module) { +/*! + * Chai - addChainingMethod utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/*! + * Module dependencies + */ + +var transferFlags = require('chai/lib/chai/utils/transferFlags.js'); +var flag = require('chai/lib/chai/utils/flag.js'); +var config = require('chai/lib/chai/config.js'); + +/*! + * Module variables + */ + +// Check whether `__proto__` is supported +var hasProtoSupport = '__proto__' in Object; + +// Without `__proto__` support, this module will need to add properties to a function. +// However, some Function.prototype methods cannot be overwritten, +// and there seems no easy cross-platform way to detect them (@see chaijs/chai/issues/69). +var excludeNames = /^(?:length|name|arguments|caller)$/; + +// Cache `Function` properties +var call = Function.prototype.call, + apply = Function.prototype.apply; + +/** + * ### addChainableMethod (ctx, name, method, chainingBehavior) + * + * Adds a method to an object, such that the method can also be chained. + * + * utils.addChainableMethod(chai.Assertion.prototype, 'foo', function (str) { + * var obj = utils.flag(this, 'object'); + * new chai.Assertion(obj).to.be.equal(str); + * }); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.addChainableMethod('foo', fn, chainingBehavior); + * + * The result can then be used as both a method assertion, executing both `method` and + * `chainingBehavior`, or as a language chain, which only executes `chainingBehavior`. + * + * expect(fooStr).to.be.foo('bar'); + * expect(fooStr).to.be.foo.equal('foo'); + * + * @param {Object} ctx object to which the method is added + * @param {String} name of method to add + * @param {Function} method function to be used for `name`, when called + * @param {Function} chainingBehavior function to be called every time the property is accessed + * @name addChainableMethod + * @api public + */ + +module.exports = function (ctx, name, method, chainingBehavior) { + if (typeof chainingBehavior !== 'function') { + chainingBehavior = function () { }; + } + + var chainableBehavior = { + method: method + , chainingBehavior: chainingBehavior + }; + + // save the methods so we can overwrite them later, if we need to. + if (!ctx.__methods) { + ctx.__methods = {}; + } + ctx.__methods[name] = chainableBehavior; + + Object.defineProperty(ctx, name, + { get: function () { + chainableBehavior.chainingBehavior.call(this); + + var assert = function assert() { + var old_ssfi = flag(this, 'ssfi'); + if (old_ssfi && config.includeStack === false) + flag(this, 'ssfi', assert); + var result = chainableBehavior.method.apply(this, arguments); + return result === undefined ? this : result; + }; + + // Use `__proto__` if available + if (hasProtoSupport) { + // Inherit all properties from the object by replacing the `Function` prototype + var prototype = assert.__proto__ = Object.create(this); + // Restore the `call` and `apply` methods from `Function` + prototype.call = call; + prototype.apply = apply; + } + // Otherwise, redefine all properties (slow!) + else { + var asserterNames = Object.getOwnPropertyNames(ctx); + asserterNames.forEach(function (asserterName) { + if (!excludeNames.test(asserterName)) { + var pd = Object.getOwnPropertyDescriptor(ctx, asserterName); + Object.defineProperty(assert, asserterName, pd); + } + }); + } + + transferFlags(this, assert); + return assert; + } + , configurable: true + }); +}; + +}); + +require.register("chai/lib/chai/utils/addMethod.js", function (exports, module) { +/*! + * Chai - addMethod utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +var config = require('chai/lib/chai/config.js'); + +/** + * ### .addMethod (ctx, name, method) + * + * Adds a method to the prototype of an object. + * + * utils.addMethod(chai.Assertion.prototype, 'foo', function (str) { + * var obj = utils.flag(this, 'object'); + * new chai.Assertion(obj).to.be.equal(str); + * }); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.addMethod('foo', fn); + * + * Then can be used as any other assertion. + * + * expect(fooStr).to.be.foo('bar'); + * + * @param {Object} ctx object to which the method is added + * @param {String} name of method to add + * @param {Function} method function to be used for name + * @name addMethod + * @api public + */ +var flag = require('chai/lib/chai/utils/flag.js'); + +module.exports = function (ctx, name, method) { + ctx[name] = function () { + var old_ssfi = flag(this, 'ssfi'); + if (old_ssfi && config.includeStack === false) + flag(this, 'ssfi', ctx[name]); + var result = method.apply(this, arguments); + return result === undefined ? this : result; + }; +}; + +}); + +require.register("chai/lib/chai/utils/addProperty.js", function (exports, module) { +/*! + * Chai - addProperty utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/** + * ### addProperty (ctx, name, getter) + * + * Adds a property to the prototype of an object. + * + * utils.addProperty(chai.Assertion.prototype, 'foo', function () { + * var obj = utils.flag(this, 'object'); + * new chai.Assertion(obj).to.be.instanceof(Foo); + * }); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.addProperty('foo', fn); + * + * Then can be used as any other assertion. + * + * expect(myFoo).to.be.foo; + * + * @param {Object} ctx object to which the property is added + * @param {String} name of property to add + * @param {Function} getter function to be used for name + * @name addProperty + * @api public + */ + +module.exports = function (ctx, name, getter) { + Object.defineProperty(ctx, name, + { get: function () { + var result = getter.call(this); + return result === undefined ? this : result; + } + , configurable: true + }); +}; + +}); + +require.register("chai/lib/chai/utils/flag.js", function (exports, module) { +/*! + * Chai - flag utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/** + * ### flag(object, key, [value]) + * + * Get or set a flag value on an object. If a + * value is provided it will be set, else it will + * return the currently set value or `undefined` if + * the value is not set. + * + * utils.flag(this, 'foo', 'bar'); // setter + * utils.flag(this, 'foo'); // getter, returns `bar` + * + * @param {Object} object constructed Assertion + * @param {String} key + * @param {Mixed} value (optional) + * @name flag + * @api private + */ + +module.exports = function (obj, key, value) { + var flags = obj.__flags || (obj.__flags = Object.create(null)); + if (arguments.length === 3) { + flags[key] = value; + } else { + return flags[key]; + } +}; + +}); + +require.register("chai/lib/chai/utils/getActual.js", function (exports, module) { +/*! + * Chai - getActual utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/** + * # getActual(object, [actual]) + * + * Returns the `actual` value for an Assertion + * + * @param {Object} object (constructed Assertion) + * @param {Arguments} chai.Assertion.prototype.assert arguments + */ + +module.exports = function (obj, args) { + return args.length > 4 ? args[4] : obj._obj; +}; + +}); + +require.register("chai/lib/chai/utils/getEnumerableProperties.js", function (exports, module) { +/*! + * Chai - getEnumerableProperties utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/** + * ### .getEnumerableProperties(object) + * + * This allows the retrieval of enumerable property names of an object, + * inherited or not. + * + * @param {Object} object + * @returns {Array} + * @name getEnumerableProperties + * @api public + */ + +module.exports = function getEnumerableProperties(object) { + var result = []; + for (var name in object) { + result.push(name); + } + return result; +}; + +}); + +require.register("chai/lib/chai/utils/getMessage.js", function (exports, module) { +/*! + * Chai - message composition utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/*! + * Module dependancies + */ + +var flag = require('chai/lib/chai/utils/flag.js') + , getActual = require('chai/lib/chai/utils/getActual.js') + , inspect = require('chai/lib/chai/utils/inspect.js') + , objDisplay = require('chai/lib/chai/utils/objDisplay.js'); + +/** + * ### .getMessage(object, message, negateMessage) + * + * Construct the error message based on flags + * and template tags. Template tags will return + * a stringified inspection of the object referenced. + * + * Message template tags: + * - `#{this}` current asserted object + * - `#{act}` actual value + * - `#{exp}` expected value + * + * @param {Object} object (constructed Assertion) + * @param {Arguments} chai.Assertion.prototype.assert arguments + * @name getMessage + * @api public + */ + +module.exports = function (obj, args) { + var negate = flag(obj, 'negate') + , val = flag(obj, 'object') + , expected = args[3] + , actual = getActual(obj, args) + , msg = negate ? args[2] : args[1] + , flagMsg = flag(obj, 'message'); + + if(typeof msg === "function") msg = msg(); + msg = msg || ''; + msg = msg + .replace(/#{this}/g, objDisplay(val)) + .replace(/#{act}/g, objDisplay(actual)) + .replace(/#{exp}/g, objDisplay(expected)); + + return flagMsg ? flagMsg + ': ' + msg : msg; +}; + +}); + +require.register("chai/lib/chai/utils/getName.js", function (exports, module) { +/*! + * Chai - getName utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/** + * # getName(func) + * + * Gets the name of a function, in a cross-browser way. + * + * @param {Function} a function (usually a constructor) + */ + +module.exports = function (func) { + if (func.name) return func.name; + + var match = /^\s?function ([^(]*)\(/.exec(func); + return match && match[1] ? match[1] : ""; +}; + +}); + +require.register("chai/lib/chai/utils/getPathValue.js", function (exports, module) { +/*! + * Chai - getPathValue utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * @see https://github.com/logicalparadox/filtr + * MIT Licensed + */ + +var getPathInfo = require('chai/lib/chai/utils/getPathInfo.js'); + +/** + * ### .getPathValue(path, object) + * + * This allows the retrieval of values in an + * object given a string path. + * + * var obj = { + * prop1: { + * arr: ['a', 'b', 'c'] + * , str: 'Hello' + * } + * , prop2: { + * arr: [ { nested: 'Universe' } ] + * , str: 'Hello again!' + * } + * } + * + * The following would be the results. + * + * getPathValue('prop1.str', obj); // Hello + * getPathValue('prop1.att[2]', obj); // b + * getPathValue('prop2.arr[0].nested', obj); // Universe + * + * @param {String} path + * @param {Object} object + * @returns {Object} value or `undefined` + * @name getPathValue + * @api public + */ +module.exports = function(path, obj) { + var info = getPathInfo(path, obj); + return info.value; +}; + +}); + +require.register("chai/lib/chai/utils/getPathInfo.js", function (exports, module) { +/*! + * Chai - getPathInfo utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +var hasProperty = require('chai/lib/chai/utils/hasProperty.js'); + +/** + * ### .getPathInfo(path, object) + * + * This allows the retrieval of property info in an + * object given a string path. + * + * The path info consists of an object with the + * following properties: + * + * * parent - The parent object of the property referenced by `path` + * * name - The name of the final property, a number if it was an array indexer + * * value - The value of the property, if it exists, otherwise `undefined` + * * exists - Whether the property exists or not + * + * @param {String} path + * @param {Object} object + * @returns {Object} info + * @name getPathInfo + * @api public + */ + +module.exports = function getPathInfo(path, obj) { + var parsed = parsePath(path), + last = parsed[parsed.length - 1]; + + var info = { + parent: _getPathValue(parsed, obj, parsed.length - 1), + name: last.p || last.i, + value: _getPathValue(parsed, obj), + }; + info.exists = hasProperty(info.name, info.parent); + + return info; +}; + + +/*! + * ## parsePath(path) + * + * Helper function used to parse string object + * paths. Use in conjunction with `_getPathValue`. + * + * var parsed = parsePath('myobject.property.subprop'); + * + * ### Paths: + * + * * Can be as near infinitely deep and nested + * * Arrays are also valid using the formal `myobject.document[3].property`. + * + * @param {String} path + * @returns {Object} parsed + * @api private + */ + +function parsePath (path) { + var str = path.replace(/\[/g, '.[') + , parts = str.match(/(\\\.|[^.]+?)+/g); + return parts.map(function (value) { + var re = /\[(\d+)\]$/ + , mArr = re.exec(value); + if (mArr) return { i: parseFloat(mArr[1]) }; + else return { p: value }; + }); +} + + +/*! + * ## _getPathValue(parsed, obj) + * + * Helper companion function for `.parsePath` that returns + * the value located at the parsed address. + * + * var value = getPathValue(parsed, obj); + * + * @param {Object} parsed definition from `parsePath`. + * @param {Object} object to search against + * @param {Number} object to search against + * @returns {Object|Undefined} value + * @api private + */ + +function _getPathValue (parsed, obj, index) { + var tmp = obj + , res; + + index = (index === undefined ? parsed.length : index); + + for (var i = 0, l = index; i < l; i++) { + var part = parsed[i]; + if (tmp) { + if ('undefined' !== typeof part.p) + tmp = tmp[part.p]; + else if ('undefined' !== typeof part.i) + tmp = tmp[part.i]; + if (i == (l - 1)) res = tmp; + } else { + res = undefined; + } + } + return res; +} + +}); + +require.register("chai/lib/chai/utils/hasProperty.js", function (exports, module) { +/*! + * Chai - hasProperty utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +var type = require('chai/lib/chai/utils/type.js'); + +/** + * ### .hasProperty(object, name) + * + * This allows checking whether an object has + * named property or numeric array index. + * + * Basically does the same thing as the `in` + * operator but works properly with natives + * and null/undefined values. + * + * var obj = { + * arr: ['a', 'b', 'c'] + * , str: 'Hello' + * } + * + * The following would be the results. + * + * hasProperty('str', obj); // true + * hasProperty('constructor', obj); // true + * hasProperty('bar', obj); // false + * + * hasProperty('length', obj.str); // true + * hasProperty(1, obj.str); // true + * hasProperty(5, obj.str); // false + * + * hasProperty('length', obj.arr); // true + * hasProperty(2, obj.arr); // true + * hasProperty(3, obj.arr); // false + * + * @param {Objuect} object + * @param {String|Number} name + * @returns {Boolean} whether it exists + * @name getPathInfo + * @api public + */ + +var literals = { + 'number': Number + , 'string': String +}; + +module.exports = function hasProperty(name, obj) { + var ot = type(obj); + + // Bad Object, obviously no props at all + if(ot === 'null' || ot === 'undefined') + return false; + + // The `in` operator does not work with certain literals + // box these before the check + if(literals[ot] && typeof obj !== 'object') + obj = new literals[ot](obj); + + return name in obj; +}; + +}); + +require.register("chai/lib/chai/utils/getProperties.js", function (exports, module) { +/*! + * Chai - getProperties utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/** + * ### .getProperties(object) + * + * This allows the retrieval of property names of an object, enumerable or not, + * inherited or not. + * + * @param {Object} object + * @returns {Array} + * @name getProperties + * @api public + */ + +module.exports = function getProperties(object) { + var result = Object.getOwnPropertyNames(subject); + + function addProperty(property) { + if (result.indexOf(property) === -1) { + result.push(property); + } + } + + var proto = Object.getPrototypeOf(subject); + while (proto !== null) { + Object.getOwnPropertyNames(proto).forEach(addProperty); + proto = Object.getPrototypeOf(proto); + } + + return result; +}; + +}); + +require.register("chai/lib/chai/utils/index.js", function (exports, module) { +/*! + * chai + * Copyright(c) 2011 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/*! + * Main exports + */ + +var exports = module.exports = {}; + +/*! + * test utility + */ + +exports.test = require('chai/lib/chai/utils/test.js'); + +/*! + * type utility + */ + +exports.type = require('chai/lib/chai/utils/type.js'); + +/*! + * message utility + */ + +exports.getMessage = require('chai/lib/chai/utils/getMessage.js'); + +/*! + * actual utility + */ + +exports.getActual = require('chai/lib/chai/utils/getActual.js'); + +/*! + * Inspect util + */ + +exports.inspect = require('chai/lib/chai/utils/inspect.js'); + +/*! + * Object Display util + */ + +exports.objDisplay = require('chai/lib/chai/utils/objDisplay.js'); + +/*! + * Flag utility + */ + +exports.flag = require('chai/lib/chai/utils/flag.js'); + +/*! + * Flag transferring utility + */ + +exports.transferFlags = require('chai/lib/chai/utils/transferFlags.js'); + +/*! + * Deep equal utility + */ + +exports.eql = require('chaijs~deep-eql@0.1.3'); + +/*! + * Deep path value + */ + +exports.getPathValue = require('chai/lib/chai/utils/getPathValue.js'); + +/*! + * Deep path info + */ + +exports.getPathInfo = require('chai/lib/chai/utils/getPathInfo.js'); + +/*! + * Check if a property exists + */ + +exports.hasProperty = require('chai/lib/chai/utils/hasProperty.js'); + +/*! + * Function name + */ + +exports.getName = require('chai/lib/chai/utils/getName.js'); + +/*! + * add Property + */ + +exports.addProperty = require('chai/lib/chai/utils/addProperty.js'); + +/*! + * add Method + */ + +exports.addMethod = require('chai/lib/chai/utils/addMethod.js'); + +/*! + * overwrite Property + */ + +exports.overwriteProperty = require('chai/lib/chai/utils/overwriteProperty.js'); + +/*! + * overwrite Method + */ + +exports.overwriteMethod = require('chai/lib/chai/utils/overwriteMethod.js'); + +/*! + * Add a chainable method + */ + +exports.addChainableMethod = require('chai/lib/chai/utils/addChainableMethod.js'); + +/*! + * Overwrite chainable method + */ + +exports.overwriteChainableMethod = require('chai/lib/chai/utils/overwriteChainableMethod.js'); + + +}); + +require.register("chai/lib/chai/utils/inspect.js", function (exports, module) { +// This is (almost) directly from Node.js utils +// https://github.com/joyent/node/blob/f8c335d0caf47f16d31413f89aa28eda3878e3aa/lib/util.js + +var getName = require('chai/lib/chai/utils/getName.js'); +var getProperties = require('chai/lib/chai/utils/getProperties.js'); +var getEnumerableProperties = require('chai/lib/chai/utils/getEnumerableProperties.js'); + +module.exports = inspect; + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Boolean} showHidden Flag that shows hidden (not enumerable) + * properties of objects. + * @param {Number} depth Depth in which to descend in object. Default is 2. + * @param {Boolean} colors Flag to turn on ANSI escape codes to color the + * output. Default is false (no coloring). + */ +function inspect(obj, showHidden, depth, colors) { + var ctx = { + showHidden: showHidden, + seen: [], + stylize: function (str) { return str; } + }; + return formatValue(ctx, obj, (typeof depth === 'undefined' ? 2 : depth)); +} + +// Returns true if object is a DOM element. +var isDOMElement = function (object) { + if (typeof HTMLElement === 'object') { + return object instanceof HTMLElement; + } else { + return object && + typeof object === 'object' && + object.nodeType === 1 && + typeof object.nodeName === 'string'; + } +}; + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (value && typeof value.inspect === 'function' && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes); + if (typeof ret !== 'string') { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // If this is a DOM element, try to get the outer HTML. + if (isDOMElement(value)) { + if ('outerHTML' in value) { + return value.outerHTML; + // This value does not have an outerHTML attribute, + // it could still be an XML element + } else { + // Attempt to serialize it + try { + if (document.xmlVersion) { + var xmlSerializer = new XMLSerializer(); + return xmlSerializer.serializeToString(value); + } else { + // Firefox 11- do not support outerHTML + // It does, however, support innerHTML + // Use the following to render the element + var ns = "http://www.w3.org/1999/xhtml"; + var container = document.createElementNS(ns, '_'); + + container.appendChild(value.cloneNode(false)); + html = container.innerHTML + .replace('><', '>' + value.innerHTML + '<'); + container.innerHTML = ''; + return html; + } + } catch (err) { + // This could be a non-native DOM implementation, + // continue with the normal flow: + // printing the element as if it is an object. + } + } + } + + // Look up the keys of the object. + var visibleKeys = getEnumerableProperties(value); + var keys = ctx.showHidden ? getProperties(value) : visibleKeys; + + // Some type of object without properties can be shortcutted. + // In IE, errors have a single `stack` property, or if they are vanilla `Error`, + // a `stack` plus `description` property; ignore those for consistency. + if (keys.length === 0 || (isError(value) && ( + (keys.length === 1 && keys[0] === 'stack') || + (keys.length === 2 && keys[0] === 'description' && keys[1] === 'stack') + ))) { + if (typeof value === 'function') { + var name = getName(value); + var nameSuffix = name ? ': ' + name : ''; + return ctx.stylize('[Function' + nameSuffix + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toUTCString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (typeof value === 'function') { + var name = getName(value); + var nameSuffix = name ? ': ' + name : ''; + base = ' [Function' + nameSuffix + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + return formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + switch (typeof value) { + case 'undefined': + return ctx.stylize('undefined', 'undefined'); + + case 'string': + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + + case 'number': + if (value === 0 && (1/value) === -Infinity) { + return ctx.stylize('-0', 'number'); + } + return ctx.stylize('' + value, 'number'); + + case 'boolean': + return ctx.stylize('' + value, 'boolean'); + } + // For some reason typeof null is "object", so special case here. + if (value === null) { + return ctx.stylize('null', 'null'); + } +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (Object.prototype.hasOwnProperty.call(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str; + if (value.__lookupGetter__) { + if (value.__lookupGetter__(key)) { + if (value.__lookupSetter__(key)) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (value.__lookupSetter__(key)) { + str = ctx.stylize('[Setter]', 'special'); + } + } + } + if (visibleKeys.indexOf(key) < 0) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(value[key]) < 0) { + if (recurseTimes === null) { + str = formatValue(ctx, value[key], null); + } else { + str = formatValue(ctx, value[key], recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (typeof name === 'undefined') { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + +function isArray(ar) { + return Array.isArray(ar) || + (typeof ar === 'object' && objectToString(ar) === '[object Array]'); +} + +function isRegExp(re) { + return typeof re === 'object' && objectToString(re) === '[object RegExp]'; +} + +function isDate(d) { + return typeof d === 'object' && objectToString(d) === '[object Date]'; +} + +function isError(e) { + return typeof e === 'object' && objectToString(e) === '[object Error]'; +} + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + +}); + +require.register("chai/lib/chai/utils/objDisplay.js", function (exports, module) { +/*! + * Chai - flag utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/*! + * Module dependancies + */ + +var inspect = require('chai/lib/chai/utils/inspect.js'); +var config = require('chai/lib/chai/config.js'); + +/** + * ### .objDisplay (object) + * + * Determines if an object or an array matches + * criteria to be inspected in-line for error + * messages or should be truncated. + * + * @param {Mixed} javascript object to inspect + * @name objDisplay + * @api public + */ + +module.exports = function (obj) { + var str = inspect(obj) + , type = Object.prototype.toString.call(obj); + + if (config.truncateThreshold && str.length >= config.truncateThreshold) { + if (type === '[object Function]') { + return !obj.name || obj.name === '' + ? '[Function]' + : '[Function: ' + obj.name + ']'; + } else if (type === '[object Array]') { + return '[ Array(' + obj.length + ') ]'; + } else if (type === '[object Object]') { + var keys = Object.keys(obj) + , kstr = keys.length > 2 + ? keys.splice(0, 2).join(', ') + ', ...' + : keys.join(', '); + return '{ Object (' + kstr + ') }'; + } else { + return str; + } + } else { + return str; + } +}; + +}); + +require.register("chai/lib/chai/utils/overwriteMethod.js", function (exports, module) { +/*! + * Chai - overwriteMethod utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/** + * ### overwriteMethod (ctx, name, fn) + * + * Overwites an already existing method and provides + * access to previous function. Must return function + * to be used for name. + * + * utils.overwriteMethod(chai.Assertion.prototype, 'equal', function (_super) { + * return function (str) { + * var obj = utils.flag(this, 'object'); + * if (obj instanceof Foo) { + * new chai.Assertion(obj.value).to.equal(str); + * } else { + * _super.apply(this, arguments); + * } + * } + * }); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.overwriteMethod('foo', fn); + * + * Then can be used as any other assertion. + * + * expect(myFoo).to.equal('bar'); + * + * @param {Object} ctx object whose method is to be overwritten + * @param {String} name of method to overwrite + * @param {Function} method function that returns a function to be used for name + * @name overwriteMethod + * @api public + */ + +module.exports = function (ctx, name, method) { + var _method = ctx[name] + , _super = function () { return this; }; + + if (_method && 'function' === typeof _method) + _super = _method; + + ctx[name] = function () { + var result = method(_super).apply(this, arguments); + return result === undefined ? this : result; + } +}; + +}); + +require.register("chai/lib/chai/utils/overwriteProperty.js", function (exports, module) { +/*! + * Chai - overwriteProperty utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/** + * ### overwriteProperty (ctx, name, fn) + * + * Overwites an already existing property getter and provides + * access to previous value. Must return function to use as getter. + * + * utils.overwriteProperty(chai.Assertion.prototype, 'ok', function (_super) { + * return function () { + * var obj = utils.flag(this, 'object'); + * if (obj instanceof Foo) { + * new chai.Assertion(obj.name).to.equal('bar'); + * } else { + * _super.call(this); + * } + * } + * }); + * + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.overwriteProperty('foo', fn); + * + * Then can be used as any other assertion. + * + * expect(myFoo).to.be.ok; + * + * @param {Object} ctx object whose property is to be overwritten + * @param {String} name of property to overwrite + * @param {Function} getter function that returns a getter function to be used for name + * @name overwriteProperty + * @api public + */ + +module.exports = function (ctx, name, getter) { + var _get = Object.getOwnPropertyDescriptor(ctx, name) + , _super = function () {}; + + if (_get && 'function' === typeof _get.get) + _super = _get.get + + Object.defineProperty(ctx, name, + { get: function () { + var result = getter(_super).call(this); + return result === undefined ? this : result; + } + , configurable: true + }); +}; + +}); + +require.register("chai/lib/chai/utils/overwriteChainableMethod.js", function (exports, module) { +/*! + * Chai - overwriteChainableMethod utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/** + * ### overwriteChainableMethod (ctx, name, method, chainingBehavior) + * + * Overwites an already existing chainable method + * and provides access to the previous function or + * property. Must return functions to be used for + * name. + * + * utils.overwriteChainableMethod(chai.Assertion.prototype, 'length', + * function (_super) { + * } + * , function (_super) { + * } + * ); + * + * Can also be accessed directly from `chai.Assertion`. + * + * chai.Assertion.overwriteChainableMethod('foo', fn, fn); + * + * Then can be used as any other assertion. + * + * expect(myFoo).to.have.length(3); + * expect(myFoo).to.have.length.above(3); + * + * @param {Object} ctx object whose method / property is to be overwritten + * @param {String} name of method / property to overwrite + * @param {Function} method function that returns a function to be used for name + * @param {Function} chainingBehavior function that returns a function to be used for property + * @name overwriteChainableMethod + * @api public + */ + +module.exports = function (ctx, name, method, chainingBehavior) { + var chainableBehavior = ctx.__methods[name]; + + var _chainingBehavior = chainableBehavior.chainingBehavior; + chainableBehavior.chainingBehavior = function () { + var result = chainingBehavior(_chainingBehavior).call(this); + return result === undefined ? this : result; + }; + + var _method = chainableBehavior.method; + chainableBehavior.method = function () { + var result = method(_method).apply(this, arguments); + return result === undefined ? this : result; + }; +}; + +}); + +require.register("chai/lib/chai/utils/test.js", function (exports, module) { +/*! + * Chai - test utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/*! + * Module dependancies + */ + +var flag = require('chai/lib/chai/utils/flag.js'); + +/** + * # test(object, expression) + * + * Test and object for expression. + * + * @param {Object} object (constructed Assertion) + * @param {Arguments} chai.Assertion.prototype.assert arguments + */ + +module.exports = function (obj, args) { + var negate = flag(obj, 'negate') + , expr = args[0]; + return negate ? !expr : expr; +}; + +}); + +require.register("chai/lib/chai/utils/transferFlags.js", function (exports, module) { +/*! + * Chai - transferFlags utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/** + * ### transferFlags(assertion, object, includeAll = true) + * + * Transfer all the flags for `assertion` to `object`. If + * `includeAll` is set to `false`, then the base Chai + * assertion flags (namely `object`, `ssfi`, and `message`) + * will not be transferred. + * + * + * var newAssertion = new Assertion(); + * utils.transferFlags(assertion, newAssertion); + * + * var anotherAsseriton = new Assertion(myObj); + * utils.transferFlags(assertion, anotherAssertion, false); + * + * @param {Assertion} assertion the assertion to transfer the flags from + * @param {Object} object the object to transfer the flags to; usually a new assertion + * @param {Boolean} includeAll + * @name transferFlags + * @api private + */ + +module.exports = function (assertion, object, includeAll) { + var flags = assertion.__flags || (assertion.__flags = Object.create(null)); + + if (!object.__flags) { + object.__flags = Object.create(null); + } + + includeAll = arguments.length === 3 ? includeAll : true; + + for (var flag in flags) { + if (includeAll || + (flag !== 'object' && flag !== 'ssfi' && flag != 'message')) { + object.__flags[flag] = flags[flag]; + } + } +}; + +}); + +require.register("chai/lib/chai/utils/type.js", function (exports, module) { +/*! + * Chai - type utility + * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> + * MIT Licensed + */ + +/*! + * Detectable javascript natives + */ + +var natives = { + '[object Arguments]': 'arguments' + , '[object Array]': 'array' + , '[object Date]': 'date' + , '[object Function]': 'function' + , '[object Number]': 'number' + , '[object RegExp]': 'regexp' + , '[object String]': 'string' +}; + +/** + * ### type(object) + * + * Better implementation of `typeof` detection that can + * be used cross-browser. Handles the inconsistencies of + * Array, `null`, and `undefined` detection. + * + * utils.type({}) // 'object' + * utils.type(null) // `null' + * utils.type(undefined) // `undefined` + * utils.type([]) // `array` + * + * @param {Mixed} object to detect type of + * @name type + * @api private + */ + +module.exports = function (obj) { + var str = Object.prototype.toString.call(obj); + if (natives[str]) return natives[str]; + if (obj === null) return 'null'; + if (obj === undefined) return 'undefined'; + if (obj === Object(obj)) return 'object'; + return typeof obj; +}; + +}); + +if (typeof exports == "object") { + module.exports = require("chai"); +} else if (typeof define == "function" && define.amd) { + define("chai", [], function(){ return require("chai"); }); +} else { + (this || window)["chai"] = require("chai"); +} +})() \ No newline at end of file diff --git a/libraries/foundation-6/test/javascript/lib/mocha.css b/libraries/foundation-6/test/javascript/lib/mocha.css new file mode 100755 index 00000000..3b82ae91 --- /dev/null +++ b/libraries/foundation-6/test/javascript/lib/mocha.css @@ -0,0 +1,305 @@ +@charset "utf-8"; + +body { + margin:0; +} + +#mocha { + font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif; + margin: 60px 50px; +} + +#mocha ul, +#mocha li { + margin: 0; + padding: 0; +} + +#mocha ul { + list-style: none; +} + +#mocha h1, +#mocha h2 { + margin: 0; +} + +#mocha h1 { + margin-top: 15px; + font-size: 1em; + font-weight: 200; +} + +#mocha h1 a { + text-decoration: none; + color: inherit; +} + +#mocha h1 a:hover { + text-decoration: underline; +} + +#mocha .suite .suite h1 { + margin-top: 0; + font-size: .8em; +} + +#mocha .hidden { + display: none; +} + +#mocha h2 { + font-size: 12px; + font-weight: normal; + cursor: pointer; +} + +#mocha .suite { + margin-left: 15px; +} + +#mocha .test { + margin-left: 15px; + overflow: hidden; +} + +#mocha .test.pending:hover h2::after { + content: '(pending)'; + font-family: arial, sans-serif; +} + +#mocha .test.pass.medium .duration { + background: #c09853; +} + +#mocha .test.pass.slow .duration { + background: #b94a48; +} + +#mocha .test.pass::before { + content: '✓'; + font-size: 12px; + display: block; + float: left; + margin-right: 5px; + color: #00d6b2; +} + +#mocha .test.pass .duration { + font-size: 9px; + margin-left: 5px; + padding: 2px 5px; + color: #fff; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.2); + -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.2); + box-shadow: inset 0 1px 1px rgba(0,0,0,.2); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +#mocha .test.pass.fast .duration { + display: none; +} + +#mocha .test.pending { + color: #0b97c4; +} + +#mocha .test.pending::before { + content: 'â—¦'; + color: #0b97c4; +} + +#mocha .test.fail { + color: #c00; +} + +#mocha .test.fail pre { + color: black; +} + +#mocha .test.fail::before { + content: '✖'; + font-size: 12px; + display: block; + float: left; + margin-right: 5px; + color: #c00; +} + +#mocha .test pre.error { + color: #c00; + max-height: 300px; + overflow: auto; +} + +#mocha .test .html-error { + overflow: auto; + color: black; + line-height: 1.5; + display: block; + float: left; + clear: left; + font: 12px/1.5 monaco, monospace; + margin: 5px; + padding: 15px; + border: 1px solid #eee; + max-width: 85%; /*(1)*/ + max-width: calc(100% - 42px); /*(2)*/ + max-height: 300px; + word-wrap: break-word; + border-bottom-color: #ddd; + -webkit-border-radius: 3px; + -webkit-box-shadow: 0 1px 3px #eee; + -moz-border-radius: 3px; + -moz-box-shadow: 0 1px 3px #eee; + border-radius: 3px; +} + +#mocha .test .html-error pre.error { + border: none; + -webkit-border-radius: none; + -webkit-box-shadow: none; + -moz-border-radius: none; + -moz-box-shadow: none; + padding: 0; + margin: 0; + margin-top: 18px; + max-height: none; +} + +/** + * (1): approximate for browsers not supporting calc + * (2): 42 = 2*15 + 2*10 + 2*1 (padding + margin + border) + * ^^ seriously + */ +#mocha .test pre { + display: block; + float: left; + clear: left; + font: 12px/1.5 monaco, monospace; + margin: 5px; + padding: 15px; + border: 1px solid #eee; + max-width: 85%; /*(1)*/ + max-width: calc(100% - 42px); /*(2)*/ + word-wrap: break-word; + border-bottom-color: #ddd; + -webkit-border-radius: 3px; + -webkit-box-shadow: 0 1px 3px #eee; + -moz-border-radius: 3px; + -moz-box-shadow: 0 1px 3px #eee; + border-radius: 3px; +} + +#mocha .test h2 { + position: relative; +} + +#mocha .test a.replay { + position: absolute; + top: 3px; + right: 0; + text-decoration: none; + vertical-align: middle; + display: block; + width: 15px; + height: 15px; + line-height: 15px; + text-align: center; + background: #eee; + font-size: 15px; + -moz-border-radius: 15px; + border-radius: 15px; + -webkit-transition: opacity 200ms; + -moz-transition: opacity 200ms; + transition: opacity 200ms; + opacity: 0.3; + color: #888; +} + +#mocha .test:hover a.replay { + opacity: 1; +} + +#mocha-report.pass .test.fail { + display: none; +} + +#mocha-report.fail .test.pass { + display: none; +} + +#mocha-report.pending .test.pass, +#mocha-report.pending .test.fail { + display: none; +} +#mocha-report.pending .test.pass.pending { + display: block; +} + +#mocha-error { + color: #c00; + font-size: 1.5em; + font-weight: 100; + letter-spacing: 1px; +} + +#mocha-stats { + position: fixed; + top: 15px; + right: 10px; + font-size: 12px; + margin: 0; + color: #888; + z-index: 1; +} + +#mocha-stats .progress { + float: right; + padding-top: 0; +} + +#mocha-stats em { + color: black; +} + +#mocha-stats a { + text-decoration: none; + color: inherit; +} + +#mocha-stats a:hover { + border-bottom: 1px solid #eee; +} + +#mocha-stats li { + display: inline-block; + margin: 0 5px; + list-style: none; + padding-top: 11px; +} + +#mocha-stats canvas { + width: 40px; + height: 40px; +} + +#mocha code .comment { color: #ddd; } +#mocha code .init { color: #2f6fad; } +#mocha code .string { color: #5890ad; } +#mocha code .keyword { color: #8a6343; } +#mocha code .number { color: #2f6fad; } + +@media screen and (max-device-width: 480px) { + #mocha { + margin: 60px 0px; + } + + #mocha #stats { + position: absolute; + } +} diff --git a/libraries/foundation-6/test/javascript/lib/mocha.js b/libraries/foundation-6/test/javascript/lib/mocha.js new file mode 100755 index 00000000..84c384bd --- /dev/null +++ b/libraries/foundation-6/test/javascript/lib/mocha.js @@ -0,0 +1,12417 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ +(function (process){ +module.exports = process.env.COV + ? require('./lib-cov/mocha') + : require('./lib/mocha'); + +}).call(this,require('_process')) +},{"./lib-cov/mocha":undefined,"./lib/mocha":14,"_process":51}],2:[function(require,module,exports){ +/* eslint-disable no-unused-vars */ +module.exports = function(type) { + return function() {}; +}; + +},{}],3:[function(require,module,exports){ +/** + * Module exports. + */ + +exports.EventEmitter = EventEmitter; + +/** + * Object#hasOwnProperty reference. + */ +var objToString = Object.prototype.toString; + +/** + * Check if a value is an array. + * + * @api private + * @param {*} val The value to test. + * @return {boolean} true if the value is a boolean, otherwise false. + */ +function isArray(val) { + return objToString.call(val) === '[object Array]'; +} + +/** + * Event emitter constructor. + * + * @api public + */ +function EventEmitter() {} + +/** + * Add a listener. + * + * @api public + * @param {string} name Event name. + * @param {Function} fn Event handler. + * @return {EventEmitter} Emitter instance. + */ +EventEmitter.prototype.on = function(name, fn) { + if (!this.$events) { + this.$events = {}; + } + + if (!this.$events[name]) { + this.$events[name] = fn; + } else if (isArray(this.$events[name])) { + this.$events[name].push(fn); + } else { + this.$events[name] = [this.$events[name], fn]; + } + + return this; +}; + +EventEmitter.prototype.addListener = EventEmitter.prototype.on; + +/** + * Adds a volatile listener. + * + * @api public + * @param {string} name Event name. + * @param {Function} fn Event handler. + * @return {EventEmitter} Emitter instance. + */ +EventEmitter.prototype.once = function(name, fn) { + var self = this; + + function on() { + self.removeListener(name, on); + fn.apply(this, arguments); + } + + on.listener = fn; + this.on(name, on); + + return this; +}; + +/** + * Remove a listener. + * + * @api public + * @param {string} name Event name. + * @param {Function} fn Event handler. + * @return {EventEmitter} Emitter instance. + */ +EventEmitter.prototype.removeListener = function(name, fn) { + if (this.$events && this.$events[name]) { + var list = this.$events[name]; + + if (isArray(list)) { + var pos = -1; + + for (var i = 0, l = list.length; i < l; i++) { + if (list[i] === fn || (list[i].listener && list[i].listener === fn)) { + pos = i; + break; + } + } + + if (pos < 0) { + return this; + } + + list.splice(pos, 1); + + if (!list.length) { + delete this.$events[name]; + } + } else if (list === fn || (list.listener && list.listener === fn)) { + delete this.$events[name]; + } + } + + return this; +}; + +/** + * Remove all listeners for an event. + * + * @api public + * @param {string} name Event name. + * @return {EventEmitter} Emitter instance. + */ +EventEmitter.prototype.removeAllListeners = function(name) { + if (name === undefined) { + this.$events = {}; + return this; + } + + if (this.$events && this.$events[name]) { + this.$events[name] = null; + } + + return this; +}; + +/** + * Get all listeners for a given event. + * + * @api public + * @param {string} name Event name. + * @return {EventEmitter} Emitter instance. + */ +EventEmitter.prototype.listeners = function(name) { + if (!this.$events) { + this.$events = {}; + } + + if (!this.$events[name]) { + this.$events[name] = []; + } + + if (!isArray(this.$events[name])) { + this.$events[name] = [this.$events[name]]; + } + + return this.$events[name]; +}; + +/** + * Emit an event. + * + * @api public + * @param {string} name Event name. + * @return {boolean} true if at least one handler was invoked, else false. + */ +EventEmitter.prototype.emit = function(name) { + if (!this.$events) { + return false; + } + + var handler = this.$events[name]; + + if (!handler) { + return false; + } + + var args = Array.prototype.slice.call(arguments, 1); + + if (typeof handler === 'function') { + handler.apply(this, args); + } else if (isArray(handler)) { + var listeners = handler.slice(); + + for (var i = 0, l = listeners.length; i < l; i++) { + listeners[i].apply(this, args); + } + } else { + return false; + } + + return true; +}; + +},{}],4:[function(require,module,exports){ +/** + * Expose `Progress`. + */ + +module.exports = Progress; + +/** + * Initialize a new `Progress` indicator. + */ +function Progress() { + this.percent = 0; + this.size(0); + this.fontSize(11); + this.font('helvetica, arial, sans-serif'); +} + +/** + * Set progress size to `size`. + * + * @api public + * @param {number} size + * @return {Progress} Progress instance. + */ +Progress.prototype.size = function(size) { + this._size = size; + return this; +}; + +/** + * Set text to `text`. + * + * @api public + * @param {string} text + * @return {Progress} Progress instance. + */ +Progress.prototype.text = function(text) { + this._text = text; + return this; +}; + +/** + * Set font size to `size`. + * + * @api public + * @param {number} size + * @return {Progress} Progress instance. + */ +Progress.prototype.fontSize = function(size) { + this._fontSize = size; + return this; +}; + +/** + * Set font to `family`. + * + * @param {string} family + * @return {Progress} Progress instance. + */ +Progress.prototype.font = function(family) { + this._font = family; + return this; +}; + +/** + * Update percentage to `n`. + * + * @param {number} n + * @return {Progress} Progress instance. + */ +Progress.prototype.update = function(n) { + this.percent = n; + return this; +}; + +/** + * Draw on `ctx`. + * + * @param {CanvasRenderingContext2d} ctx + * @return {Progress} Progress instance. + */ +Progress.prototype.draw = function(ctx) { + try { + var percent = Math.min(this.percent, 100); + var size = this._size; + var half = size / 2; + var x = half; + var y = half; + var rad = half - 1; + var fontSize = this._fontSize; + + ctx.font = fontSize + 'px ' + this._font; + + var angle = Math.PI * 2 * (percent / 100); + ctx.clearRect(0, 0, size, size); + + // outer circle + ctx.strokeStyle = '#9f9f9f'; + ctx.beginPath(); + ctx.arc(x, y, rad, 0, angle, false); + ctx.stroke(); + + // inner circle + ctx.strokeStyle = '#eee'; + ctx.beginPath(); + ctx.arc(x, y, rad - 1, 0, angle, true); + ctx.stroke(); + + // text + var text = this._text || (percent | 0) + '%'; + var w = ctx.measureText(text).width; + + ctx.fillText(text, x - w / 2 + 1, y + fontSize / 2 - 1); + } catch (err) { + // don't fail if we can't render progress + } + return this; +}; + +},{}],5:[function(require,module,exports){ +(function (global){ +exports.isatty = function isatty() { + return true; +}; + +exports.getWindowSize = function getWindowSize() { + if ('innerHeight' in global) { + return [global.innerHeight, global.innerWidth]; + } + // In a Web Worker, the DOM Window is not available. + return [640, 480]; +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],6:[function(require,module,exports){ +/** + * Expose `Context`. + */ + +module.exports = Context; + +/** + * Initialize a new `Context`. + * + * @api private + */ +function Context() {} + +/** + * Set or get the context `Runnable` to `runnable`. + * + * @api private + * @param {Runnable} runnable + * @return {Context} + */ +Context.prototype.runnable = function(runnable) { + if (!arguments.length) { + return this._runnable; + } + this.test = this._runnable = runnable; + return this; +}; + +/** + * Set test timeout `ms`. + * + * @api private + * @param {number} ms + * @return {Context} self + */ +Context.prototype.timeout = function(ms) { + if (!arguments.length) { + return this.runnable().timeout(); + } + this.runnable().timeout(ms); + return this; +}; + +/** + * Set test timeout `enabled`. + * + * @api private + * @param {boolean} enabled + * @return {Context} self + */ +Context.prototype.enableTimeouts = function(enabled) { + this.runnable().enableTimeouts(enabled); + return this; +}; + +/** + * Set test slowness threshold `ms`. + * + * @api private + * @param {number} ms + * @return {Context} self + */ +Context.prototype.slow = function(ms) { + this.runnable().slow(ms); + return this; +}; + +/** + * Mark a test as skipped. + * + * @api private + * @return {Context} self + */ +Context.prototype.skip = function() { + this.runnable().skip(); + return this; +}; + +/** + * Inspect the context void of `._runnable`. + * + * @api private + * @return {string} + */ +Context.prototype.inspect = function() { + return JSON.stringify(this, function(key, val) { + return key === 'runnable' || key === 'test' ? undefined : val; + }, 2); +}; + +},{}],7:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var Runnable = require('./runnable'); +var inherits = require('./utils').inherits; + +/** + * Expose `Hook`. + */ + +module.exports = Hook; + +/** + * Initialize a new `Hook` with the given `title` and callback `fn`. + * + * @param {String} title + * @param {Function} fn + * @api private + */ +function Hook(title, fn) { + Runnable.call(this, title, fn); + this.type = 'hook'; +} + +/** + * Inherit from `Runnable.prototype`. + */ +inherits(Hook, Runnable); + +/** + * Get or set the test `err`. + * + * @param {Error} err + * @return {Error} + * @api public + */ +Hook.prototype.error = function(err) { + if (!arguments.length) { + err = this._error; + this._error = null; + return err; + } + + this._error = err; +}; + +},{"./runnable":35,"./utils":39}],8:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var Suite = require('../suite'); +var Test = require('../test'); +var escapeRe = require('escape-string-regexp'); + +/** + * BDD-style interface: + * + * describe('Array', function() { + * describe('#indexOf()', function() { + * it('should return -1 when not present', function() { + * // ... + * }); + * + * it('should return the index when present', function() { + * // ... + * }); + * }); + * }); + * + * @param {Suite} suite Root suite. + */ +module.exports = function(suite) { + var suites = [suite]; + + suite.on('pre-require', function(context, file, mocha) { + var common = require('./common')(suites, context); + + context.before = common.before; + context.after = common.after; + context.beforeEach = common.beforeEach; + context.afterEach = common.afterEach; + context.run = mocha.options.delay && common.runWithSuite(suite); + /** + * Describe a "suite" with the given `title` + * and callback `fn` containing nested suites + * and/or tests. + */ + + context.describe = context.context = function(title, fn) { + var suite = Suite.create(suites[0], title); + suite.file = file; + suites.unshift(suite); + fn.call(suite); + suites.shift(); + return suite; + }; + + /** + * Pending describe. + */ + + context.xdescribe = context.xcontext = context.describe.skip = function(title, fn) { + var suite = Suite.create(suites[0], title); + suite.pending = true; + suites.unshift(suite); + fn.call(suite); + suites.shift(); + }; + + /** + * Exclusive suite. + */ + + context.describe.only = function(title, fn) { + var suite = context.describe(title, fn); + mocha.grep(suite.fullTitle()); + return suite; + }; + + /** + * Describe a specification or test-case + * with the given `title` and callback `fn` + * acting as a thunk. + */ + + context.it = context.specify = function(title, fn) { + var suite = suites[0]; + if (suite.pending) { + fn = null; + } + var test = new Test(title, fn); + test.file = file; + suite.addTest(test); + return test; + }; + + /** + * Exclusive test-case. + */ + + context.it.only = function(title, fn) { + var test = context.it(title, fn); + var reString = '^' + escapeRe(test.fullTitle()) + '$'; + mocha.grep(new RegExp(reString)); + return test; + }; + + /** + * Pending test case. + */ + + context.xit = context.xspecify = context.it.skip = function(title) { + context.it(title); + }; + }); +}; + +},{"../suite":37,"../test":38,"./common":9,"escape-string-regexp":68}],9:[function(require,module,exports){ +'use strict'; + +/** + * Functions common to more than one interface. + * + * @param {Suite[]} suites + * @param {Context} context + * @return {Object} An object containing common functions. + */ +module.exports = function(suites, context) { + return { + /** + * This is only present if flag --delay is passed into Mocha. It triggers + * root suite execution. + * + * @param {Suite} suite The root wuite. + * @return {Function} A function which runs the root suite + */ + runWithSuite: function runWithSuite(suite) { + return function run() { + suite.run(); + }; + }, + + /** + * Execute before running tests. + * + * @param {string} name + * @param {Function} fn + */ + before: function(name, fn) { + suites[0].beforeAll(name, fn); + }, + + /** + * Execute after running tests. + * + * @param {string} name + * @param {Function} fn + */ + after: function(name, fn) { + suites[0].afterAll(name, fn); + }, + + /** + * Execute before each test case. + * + * @param {string} name + * @param {Function} fn + */ + beforeEach: function(name, fn) { + suites[0].beforeEach(name, fn); + }, + + /** + * Execute after each test case. + * + * @param {string} name + * @param {Function} fn + */ + afterEach: function(name, fn) { + suites[0].afterEach(name, fn); + }, + + test: { + /** + * Pending test case. + * + * @param {string} title + */ + skip: function(title) { + context.test(title); + } + } + }; +}; + +},{}],10:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var Suite = require('../suite'); +var Test = require('../test'); + +/** + * TDD-style interface: + * + * exports.Array = { + * '#indexOf()': { + * 'should return -1 when the value is not present': function() { + * + * }, + * + * 'should return the correct index when the value is present': function() { + * + * } + * } + * }; + * + * @param {Suite} suite Root suite. + */ +module.exports = function(suite) { + var suites = [suite]; + + suite.on('require', visit); + + function visit(obj, file) { + var suite; + for (var key in obj) { + if (typeof obj[key] === 'function') { + var fn = obj[key]; + switch (key) { + case 'before': + suites[0].beforeAll(fn); + break; + case 'after': + suites[0].afterAll(fn); + break; + case 'beforeEach': + suites[0].beforeEach(fn); + break; + case 'afterEach': + suites[0].afterEach(fn); + break; + default: + var test = new Test(key, fn); + test.file = file; + suites[0].addTest(test); + } + } else { + suite = Suite.create(suites[0], key); + suites.unshift(suite); + visit(obj[key]); + suites.shift(); + } + } + } +}; + +},{"../suite":37,"../test":38}],11:[function(require,module,exports){ +exports.bdd = require('./bdd'); +exports.tdd = require('./tdd'); +exports.qunit = require('./qunit'); +exports.exports = require('./exports'); + +},{"./bdd":8,"./exports":10,"./qunit":12,"./tdd":13}],12:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var Suite = require('../suite'); +var Test = require('../test'); +var escapeRe = require('escape-string-regexp'); + +/** + * QUnit-style interface: + * + * suite('Array'); + * + * test('#length', function() { + * var arr = [1,2,3]; + * ok(arr.length == 3); + * }); + * + * test('#indexOf()', function() { + * var arr = [1,2,3]; + * ok(arr.indexOf(1) == 0); + * ok(arr.indexOf(2) == 1); + * ok(arr.indexOf(3) == 2); + * }); + * + * suite('String'); + * + * test('#length', function() { + * ok('foo'.length == 3); + * }); + * + * @param {Suite} suite Root suite. + */ +module.exports = function(suite) { + var suites = [suite]; + + suite.on('pre-require', function(context, file, mocha) { + var common = require('./common')(suites, context); + + context.before = common.before; + context.after = common.after; + context.beforeEach = common.beforeEach; + context.afterEach = common.afterEach; + context.run = mocha.options.delay && common.runWithSuite(suite); + /** + * Describe a "suite" with the given `title`. + */ + + context.suite = function(title) { + if (suites.length > 1) { + suites.shift(); + } + var suite = Suite.create(suites[0], title); + suite.file = file; + suites.unshift(suite); + return suite; + }; + + /** + * Exclusive test-case. + */ + + context.suite.only = function(title, fn) { + var suite = context.suite(title, fn); + mocha.grep(suite.fullTitle()); + }; + + /** + * Describe a specification or test-case + * with the given `title` and callback `fn` + * acting as a thunk. + */ + + context.test = function(title, fn) { + var test = new Test(title, fn); + test.file = file; + suites[0].addTest(test); + return test; + }; + + /** + * Exclusive test-case. + */ + + context.test.only = function(title, fn) { + var test = context.test(title, fn); + var reString = '^' + escapeRe(test.fullTitle()) + '$'; + mocha.grep(new RegExp(reString)); + }; + + context.test.skip = common.test.skip; + }); +}; + +},{"../suite":37,"../test":38,"./common":9,"escape-string-regexp":68}],13:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var Suite = require('../suite'); +var Test = require('../test'); +var escapeRe = require('escape-string-regexp'); + +/** + * TDD-style interface: + * + * suite('Array', function() { + * suite('#indexOf()', function() { + * suiteSetup(function() { + * + * }); + * + * test('should return -1 when not present', function() { + * + * }); + * + * test('should return the index when present', function() { + * + * }); + * + * suiteTeardown(function() { + * + * }); + * }); + * }); + * + * @param {Suite} suite Root suite. + */ +module.exports = function(suite) { + var suites = [suite]; + + suite.on('pre-require', function(context, file, mocha) { + var common = require('./common')(suites, context); + + context.setup = common.beforeEach; + context.teardown = common.afterEach; + context.suiteSetup = common.before; + context.suiteTeardown = common.after; + context.run = mocha.options.delay && common.runWithSuite(suite); + + /** + * Describe a "suite" with the given `title` and callback `fn` containing + * nested suites and/or tests. + */ + context.suite = function(title, fn) { + var suite = Suite.create(suites[0], title); + suite.file = file; + suites.unshift(suite); + fn.call(suite); + suites.shift(); + return suite; + }; + + /** + * Pending suite. + */ + context.suite.skip = function(title, fn) { + var suite = Suite.create(suites[0], title); + suite.pending = true; + suites.unshift(suite); + fn.call(suite); + suites.shift(); + }; + + /** + * Exclusive test-case. + */ + context.suite.only = function(title, fn) { + var suite = context.suite(title, fn); + mocha.grep(suite.fullTitle()); + }; + + /** + * Describe a specification or test-case with the given `title` and + * callback `fn` acting as a thunk. + */ + context.test = function(title, fn) { + var suite = suites[0]; + if (suite.pending) { + fn = null; + } + var test = new Test(title, fn); + test.file = file; + suite.addTest(test); + return test; + }; + + /** + * Exclusive test-case. + */ + + context.test.only = function(title, fn) { + var test = context.test(title, fn); + var reString = '^' + escapeRe(test.fullTitle()) + '$'; + mocha.grep(new RegExp(reString)); + }; + + context.test.skip = common.test.skip; + }); +}; + +},{"../suite":37,"../test":38,"./common":9,"escape-string-regexp":68}],14:[function(require,module,exports){ +(function (process,global,__dirname){ +/*! + * mocha + * Copyright(c) 2011 TJ Holowaychuk <tj@vision-media.ca> + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var escapeRe = require('escape-string-regexp'); +var path = require('path'); +var reporters = require('./reporters'); +var utils = require('./utils'); + +/** + * Expose `Mocha`. + */ + +exports = module.exports = Mocha; + +/** + * To require local UIs and reporters when running in node. + */ + +if (!process.browser) { + var cwd = process.cwd(); + module.paths.push(cwd, path.join(cwd, 'node_modules')); +} + +/** + * Expose internals. + */ + +exports.utils = utils; +exports.interfaces = require('./interfaces'); +exports.reporters = reporters; +exports.Runnable = require('./runnable'); +exports.Context = require('./context'); +exports.Runner = require('./runner'); +exports.Suite = require('./suite'); +exports.Hook = require('./hook'); +exports.Test = require('./test'); + +/** + * Return image `name` path. + * + * @api private + * @param {string} name + * @return {string} + */ +function image(name) { + return path.join(__dirname, '../images', name + '.png'); +} + +/** + * Set up mocha with `options`. + * + * Options: + * + * - `ui` name "bdd", "tdd", "exports" etc + * - `reporter` reporter instance, defaults to `mocha.reporters.spec` + * - `globals` array of accepted globals + * - `timeout` timeout in milliseconds + * - `bail` bail on the first test failure + * - `slow` milliseconds to wait before considering a test slow + * - `ignoreLeaks` ignore global leaks + * - `fullTrace` display the full stack-trace on failing + * - `grep` string or regexp to filter tests with + * + * @param {Object} options + * @api public + */ +function Mocha(options) { + options = options || {}; + this.files = []; + this.options = options; + if (options.grep) { + this.grep(new RegExp(options.grep)); + } + if (options.fgrep) { + this.grep(options.fgrep); + } + this.suite = new exports.Suite('', new exports.Context()); + this.ui(options.ui); + this.bail(options.bail); + this.reporter(options.reporter, options.reporterOptions); + if (typeof options.timeout !== 'undefined' && options.timeout !== null) { + this.timeout(options.timeout); + } + this.useColors(options.useColors); + if (options.enableTimeouts !== null) { + this.enableTimeouts(options.enableTimeouts); + } + if (options.slow) { + this.slow(options.slow); + } + + this.suite.on('pre-require', function(context) { + exports.afterEach = context.afterEach || context.teardown; + exports.after = context.after || context.suiteTeardown; + exports.beforeEach = context.beforeEach || context.setup; + exports.before = context.before || context.suiteSetup; + exports.describe = context.describe || context.suite; + exports.it = context.it || context.test; + exports.setup = context.setup || context.beforeEach; + exports.suiteSetup = context.suiteSetup || context.before; + exports.suiteTeardown = context.suiteTeardown || context.after; + exports.suite = context.suite || context.describe; + exports.teardown = context.teardown || context.afterEach; + exports.test = context.test || context.it; + exports.run = context.run; + }); +} + +/** + * Enable or disable bailing on the first failure. + * + * @api public + * @param {boolean} [bail] + */ +Mocha.prototype.bail = function(bail) { + if (!arguments.length) { + bail = true; + } + this.suite.bail(bail); + return this; +}; + +/** + * Add test `file`. + * + * @api public + * @param {string} file + */ +Mocha.prototype.addFile = function(file) { + this.files.push(file); + return this; +}; + +/** + * Set reporter to `reporter`, defaults to "spec". + * + * @param {String|Function} reporter name or constructor + * @param {Object} reporterOptions optional options + * @api public + * @param {string|Function} reporter name or constructor + * @param {Object} reporterOptions optional options + */ +Mocha.prototype.reporter = function(reporter, reporterOptions) { + if (typeof reporter === 'function') { + this._reporter = reporter; + } else { + reporter = reporter || 'spec'; + var _reporter; + // Try to load a built-in reporter. + if (reporters[reporter]) { + _reporter = reporters[reporter]; + } + // Try to load reporters from process.cwd() and node_modules + if (!_reporter) { + try { + _reporter = require(reporter); + } catch (err) { + err.message.indexOf('Cannot find module') !== -1 + ? console.warn('"' + reporter + '" reporter not found') + : console.warn('"' + reporter + '" reporter blew up with error:\n' + err.stack); + } + } + if (!_reporter && reporter === 'teamcity') { + console.warn('The Teamcity reporter was moved to a package named ' + + 'mocha-teamcity-reporter ' + + '(https://npmjs.org/package/mocha-teamcity-reporter).'); + } + if (!_reporter) { + throw new Error('invalid reporter "' + reporter + '"'); + } + this._reporter = _reporter; + } + this.options.reporterOptions = reporterOptions; + return this; +}; + +/** + * Set test UI `name`, defaults to "bdd". + * + * @api public + * @param {string} bdd + */ +Mocha.prototype.ui = function(name) { + name = name || 'bdd'; + this._ui = exports.interfaces[name]; + if (!this._ui) { + try { + this._ui = require(name); + } catch (err) { + throw new Error('invalid interface "' + name + '"'); + } + } + this._ui = this._ui(this.suite); + return this; +}; + +/** + * Load registered files. + * + * @api private + */ +Mocha.prototype.loadFiles = function(fn) { + var self = this; + var suite = this.suite; + var pending = this.files.length; + this.files.forEach(function(file) { + file = path.resolve(file); + suite.emit('pre-require', global, file, self); + suite.emit('require', require(file), file, self); + suite.emit('post-require', global, file, self); + --pending || (fn && fn()); + }); +}; + +/** + * Enable growl support. + * + * @api private + */ +Mocha.prototype._growl = function(runner, reporter) { + var notify = require('growl'); + + runner.on('end', function() { + var stats = reporter.stats; + if (stats.failures) { + var msg = stats.failures + ' of ' + runner.total + ' tests failed'; + notify(msg, { name: 'mocha', title: 'Failed', image: image('error') }); + } else { + notify(stats.passes + ' tests passed in ' + stats.duration + 'ms', { + name: 'mocha', + title: 'Passed', + image: image('ok') + }); + } + }); +}; + +/** + * Add regexp to grep, if `re` is a string it is escaped. + * + * @param {RegExp|String} re + * @return {Mocha} + * @api public + * @param {RegExp|string} re + * @return {Mocha} + */ +Mocha.prototype.grep = function(re) { + this.options.grep = typeof re === 'string' ? new RegExp(escapeRe(re)) : re; + return this; +}; + +/** + * Invert `.grep()` matches. + * + * @return {Mocha} + * @api public + */ +Mocha.prototype.invert = function() { + this.options.invert = true; + return this; +}; + +/** + * Ignore global leaks. + * + * @param {Boolean} ignore + * @return {Mocha} + * @api public + * @param {boolean} ignore + * @return {Mocha} + */ +Mocha.prototype.ignoreLeaks = function(ignore) { + this.options.ignoreLeaks = Boolean(ignore); + return this; +}; + +/** + * Enable global leak checking. + * + * @return {Mocha} + * @api public + */ +Mocha.prototype.checkLeaks = function() { + this.options.ignoreLeaks = false; + return this; +}; + +/** + * Display long stack-trace on failing + * + * @return {Mocha} + * @api public + */ +Mocha.prototype.fullTrace = function() { + this.options.fullStackTrace = true; + return this; +}; + +/** + * Enable growl support. + * + * @return {Mocha} + * @api public + */ +Mocha.prototype.growl = function() { + this.options.growl = true; + return this; +}; + +/** + * Ignore `globals` array or string. + * + * @param {Array|String} globals + * @return {Mocha} + * @api public + * @param {Array|string} globals + * @return {Mocha} + */ +Mocha.prototype.globals = function(globals) { + this.options.globals = (this.options.globals || []).concat(globals); + return this; +}; + +/** + * Emit color output. + * + * @param {Boolean} colors + * @return {Mocha} + * @api public + * @param {boolean} colors + * @return {Mocha} + */ +Mocha.prototype.useColors = function(colors) { + if (colors !== undefined) { + this.options.useColors = colors; + } + return this; +}; + +/** + * Use inline diffs rather than +/-. + * + * @param {Boolean} inlineDiffs + * @return {Mocha} + * @api public + * @param {boolean} inlineDiffs + * @return {Mocha} + */ +Mocha.prototype.useInlineDiffs = function(inlineDiffs) { + this.options.useInlineDiffs = inlineDiffs !== undefined && inlineDiffs; + return this; +}; + +/** + * Set the timeout in milliseconds. + * + * @param {Number} timeout + * @return {Mocha} + * @api public + * @param {number} timeout + * @return {Mocha} + */ +Mocha.prototype.timeout = function(timeout) { + this.suite.timeout(timeout); + return this; +}; + +/** + * Set slowness threshold in milliseconds. + * + * @param {Number} slow + * @return {Mocha} + * @api public + * @param {number} slow + * @return {Mocha} + */ +Mocha.prototype.slow = function(slow) { + this.suite.slow(slow); + return this; +}; + +/** + * Enable timeouts. + * + * @param {Boolean} enabled + * @return {Mocha} + * @api public + * @param {boolean} enabled + * @return {Mocha} + */ +Mocha.prototype.enableTimeouts = function(enabled) { + this.suite.enableTimeouts(arguments.length && enabled !== undefined ? enabled : true); + return this; +}; + +/** + * Makes all tests async (accepting a callback) + * + * @return {Mocha} + * @api public + */ +Mocha.prototype.asyncOnly = function() { + this.options.asyncOnly = true; + return this; +}; + +/** + * Disable syntax highlighting (in browser). + * + * @api public + */ +Mocha.prototype.noHighlighting = function() { + this.options.noHighlighting = true; + return this; +}; + +/** + * Enable uncaught errors to propagate (in browser). + * + * @return {Mocha} + * @api public + */ +Mocha.prototype.allowUncaught = function() { + this.options.allowUncaught = true; + return this; +}; + +/** + * Delay root suite execution. + * @returns {Mocha} + */ +Mocha.prototype.delay = function delay() { + this.options.delay = true; + return this; +}; + +/** + * Run tests and invoke `fn()` when complete. + * + * @api public + * @param {Function} fn + * @return {Runner} + */ +Mocha.prototype.run = function(fn) { + if (this.files.length) { + this.loadFiles(); + } + var suite = this.suite; + var options = this.options; + options.files = this.files; + var runner = new exports.Runner(suite, options.delay); + var reporter = new this._reporter(runner, options); + runner.ignoreLeaks = options.ignoreLeaks !== false; + runner.fullStackTrace = options.fullStackTrace; + runner.asyncOnly = options.asyncOnly; + runner.allowUncaught = options.allowUncaught; + if (options.grep) { + runner.grep(options.grep, options.invert); + } + if (options.globals) { + runner.globals(options.globals); + } + if (options.growl) { + this._growl(runner, reporter); + } + if (options.useColors !== undefined) { + exports.reporters.Base.useColors = options.useColors; + } + exports.reporters.Base.inlineDiffs = options.useInlineDiffs; + + function done(failures) { + if (reporter.done) { + reporter.done(failures, fn); + } else { + fn && fn(failures); + } + } + + return runner.run(done); +}; + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},"/lib") +},{"./context":6,"./hook":7,"./interfaces":11,"./reporters":22,"./runnable":35,"./runner":36,"./suite":37,"./test":38,"./utils":39,"_process":51,"escape-string-regexp":68,"growl":69,"path":41}],15:[function(require,module,exports){ +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @api public + * @param {string|number} val + * @param {Object} options + * @return {string|number} + */ +module.exports = function(val, options) { + options = options || {}; + if (typeof val === 'string') { + return parse(val); + } + // https://github.com/mochajs/mocha/pull/1035 + return options['long'] ? longFormat(val) : shortFormat(val); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @api private + * @param {string} str + * @return {number} + */ +function parse(str) { + var match = (/^((?:\d+)?\.?\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i).exec(str); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'y': + return n * y; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 's': + return n * s; + case 'ms': + return n; + default: + // No default case + } +} + +/** + * Short format for `ms`. + * + * @api private + * @param {number} ms + * @return {string} + */ +function shortFormat(ms) { + if (ms >= d) { + return Math.round(ms / d) + 'd'; + } + if (ms >= h) { + return Math.round(ms / h) + 'h'; + } + if (ms >= m) { + return Math.round(ms / m) + 'm'; + } + if (ms >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @api private + * @param {number} ms + * @return {string} + */ +function longFormat(ms) { + return plural(ms, d, 'day') + || plural(ms, h, 'hour') + || plural(ms, m, 'minute') + || plural(ms, s, 'second') + || ms + ' ms'; +} + +/** + * Pluralization helper. + * + * @api private + * @param {number} ms + * @param {number} n + * @param {string} name + */ +function plural(ms, n, name) { + if (ms < n) { + return; + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + ' ' + name; + } + return Math.ceil(ms / n) + ' ' + name + 's'; +} + +},{}],16:[function(require,module,exports){ + +/** + * Expose `Pending`. + */ + +module.exports = Pending; + +/** + * Initialize a new `Pending` error with the given message. + * + * @param {string} message + */ +function Pending(message) { + this.message = message; +} + +},{}],17:[function(require,module,exports){ +(function (process,global){ +/** + * Module dependencies. + */ + +var tty = require('tty'); +var diff = require('diff'); +var ms = require('../ms'); +var utils = require('../utils'); +var supportsColor = process.browser ? null : require('supports-color'); + +/** + * Expose `Base`. + */ + +exports = module.exports = Base; + +/** + * Save timer references to avoid Sinon interfering. + * See: https://github.com/mochajs/mocha/issues/237 + */ + +/* eslint-disable no-unused-vars, no-native-reassign */ +var Date = global.Date; +var setTimeout = global.setTimeout; +var setInterval = global.setInterval; +var clearTimeout = global.clearTimeout; +var clearInterval = global.clearInterval; +/* eslint-enable no-unused-vars, no-native-reassign */ + +/** + * Check if both stdio streams are associated with a tty. + */ + +var isatty = tty.isatty(1) && tty.isatty(2); + +/** + * Enable coloring by default, except in the browser interface. + */ + +exports.useColors = !process.browser && (supportsColor || (process.env.MOCHA_COLORS !== undefined)); + +/** + * Inline diffs instead of +/- + */ + +exports.inlineDiffs = false; + +/** + * Default color map. + */ + +exports.colors = { + pass: 90, + fail: 31, + 'bright pass': 92, + 'bright fail': 91, + 'bright yellow': 93, + pending: 36, + suite: 0, + 'error title': 0, + 'error message': 31, + 'error stack': 90, + checkmark: 32, + fast: 90, + medium: 33, + slow: 31, + green: 32, + light: 90, + 'diff gutter': 90, + 'diff added': 32, + 'diff removed': 31 +}; + +/** + * Default symbol map. + */ + +exports.symbols = { + ok: '✓', + err: '✖', + dot: '․' +}; + +// With node.js on Windows: use symbols available in terminal default fonts +if (process.platform === 'win32') { + exports.symbols.ok = '\u221A'; + exports.symbols.err = '\u00D7'; + exports.symbols.dot = '.'; +} + +/** + * Color `str` with the given `type`, + * allowing colors to be disabled, + * as well as user-defined color + * schemes. + * + * @param {string} type + * @param {string} str + * @return {string} + * @api private + */ +var color = exports.color = function(type, str) { + if (!exports.useColors) { + return String(str); + } + return '\u001b[' + exports.colors[type] + 'm' + str + '\u001b[0m'; +}; + +/** + * Expose term window size, with some defaults for when stderr is not a tty. + */ + +exports.window = { + width: 75 +}; + +if (isatty) { + exports.window.width = process.stdout.getWindowSize + ? process.stdout.getWindowSize(1)[0] + : tty.getWindowSize()[1]; +} + +/** + * Expose some basic cursor interactions that are common among reporters. + */ + +exports.cursor = { + hide: function() { + isatty && process.stdout.write('\u001b[?25l'); + }, + + show: function() { + isatty && process.stdout.write('\u001b[?25h'); + }, + + deleteLine: function() { + isatty && process.stdout.write('\u001b[2K'); + }, + + beginningOfLine: function() { + isatty && process.stdout.write('\u001b[0G'); + }, + + CR: function() { + if (isatty) { + exports.cursor.deleteLine(); + exports.cursor.beginningOfLine(); + } else { + process.stdout.write('\r'); + } + } +}; + +/** + * Outut the given `failures` as a list. + * + * @param {Array} failures + * @api public + */ + +exports.list = function(failures) { + console.log(); + failures.forEach(function(test, i) { + // format + var fmt = color('error title', ' %s) %s:\n') + + color('error message', ' %s') + + color('error stack', '\n%s\n'); + + // msg + var msg; + var err = test.err; + var message; + if (err.message) { + message = err.message; + } else if (typeof err.inspect === 'function') { + message = err.inspect() + ''; + } else { + message = ''; + } + var stack = err.stack || message; + var index = stack.indexOf(message); + var actual = err.actual; + var expected = err.expected; + var escape = true; + + if (index === -1) { + msg = message; + } else { + index += message.length; + msg = stack.slice(0, index); + // remove msg from stack + stack = stack.slice(index + 1); + } + + // uncaught + if (err.uncaught) { + msg = 'Uncaught ' + msg; + } + // explicitly show diff + if (err.showDiff !== false && sameType(actual, expected) && expected !== undefined) { + escape = false; + if (!(utils.isString(actual) && utils.isString(expected))) { + err.actual = actual = utils.stringify(actual); + err.expected = expected = utils.stringify(expected); + } + + fmt = color('error title', ' %s) %s:\n%s') + color('error stack', '\n%s\n'); + var match = message.match(/^([^:]+): expected/); + msg = '\n ' + color('error message', match ? match[1] : msg); + + if (exports.inlineDiffs) { + msg += inlineDiff(err, escape); + } else { + msg += unifiedDiff(err, escape); + } + } + + // indent stack trace + stack = stack.replace(/^/gm, ' '); + + console.log(fmt, (i + 1), test.fullTitle(), msg, stack); + }); +}; + +/** + * Initialize a new `Base` reporter. + * + * All other reporters generally + * inherit from this reporter, providing + * stats such as test duration, number + * of tests passed / failed etc. + * + * @param {Runner} runner + * @api public + */ + +function Base(runner) { + var stats = this.stats = { suites: 0, tests: 0, passes: 0, pending: 0, failures: 0 }; + var failures = this.failures = []; + + if (!runner) { + return; + } + this.runner = runner; + + runner.stats = stats; + + runner.on('start', function() { + stats.start = new Date(); + }); + + runner.on('suite', function(suite) { + stats.suites = stats.suites || 0; + suite.root || stats.suites++; + }); + + runner.on('test end', function() { + stats.tests = stats.tests || 0; + stats.tests++; + }); + + runner.on('pass', function(test) { + stats.passes = stats.passes || 0; + + if (test.duration > test.slow()) { + test.speed = 'slow'; + } else if (test.duration > test.slow() / 2) { + test.speed = 'medium'; + } else { + test.speed = 'fast'; + } + + stats.passes++; + }); + + runner.on('fail', function(test, err) { + stats.failures = stats.failures || 0; + stats.failures++; + test.err = err; + failures.push(test); + }); + + runner.on('end', function() { + stats.end = new Date(); + stats.duration = new Date() - stats.start; + }); + + runner.on('pending', function() { + stats.pending++; + }); +} + +/** + * Output common epilogue used by many of + * the bundled reporters. + * + * @api public + */ +Base.prototype.epilogue = function() { + var stats = this.stats; + var fmt; + + console.log(); + + // passes + fmt = color('bright pass', ' ') + + color('green', ' %d passing') + + color('light', ' (%s)'); + + console.log(fmt, + stats.passes || 0, + ms(stats.duration)); + + // pending + if (stats.pending) { + fmt = color('pending', ' ') + + color('pending', ' %d pending'); + + console.log(fmt, stats.pending); + } + + // failures + if (stats.failures) { + fmt = color('fail', ' %d failing'); + + console.log(fmt, stats.failures); + + Base.list(this.failures); + console.log(); + } + + console.log(); +}; + +/** + * Pad the given `str` to `len`. + * + * @api private + * @param {string} str + * @param {string} len + * @return {string} + */ +function pad(str, len) { + str = String(str); + return Array(len - str.length + 1).join(' ') + str; +} + +/** + * Returns an inline diff between 2 strings with coloured ANSI output + * + * @api private + * @param {Error} err with actual/expected + * @param {boolean} escape + * @return {string} Diff + */ +function inlineDiff(err, escape) { + var msg = errorDiff(err, 'WordsWithSpace', escape); + + // linenos + var lines = msg.split('\n'); + if (lines.length > 4) { + var width = String(lines.length).length; + msg = lines.map(function(str, i) { + return pad(++i, width) + ' |' + ' ' + str; + }).join('\n'); + } + + // legend + msg = '\n' + + color('diff removed', 'actual') + + ' ' + + color('diff added', 'expected') + + '\n\n' + + msg + + '\n'; + + // indent + msg = msg.replace(/^/gm, ' '); + return msg; +} + +/** + * Returns a unified diff between two strings. + * + * @api private + * @param {Error} err with actual/expected + * @param {boolean} escape + * @return {string} The diff. + */ +function unifiedDiff(err, escape) { + var indent = ' '; + function cleanUp(line) { + if (escape) { + line = escapeInvisibles(line); + } + if (line[0] === '+') { + return indent + colorLines('diff added', line); + } + if (line[0] === '-') { + return indent + colorLines('diff removed', line); + } + if (line.match(/\@\@/)) { + return null; + } + if (line.match(/\\ No newline/)) { + return null; + } + return indent + line; + } + function notBlank(line) { + return typeof line !== 'undefined' && line !== null; + } + var msg = diff.createPatch('string', err.actual, err.expected); + var lines = msg.split('\n').splice(4); + return '\n ' + + colorLines('diff added', '+ expected') + ' ' + + colorLines('diff removed', '- actual') + + '\n\n' + + lines.map(cleanUp).filter(notBlank).join('\n'); +} + +/** + * Return a character diff for `err`. + * + * @api private + * @param {Error} err + * @param {string} type + * @param {boolean} escape + * @return {string} + */ +function errorDiff(err, type, escape) { + var actual = escape ? escapeInvisibles(err.actual) : err.actual; + var expected = escape ? escapeInvisibles(err.expected) : err.expected; + return diff['diff' + type](actual, expected).map(function(str) { + if (str.added) { + return colorLines('diff added', str.value); + } + if (str.removed) { + return colorLines('diff removed', str.value); + } + return str.value; + }).join(''); +} + +/** + * Returns a string with all invisible characters in plain text + * + * @api private + * @param {string} line + * @return {string} + */ +function escapeInvisibles(line) { + return line.replace(/\t/g, '<tab>') + .replace(/\r/g, '<CR>') + .replace(/\n/g, '<LF>\n'); +} + +/** + * Color lines for `str`, using the color `name`. + * + * @api private + * @param {string} name + * @param {string} str + * @return {string} + */ +function colorLines(name, str) { + return str.split('\n').map(function(str) { + return color(name, str); + }).join('\n'); +} + +/** + * Object#toString reference. + */ +var objToString = Object.prototype.toString; + +/** + * Check that a / b have the same type. + * + * @api private + * @param {Object} a + * @param {Object} b + * @return {boolean} + */ +function sameType(a, b) { + return objToString.call(a) === objToString.call(b); +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../ms":15,"../utils":39,"_process":51,"diff":67,"supports-color":41,"tty":5}],18:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var utils = require('../utils'); + +/** + * Expose `Doc`. + */ + +exports = module.exports = Doc; + +/** + * Initialize a new `Doc` reporter. + * + * @param {Runner} runner + * @api public + */ +function Doc(runner) { + Base.call(this, runner); + + var indents = 2; + + function indent() { + return Array(indents).join(' '); + } + + runner.on('suite', function(suite) { + if (suite.root) { + return; + } + ++indents; + console.log('%s<section class="suite">', indent()); + ++indents; + console.log('%s<h1>%s</h1>', indent(), utils.escape(suite.title)); + console.log('%s<dl>', indent()); + }); + + runner.on('suite end', function(suite) { + if (suite.root) { + return; + } + console.log('%s</dl>', indent()); + --indents; + console.log('%s</section>', indent()); + --indents; + }); + + runner.on('pass', function(test) { + console.log('%s <dt>%s</dt>', indent(), utils.escape(test.title)); + var code = utils.escape(utils.clean(test.fn.toString())); + console.log('%s <dd><pre><code>%s</code></pre></dd>', indent(), code); + }); + + runner.on('fail', function(test, err) { + console.log('%s <dt class="error">%s</dt>', indent(), utils.escape(test.title)); + var code = utils.escape(utils.clean(test.fn.toString())); + console.log('%s <dd class="error"><pre><code>%s</code></pre></dd>', indent(), code); + console.log('%s <dd class="error">%s</dd>', indent(), utils.escape(err)); + }); +} + +},{"../utils":39,"./base":17}],19:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var inherits = require('../utils').inherits; +var color = Base.color; + +/** + * Expose `Dot`. + */ + +exports = module.exports = Dot; + +/** + * Initialize a new `Dot` matrix test reporter. + * + * @api public + * @param {Runner} runner + */ +function Dot(runner) { + Base.call(this, runner); + + var self = this; + var width = Base.window.width * .75 | 0; + var n = -1; + + runner.on('start', function() { + process.stdout.write('\n'); + }); + + runner.on('pending', function() { + if (++n % width === 0) { + process.stdout.write('\n '); + } + process.stdout.write(color('pending', Base.symbols.dot)); + }); + + runner.on('pass', function(test) { + if (++n % width === 0) { + process.stdout.write('\n '); + } + if (test.speed === 'slow') { + process.stdout.write(color('bright yellow', Base.symbols.dot)); + } else { + process.stdout.write(color(test.speed, Base.symbols.dot)); + } + }); + + runner.on('fail', function() { + if (++n % width === 0) { + process.stdout.write('\n '); + } + process.stdout.write(color('fail', Base.symbols.dot)); + }); + + runner.on('end', function() { + console.log(); + self.epilogue(); + }); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(Dot, Base); + +}).call(this,require('_process')) +},{"../utils":39,"./base":17,"_process":51}],20:[function(require,module,exports){ +(function (process,__dirname){ +/** + * Module dependencies. + */ + +var JSONCov = require('./json-cov'); +var readFileSync = require('fs').readFileSync; +var join = require('path').join; + +/** + * Expose `HTMLCov`. + */ + +exports = module.exports = HTMLCov; + +/** + * Initialize a new `JsCoverage` reporter. + * + * @api public + * @param {Runner} runner + */ +function HTMLCov(runner) { + var jade = require('jade'); + var file = join(__dirname, '/templates/coverage.jade'); + var str = readFileSync(file, 'utf8'); + var fn = jade.compile(str, { filename: file }); + var self = this; + + JSONCov.call(this, runner, false); + + runner.on('end', function() { + process.stdout.write(fn({ + cov: self.cov, + coverageClass: coverageClass + })); + }); +} + +/** + * Return coverage class for a given coverage percentage. + * + * @api private + * @param {number} coveragePctg + * @return {string} + */ +function coverageClass(coveragePctg) { + if (coveragePctg >= 75) { + return 'high'; + } + if (coveragePctg >= 50) { + return 'medium'; + } + if (coveragePctg >= 25) { + return 'low'; + } + return 'terrible'; +} + +}).call(this,require('_process'),"/lib/reporters") +},{"./json-cov":23,"_process":51,"fs":41,"jade":41,"path":41}],21:[function(require,module,exports){ +(function (global){ +/* eslint-env browser */ + +/** + * Module dependencies. + */ + +var Base = require('./base'); +var utils = require('../utils'); +var Progress = require('../browser/progress'); +var escapeRe = require('escape-string-regexp'); +var escape = utils.escape; + +/** + * Save timer references to avoid Sinon interfering (see GH-237). + */ + +/* eslint-disable no-unused-vars, no-native-reassign */ +var Date = global.Date; +var setTimeout = global.setTimeout; +var setInterval = global.setInterval; +var clearTimeout = global.clearTimeout; +var clearInterval = global.clearInterval; +/* eslint-enable no-unused-vars, no-native-reassign */ + +/** + * Expose `HTML`. + */ + +exports = module.exports = HTML; + +/** + * Stats template. + */ + +var statsTemplate = '<ul id="mocha-stats">' + + '<li class="progress"><canvas width="40" height="40"></canvas></li>' + + '<li class="passes"><a href="javascript:void(0);">passes:</a> <em>0</em></li>' + + '<li class="failures"><a href="javascript:void(0);">failures:</a> <em>0</em></li>' + + '<li class="duration">duration: <em>0</em>s</li>' + + '</ul>'; + +/** + * Initialize a new `HTML` reporter. + * + * @api public + * @param {Runner} runner + */ +function HTML(runner) { + Base.call(this, runner); + + var self = this; + var stats = this.stats; + var stat = fragment(statsTemplate); + var items = stat.getElementsByTagName('li'); + var passes = items[1].getElementsByTagName('em')[0]; + var passesLink = items[1].getElementsByTagName('a')[0]; + var failures = items[2].getElementsByTagName('em')[0]; + var failuresLink = items[2].getElementsByTagName('a')[0]; + var duration = items[3].getElementsByTagName('em')[0]; + var canvas = stat.getElementsByTagName('canvas')[0]; + var report = fragment('<ul id="mocha-report"></ul>'); + var stack = [report]; + var progress; + var ctx; + var root = document.getElementById('mocha'); + + if (canvas.getContext) { + var ratio = window.devicePixelRatio || 1; + canvas.style.width = canvas.width; + canvas.style.height = canvas.height; + canvas.width *= ratio; + canvas.height *= ratio; + ctx = canvas.getContext('2d'); + ctx.scale(ratio, ratio); + progress = new Progress(); + } + + if (!root) { + return error('#mocha div missing, add it to your document'); + } + + // pass toggle + on(passesLink, 'click', function() { + unhide(); + var name = (/pass/).test(report.className) ? '' : ' pass'; + report.className = report.className.replace(/fail|pass/g, '') + name; + if (report.className.trim()) { + hideSuitesWithout('test pass'); + } + }); + + // failure toggle + on(failuresLink, 'click', function() { + unhide(); + var name = (/fail/).test(report.className) ? '' : ' fail'; + report.className = report.className.replace(/fail|pass/g, '') + name; + if (report.className.trim()) { + hideSuitesWithout('test fail'); + } + }); + + root.appendChild(stat); + root.appendChild(report); + + if (progress) { + progress.size(40); + } + + runner.on('suite', function(suite) { + if (suite.root) { + return; + } + + // suite + var url = self.suiteURL(suite); + var el = fragment('<li class="suite"><h1><a href="%s">%s</a></h1></li>', url, escape(suite.title)); + + // container + stack[0].appendChild(el); + stack.unshift(document.createElement('ul')); + el.appendChild(stack[0]); + }); + + runner.on('suite end', function(suite) { + if (suite.root) { + return; + } + stack.shift(); + }); + + runner.on('fail', function(test) { + if (test.type === 'hook') { + runner.emit('test end', test); + } + }); + + runner.on('test end', function(test) { + // TODO: add to stats + var percent = stats.tests / this.total * 100 | 0; + if (progress) { + progress.update(percent).draw(ctx); + } + + // update stats + var ms = new Date() - stats.start; + text(passes, stats.passes); + text(failures, stats.failures); + text(duration, (ms / 1000).toFixed(2)); + + // test + var el; + if (test.state === 'passed') { + var url = self.testURL(test); + el = fragment('<li class="test pass %e"><h2>%e<span class="duration">%ems</span> <a href="%s" class="replay">‣</a></h2></li>', test.speed, test.title, test.duration, url); + } else if (test.pending) { + el = fragment('<li class="test pass pending"><h2>%e</h2></li>', test.title); + } else { + el = fragment('<li class="test fail"><h2>%e <a href="%e" class="replay">‣</a></h2></li>', test.title, self.testURL(test)); + var stackString; // Note: Includes leading newline + var message = test.err.toString(); + + // <=IE7 stringifies to [Object Error]. Since it can be overloaded, we + // check for the result of the stringifying. + if (message === '[object Error]') { + message = test.err.message; + } + + if (test.err.stack) { + var indexOfMessage = test.err.stack.indexOf(test.err.message); + if (indexOfMessage === -1) { + stackString = test.err.stack; + } else { + stackString = test.err.stack.substr(test.err.message.length + indexOfMessage); + } + } else if (test.err.sourceURL && test.err.line !== undefined) { + // Safari doesn't give you a stack. Let's at least provide a source line. + stackString = '\n(' + test.err.sourceURL + ':' + test.err.line + ')'; + } + + stackString = stackString || ''; + + if (test.err.htmlMessage && stackString) { + el.appendChild(fragment('<div class="html-error">%s\n<pre class="error">%e</pre></div>', test.err.htmlMessage, stackString)); + } else if (test.err.htmlMessage) { + el.appendChild(fragment('<div class="html-error">%s</div>', test.err.htmlMessage)); + } else { + el.appendChild(fragment('<pre class="error">%e%e</pre>', message, stackString)); + } + } + + // toggle code + // TODO: defer + if (!test.pending) { + var h2 = el.getElementsByTagName('h2')[0]; + + on(h2, 'click', function() { + pre.style.display = pre.style.display === 'none' ? 'block' : 'none'; + }); + + var pre = fragment('<pre><code>%e</code></pre>', utils.clean(test.fn.toString())); + el.appendChild(pre); + pre.style.display = 'none'; + } + + // Don't call .appendChild if #mocha-report was already .shift()'ed off the stack. + if (stack[0]) { + stack[0].appendChild(el); + } + }); +} + +/** + * Makes a URL, preserving querystring ("search") parameters. + * + * @param {string} s + * @return {string} A new URL. + */ +function makeUrl(s) { + var search = window.location.search; + + // Remove previous grep query parameter if present + if (search) { + search = search.replace(/[?&]grep=[^&\s]*/g, '').replace(/^&/, '?'); + } + + return window.location.pathname + (search ? search + '&' : '?') + 'grep=' + encodeURIComponent(escapeRe(s)); +} + +/** + * Provide suite URL. + * + * @param {Object} [suite] + */ +HTML.prototype.suiteURL = function(suite) { + return makeUrl(suite.fullTitle()); +}; + +/** + * Provide test URL. + * + * @param {Object} [test] + */ +HTML.prototype.testURL = function(test) { + return makeUrl(test.fullTitle()); +}; + +/** + * Display error `msg`. + * + * @param {string} msg + */ +function error(msg) { + document.body.appendChild(fragment('<div id="mocha-error">%s</div>', msg)); +} + +/** + * Return a DOM fragment from `html`. + * + * @param {string} html + */ +function fragment(html) { + var args = arguments; + var div = document.createElement('div'); + var i = 1; + + div.innerHTML = html.replace(/%([se])/g, function(_, type) { + switch (type) { + case 's': return String(args[i++]); + case 'e': return escape(args[i++]); + // no default + } + }); + + return div.firstChild; +} + +/** + * Check for suites that do not have elements + * with `classname`, and hide them. + * + * @param {text} classname + */ +function hideSuitesWithout(classname) { + var suites = document.getElementsByClassName('suite'); + for (var i = 0; i < suites.length; i++) { + var els = suites[i].getElementsByClassName(classname); + if (!els.length) { + suites[i].className += ' hidden'; + } + } +} + +/** + * Unhide .hidden suites. + */ +function unhide() { + var els = document.getElementsByClassName('suite hidden'); + for (var i = 0; i < els.length; ++i) { + els[i].className = els[i].className.replace('suite hidden', 'suite'); + } +} + +/** + * Set an element's text contents. + * + * @param {HTMLElement} el + * @param {string} contents + */ +function text(el, contents) { + if (el.textContent) { + el.textContent = contents; + } else { + el.innerText = contents; + } +} + +/** + * Listen on `event` with callback `fn`. + */ +function on(el, event, fn) { + if (el.addEventListener) { + el.addEventListener(event, fn, false); + } else { + el.attachEvent('on' + event, fn); + } +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../browser/progress":4,"../utils":39,"./base":17,"escape-string-regexp":68}],22:[function(require,module,exports){ +// Alias exports to a their normalized format Mocha#reporter to prevent a need +// for dynamic (try/catch) requires, which Browserify doesn't handle. +exports.Base = exports.base = require('./base'); +exports.Dot = exports.dot = require('./dot'); +exports.Doc = exports.doc = require('./doc'); +exports.TAP = exports.tap = require('./tap'); +exports.JSON = exports.json = require('./json'); +exports.HTML = exports.html = require('./html'); +exports.List = exports.list = require('./list'); +exports.Min = exports.min = require('./min'); +exports.Spec = exports.spec = require('./spec'); +exports.Nyan = exports.nyan = require('./nyan'); +exports.XUnit = exports.xunit = require('./xunit'); +exports.Markdown = exports.markdown = require('./markdown'); +exports.Progress = exports.progress = require('./progress'); +exports.Landing = exports.landing = require('./landing'); +exports.JSONCov = exports['json-cov'] = require('./json-cov'); +exports.HTMLCov = exports['html-cov'] = require('./html-cov'); +exports.JSONStream = exports['json-stream'] = require('./json-stream'); + +},{"./base":17,"./doc":18,"./dot":19,"./html":21,"./html-cov":20,"./json":25,"./json-cov":23,"./json-stream":24,"./landing":26,"./list":27,"./markdown":28,"./min":29,"./nyan":30,"./progress":31,"./spec":32,"./tap":33,"./xunit":34}],23:[function(require,module,exports){ +(function (process,global){ +/** + * Module dependencies. + */ + +var Base = require('./base'); + +/** + * Expose `JSONCov`. + */ + +exports = module.exports = JSONCov; + +/** + * Initialize a new `JsCoverage` reporter. + * + * @api public + * @param {Runner} runner + * @param {boolean} output + */ +function JSONCov(runner, output) { + Base.call(this, runner); + + output = arguments.length === 1 || output; + var self = this; + var tests = []; + var failures = []; + var passes = []; + + runner.on('test end', function(test) { + tests.push(test); + }); + + runner.on('pass', function(test) { + passes.push(test); + }); + + runner.on('fail', function(test) { + failures.push(test); + }); + + runner.on('end', function() { + var cov = global._$jscoverage || {}; + var result = self.cov = map(cov); + result.stats = self.stats; + result.tests = tests.map(clean); + result.failures = failures.map(clean); + result.passes = passes.map(clean); + if (!output) { + return; + } + process.stdout.write(JSON.stringify(result, null, 2)); + }); +} + +/** + * Map jscoverage data to a JSON structure + * suitable for reporting. + * + * @api private + * @param {Object} cov + * @return {Object} + */ + +function map(cov) { + var ret = { + instrumentation: 'node-jscoverage', + sloc: 0, + hits: 0, + misses: 0, + coverage: 0, + files: [] + }; + + for (var filename in cov) { + if (Object.prototype.hasOwnProperty.call(cov, filename)) { + var data = coverage(filename, cov[filename]); + ret.files.push(data); + ret.hits += data.hits; + ret.misses += data.misses; + ret.sloc += data.sloc; + } + } + + ret.files.sort(function(a, b) { + return a.filename.localeCompare(b.filename); + }); + + if (ret.sloc > 0) { + ret.coverage = (ret.hits / ret.sloc) * 100; + } + + return ret; +} + +/** + * Map jscoverage data for a single source file + * to a JSON structure suitable for reporting. + * + * @api private + * @param {string} filename name of the source file + * @param {Object} data jscoverage coverage data + * @return {Object} + */ +function coverage(filename, data) { + var ret = { + filename: filename, + coverage: 0, + hits: 0, + misses: 0, + sloc: 0, + source: {} + }; + + data.source.forEach(function(line, num) { + num++; + + if (data[num] === 0) { + ret.misses++; + ret.sloc++; + } else if (data[num] !== undefined) { + ret.hits++; + ret.sloc++; + } + + ret.source[num] = { + source: line, + coverage: data[num] === undefined ? '' : data[num] + }; + }); + + ret.coverage = ret.hits / ret.sloc * 100; + + return ret; +} + +/** + * Return a plain-object representation of `test` + * free of cyclic properties etc. + * + * @api private + * @param {Object} test + * @return {Object} + */ +function clean(test) { + return { + duration: test.duration, + fullTitle: test.fullTitle(), + title: test.title + }; +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./base":17,"_process":51}],24:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); + +/** + * Expose `List`. + */ + +exports = module.exports = List; + +/** + * Initialize a new `List` test reporter. + * + * @api public + * @param {Runner} runner + */ +function List(runner) { + Base.call(this, runner); + + var self = this; + var total = runner.total; + + runner.on('start', function() { + console.log(JSON.stringify(['start', { total: total }])); + }); + + runner.on('pass', function(test) { + console.log(JSON.stringify(['pass', clean(test)])); + }); + + runner.on('fail', function(test, err) { + test = clean(test); + test.err = err.message; + test.stack = err.stack || null; + console.log(JSON.stringify(['fail', test])); + }); + + runner.on('end', function() { + process.stdout.write(JSON.stringify(['end', self.stats])); + }); +} + +/** + * Return a plain-object representation of `test` + * free of cyclic properties etc. + * + * @api private + * @param {Object} test + * @return {Object} + */ +function clean(test) { + return { + title: test.title, + fullTitle: test.fullTitle(), + duration: test.duration + }; +} + +}).call(this,require('_process')) +},{"./base":17,"_process":51}],25:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); + +/** + * Expose `JSON`. + */ + +exports = module.exports = JSONReporter; + +/** + * Initialize a new `JSON` reporter. + * + * @api public + * @param {Runner} runner + */ +function JSONReporter(runner) { + Base.call(this, runner); + + var self = this; + var tests = []; + var pending = []; + var failures = []; + var passes = []; + + runner.on('test end', function(test) { + tests.push(test); + }); + + runner.on('pass', function(test) { + passes.push(test); + }); + + runner.on('fail', function(test) { + failures.push(test); + }); + + runner.on('pending', function(test) { + pending.push(test); + }); + + runner.on('end', function() { + var obj = { + stats: self.stats, + tests: tests.map(clean), + pending: pending.map(clean), + failures: failures.map(clean), + passes: passes.map(clean) + }; + + runner.testResults = obj; + + process.stdout.write(JSON.stringify(obj, null, 2)); + }); +} + +/** + * Return a plain-object representation of `test` + * free of cyclic properties etc. + * + * @api private + * @param {Object} test + * @return {Object} + */ +function clean(test) { + return { + title: test.title, + fullTitle: test.fullTitle(), + duration: test.duration, + err: errorJSON(test.err || {}) + }; +} + +/** + * Transform `error` into a JSON object. + * + * @api private + * @param {Error} err + * @return {Object} + */ +function errorJSON(err) { + var res = {}; + Object.getOwnPropertyNames(err).forEach(function(key) { + res[key] = err[key]; + }, err); + return res; +} + +}).call(this,require('_process')) +},{"./base":17,"_process":51}],26:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var inherits = require('../utils').inherits; +var cursor = Base.cursor; +var color = Base.color; + +/** + * Expose `Landing`. + */ + +exports = module.exports = Landing; + +/** + * Airplane color. + */ + +Base.colors.plane = 0; + +/** + * Airplane crash color. + */ + +Base.colors['plane crash'] = 31; + +/** + * Runway color. + */ + +Base.colors.runway = 90; + +/** + * Initialize a new `Landing` reporter. + * + * @api public + * @param {Runner} runner + */ +function Landing(runner) { + Base.call(this, runner); + + var self = this; + var width = Base.window.width * .75 | 0; + var total = runner.total; + var stream = process.stdout; + var plane = color('plane', '✈'); + var crashed = -1; + var n = 0; + + function runway() { + var buf = Array(width).join('-'); + return ' ' + color('runway', buf); + } + + runner.on('start', function() { + stream.write('\n\n\n '); + cursor.hide(); + }); + + runner.on('test end', function(test) { + // check if the plane crashed + var col = crashed === -1 ? width * ++n / total | 0 : crashed; + + // show the crash + if (test.state === 'failed') { + plane = color('plane crash', '✈'); + crashed = col; + } + + // render landing strip + stream.write('\u001b[' + (width + 1) + 'D\u001b[2A'); + stream.write(runway()); + stream.write('\n '); + stream.write(color('runway', Array(col).join('â‹…'))); + stream.write(plane); + stream.write(color('runway', Array(width - col).join('â‹…') + '\n')); + stream.write(runway()); + stream.write('\u001b[0m'); + }); + + runner.on('end', function() { + cursor.show(); + console.log(); + self.epilogue(); + }); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(Landing, Base); + +}).call(this,require('_process')) +},{"../utils":39,"./base":17,"_process":51}],27:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var inherits = require('../utils').inherits; +var color = Base.color; +var cursor = Base.cursor; + +/** + * Expose `List`. + */ + +exports = module.exports = List; + +/** + * Initialize a new `List` test reporter. + * + * @api public + * @param {Runner} runner + */ +function List(runner) { + Base.call(this, runner); + + var self = this; + var n = 0; + + runner.on('start', function() { + console.log(); + }); + + runner.on('test', function(test) { + process.stdout.write(color('pass', ' ' + test.fullTitle() + ': ')); + }); + + runner.on('pending', function(test) { + var fmt = color('checkmark', ' -') + + color('pending', ' %s'); + console.log(fmt, test.fullTitle()); + }); + + runner.on('pass', function(test) { + var fmt = color('checkmark', ' ' + Base.symbols.dot) + + color('pass', ' %s: ') + + color(test.speed, '%dms'); + cursor.CR(); + console.log(fmt, test.fullTitle(), test.duration); + }); + + runner.on('fail', function(test) { + cursor.CR(); + console.log(color('fail', ' %d) %s'), ++n, test.fullTitle()); + }); + + runner.on('end', self.epilogue.bind(self)); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(List, Base); + +}).call(this,require('_process')) +},{"../utils":39,"./base":17,"_process":51}],28:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var utils = require('../utils'); + +/** + * Constants + */ + +var SUITE_PREFIX = '$'; + +/** + * Expose `Markdown`. + */ + +exports = module.exports = Markdown; + +/** + * Initialize a new `Markdown` reporter. + * + * @api public + * @param {Runner} runner + */ +function Markdown(runner) { + Base.call(this, runner); + + var level = 0; + var buf = ''; + + function title(str) { + return Array(level).join('#') + ' ' + str; + } + + function mapTOC(suite, obj) { + var ret = obj; + var key = SUITE_PREFIX + suite.title; + + obj = obj[key] = obj[key] || { suite: suite }; + suite.suites.forEach(function(suite) { + mapTOC(suite, obj); + }); + + return ret; + } + + function stringifyTOC(obj, level) { + ++level; + var buf = ''; + var link; + for (var key in obj) { + if (key === 'suite') { + continue; + } + if (key !== SUITE_PREFIX) { + link = ' - [' + key.substring(1) + ']'; + link += '(#' + utils.slug(obj[key].suite.fullTitle()) + ')\n'; + buf += Array(level).join(' ') + link; + } + buf += stringifyTOC(obj[key], level); + } + return buf; + } + + function generateTOC(suite) { + var obj = mapTOC(suite, {}); + return stringifyTOC(obj, 0); + } + + generateTOC(runner.suite); + + runner.on('suite', function(suite) { + ++level; + var slug = utils.slug(suite.fullTitle()); + buf += '<a name="' + slug + '"></a>' + '\n'; + buf += title(suite.title) + '\n'; + }); + + runner.on('suite end', function() { + --level; + }); + + runner.on('pass', function(test) { + var code = utils.clean(test.fn.toString()); + buf += test.title + '.\n'; + buf += '\n```js\n'; + buf += code + '\n'; + buf += '```\n\n'; + }); + + runner.on('end', function() { + process.stdout.write('# TOC\n'); + process.stdout.write(generateTOC(runner.suite)); + process.stdout.write(buf); + }); +} + +}).call(this,require('_process')) +},{"../utils":39,"./base":17,"_process":51}],29:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var inherits = require('../utils').inherits; + +/** + * Expose `Min`. + */ + +exports = module.exports = Min; + +/** + * Initialize a new `Min` minimal test reporter (best used with --watch). + * + * @api public + * @param {Runner} runner + */ +function Min(runner) { + Base.call(this, runner); + + runner.on('start', function() { + // clear screen + process.stdout.write('\u001b[2J'); + // set cursor position + process.stdout.write('\u001b[1;3H'); + }); + + runner.on('end', this.epilogue.bind(this)); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(Min, Base); + +}).call(this,require('_process')) +},{"../utils":39,"./base":17,"_process":51}],30:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var inherits = require('../utils').inherits; + +/** + * Expose `Dot`. + */ + +exports = module.exports = NyanCat; + +/** + * Initialize a new `Dot` matrix test reporter. + * + * @param {Runner} runner + * @api public + */ + +function NyanCat(runner) { + Base.call(this, runner); + + var self = this; + var width = Base.window.width * .75 | 0; + var nyanCatWidth = this.nyanCatWidth = 11; + + this.colorIndex = 0; + this.numberOfLines = 4; + this.rainbowColors = self.generateColors(); + this.scoreboardWidth = 5; + this.tick = 0; + this.trajectories = [[], [], [], []]; + this.trajectoryWidthMax = (width - nyanCatWidth); + + runner.on('start', function() { + Base.cursor.hide(); + self.draw(); + }); + + runner.on('pending', function() { + self.draw(); + }); + + runner.on('pass', function() { + self.draw(); + }); + + runner.on('fail', function() { + self.draw(); + }); + + runner.on('end', function() { + Base.cursor.show(); + for (var i = 0; i < self.numberOfLines; i++) { + write('\n'); + } + self.epilogue(); + }); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(NyanCat, Base); + +/** + * Draw the nyan cat + * + * @api private + */ + +NyanCat.prototype.draw = function() { + this.appendRainbow(); + this.drawScoreboard(); + this.drawRainbow(); + this.drawNyanCat(); + this.tick = !this.tick; +}; + +/** + * Draw the "scoreboard" showing the number + * of passes, failures and pending tests. + * + * @api private + */ + +NyanCat.prototype.drawScoreboard = function() { + var stats = this.stats; + + function draw(type, n) { + write(' '); + write(Base.color(type, n)); + write('\n'); + } + + draw('green', stats.passes); + draw('fail', stats.failures); + draw('pending', stats.pending); + write('\n'); + + this.cursorUp(this.numberOfLines); +}; + +/** + * Append the rainbow. + * + * @api private + */ + +NyanCat.prototype.appendRainbow = function() { + var segment = this.tick ? '_' : '-'; + var rainbowified = this.rainbowify(segment); + + for (var index = 0; index < this.numberOfLines; index++) { + var trajectory = this.trajectories[index]; + if (trajectory.length >= this.trajectoryWidthMax) { + trajectory.shift(); + } + trajectory.push(rainbowified); + } +}; + +/** + * Draw the rainbow. + * + * @api private + */ + +NyanCat.prototype.drawRainbow = function() { + var self = this; + + this.trajectories.forEach(function(line) { + write('\u001b[' + self.scoreboardWidth + 'C'); + write(line.join('')); + write('\n'); + }); + + this.cursorUp(this.numberOfLines); +}; + +/** + * Draw the nyan cat + * + * @api private + */ +NyanCat.prototype.drawNyanCat = function() { + var self = this; + var startWidth = this.scoreboardWidth + this.trajectories[0].length; + var dist = '\u001b[' + startWidth + 'C'; + var padding = ''; + + write(dist); + write('_,------,'); + write('\n'); + + write(dist); + padding = self.tick ? ' ' : ' '; + write('_|' + padding + '/\\_/\\ '); + write('\n'); + + write(dist); + padding = self.tick ? '_' : '__'; + var tail = self.tick ? '~' : '^'; + write(tail + '|' + padding + this.face() + ' '); + write('\n'); + + write(dist); + padding = self.tick ? ' ' : ' '; + write(padding + '"" "" '); + write('\n'); + + this.cursorUp(this.numberOfLines); +}; + +/** + * Draw nyan cat face. + * + * @api private + * @return {string} + */ + +NyanCat.prototype.face = function() { + var stats = this.stats; + if (stats.failures) { + return '( x .x)'; + } else if (stats.pending) { + return '( o .o)'; + } else if (stats.passes) { + return '( ^ .^)'; + } + return '( - .-)'; +}; + +/** + * Move cursor up `n`. + * + * @api private + * @param {number} n + */ + +NyanCat.prototype.cursorUp = function(n) { + write('\u001b[' + n + 'A'); +}; + +/** + * Move cursor down `n`. + * + * @api private + * @param {number} n + */ + +NyanCat.prototype.cursorDown = function(n) { + write('\u001b[' + n + 'B'); +}; + +/** + * Generate rainbow colors. + * + * @api private + * @return {Array} + */ +NyanCat.prototype.generateColors = function() { + var colors = []; + + for (var i = 0; i < (6 * 7); i++) { + var pi3 = Math.floor(Math.PI / 3); + var n = (i * (1.0 / 6)); + var r = Math.floor(3 * Math.sin(n) + 3); + var g = Math.floor(3 * Math.sin(n + 2 * pi3) + 3); + var b = Math.floor(3 * Math.sin(n + 4 * pi3) + 3); + colors.push(36 * r + 6 * g + b + 16); + } + + return colors; +}; + +/** + * Apply rainbow to the given `str`. + * + * @api private + * @param {string} str + * @return {string} + */ +NyanCat.prototype.rainbowify = function(str) { + if (!Base.useColors) { + return str; + } + var color = this.rainbowColors[this.colorIndex % this.rainbowColors.length]; + this.colorIndex += 1; + return '\u001b[38;5;' + color + 'm' + str + '\u001b[0m'; +}; + +/** + * Stdout helper. + * + * @param {string} string A message to write to stdout. + */ +function write(string) { + process.stdout.write(string); +} + +}).call(this,require('_process')) +},{"../utils":39,"./base":17,"_process":51}],31:[function(require,module,exports){ +(function (process){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var inherits = require('../utils').inherits; +var color = Base.color; +var cursor = Base.cursor; + +/** + * Expose `Progress`. + */ + +exports = module.exports = Progress; + +/** + * General progress bar color. + */ + +Base.colors.progress = 90; + +/** + * Initialize a new `Progress` bar test reporter. + * + * @api public + * @param {Runner} runner + * @param {Object} options + */ +function Progress(runner, options) { + Base.call(this, runner); + + var self = this; + var width = Base.window.width * .50 | 0; + var total = runner.total; + var complete = 0; + var lastN = -1; + + // default chars + options = options || {}; + options.open = options.open || '['; + options.complete = options.complete || 'â–¬'; + options.incomplete = options.incomplete || Base.symbols.dot; + options.close = options.close || ']'; + options.verbose = false; + + // tests started + runner.on('start', function() { + console.log(); + cursor.hide(); + }); + + // tests complete + runner.on('test end', function() { + complete++; + + var percent = complete / total; + var n = width * percent | 0; + var i = width - n; + + if (n === lastN && !options.verbose) { + // Don't re-render the line if it hasn't changed + return; + } + lastN = n; + + cursor.CR(); + process.stdout.write('\u001b[J'); + process.stdout.write(color('progress', ' ' + options.open)); + process.stdout.write(Array(n).join(options.complete)); + process.stdout.write(Array(i).join(options.incomplete)); + process.stdout.write(color('progress', options.close)); + if (options.verbose) { + process.stdout.write(color('progress', ' ' + complete + ' of ' + total)); + } + }); + + // tests are complete, output some stats + // and the failures if any + runner.on('end', function() { + cursor.show(); + console.log(); + self.epilogue(); + }); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(Progress, Base); + +}).call(this,require('_process')) +},{"../utils":39,"./base":17,"_process":51}],32:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var inherits = require('../utils').inherits; +var color = Base.color; +var cursor = Base.cursor; + +/** + * Expose `Spec`. + */ + +exports = module.exports = Spec; + +/** + * Initialize a new `Spec` test reporter. + * + * @api public + * @param {Runner} runner + */ +function Spec(runner) { + Base.call(this, runner); + + var self = this; + var indents = 0; + var n = 0; + + function indent() { + return Array(indents).join(' '); + } + + runner.on('start', function() { + console.log(); + }); + + runner.on('suite', function(suite) { + ++indents; + console.log(color('suite', '%s%s'), indent(), suite.title); + }); + + runner.on('suite end', function() { + --indents; + if (indents === 1) { + console.log(); + } + }); + + runner.on('pending', function(test) { + var fmt = indent() + color('pending', ' - %s'); + console.log(fmt, test.title); + }); + + runner.on('pass', function(test) { + var fmt; + if (test.speed === 'fast') { + fmt = indent() + + color('checkmark', ' ' + Base.symbols.ok) + + color('pass', ' %s'); + cursor.CR(); + console.log(fmt, test.title); + } else { + fmt = indent() + + color('checkmark', ' ' + Base.symbols.ok) + + color('pass', ' %s') + + color(test.speed, ' (%dms)'); + cursor.CR(); + console.log(fmt, test.title, test.duration); + } + }); + + runner.on('fail', function(test) { + cursor.CR(); + console.log(indent() + color('fail', ' %d) %s'), ++n, test.title); + }); + + runner.on('end', self.epilogue.bind(self)); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(Spec, Base); + +},{"../utils":39,"./base":17}],33:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var Base = require('./base'); + +/** + * Expose `TAP`. + */ + +exports = module.exports = TAP; + +/** + * Initialize a new `TAP` reporter. + * + * @api public + * @param {Runner} runner + */ +function TAP(runner) { + Base.call(this, runner); + + var n = 1; + var passes = 0; + var failures = 0; + + runner.on('start', function() { + var total = runner.grepTotal(runner.suite); + console.log('%d..%d', 1, total); + }); + + runner.on('test end', function() { + ++n; + }); + + runner.on('pending', function(test) { + console.log('ok %d %s # SKIP -', n, title(test)); + }); + + runner.on('pass', function(test) { + passes++; + console.log('ok %d %s', n, title(test)); + }); + + runner.on('fail', function(test, err) { + failures++; + console.log('not ok %d %s', n, title(test)); + if (err.stack) { + console.log(err.stack.replace(/^/gm, ' ')); + } + }); + + runner.on('end', function() { + console.log('# tests ' + (passes + failures)); + console.log('# pass ' + passes); + console.log('# fail ' + failures); + }); +} + +/** + * Return a TAP-safe title of `test` + * + * @api private + * @param {Object} test + * @return {String} + */ +function title(test) { + return test.fullTitle().replace(/#/g, ''); +} + +},{"./base":17}],34:[function(require,module,exports){ +(function (global){ +/** + * Module dependencies. + */ + +var Base = require('./base'); +var utils = require('../utils'); +var inherits = utils.inherits; +var fs = require('fs'); +var escape = utils.escape; + +/** + * Save timer references to avoid Sinon interfering (see GH-237). + */ + +/* eslint-disable no-unused-vars, no-native-reassign */ +var Date = global.Date; +var setTimeout = global.setTimeout; +var setInterval = global.setInterval; +var clearTimeout = global.clearTimeout; +var clearInterval = global.clearInterval; +/* eslint-enable no-unused-vars, no-native-reassign */ + +/** + * Expose `XUnit`. + */ + +exports = module.exports = XUnit; + +/** + * Initialize a new `XUnit` reporter. + * + * @api public + * @param {Runner} runner + */ +function XUnit(runner, options) { + Base.call(this, runner); + + var stats = this.stats; + var tests = []; + var self = this; + + if (options.reporterOptions && options.reporterOptions.output) { + if (!fs.createWriteStream) { + throw new Error('file output not supported in browser'); + } + self.fileStream = fs.createWriteStream(options.reporterOptions.output); + } + + runner.on('pending', function(test) { + tests.push(test); + }); + + runner.on('pass', function(test) { + tests.push(test); + }); + + runner.on('fail', function(test) { + tests.push(test); + }); + + runner.on('end', function() { + self.write(tag('testsuite', { + name: 'Mocha Tests', + tests: stats.tests, + failures: stats.failures, + errors: stats.failures, + skipped: stats.tests - stats.failures - stats.passes, + timestamp: (new Date()).toUTCString(), + time: (stats.duration / 1000) || 0 + }, false)); + + tests.forEach(function(t) { + self.test(t); + }); + + self.write('</testsuite>'); + }); +} + +/** + * Inherit from `Base.prototype`. + */ +inherits(XUnit, Base); + +/** + * Override done to close the stream (if it's a file). + * + * @param failures + * @param {Function} fn + */ +XUnit.prototype.done = function(failures, fn) { + if (this.fileStream) { + this.fileStream.end(function() { + fn(failures); + }); + } else { + fn(failures); + } +}; + +/** + * Write out the given line. + * + * @param {string} line + */ +XUnit.prototype.write = function(line) { + if (this.fileStream) { + this.fileStream.write(line + '\n'); + } else { + console.log(line); + } +}; + +/** + * Output tag for the given `test.` + * + * @param {Test} test + */ +XUnit.prototype.test = function(test) { + var attrs = { + classname: test.parent.fullTitle(), + name: test.title, + time: (test.duration / 1000) || 0 + }; + + if (test.state === 'failed') { + var err = test.err; + this.write(tag('testcase', attrs, false, tag('failure', {}, false, cdata(escape(err.message) + '\n' + err.stack)))); + } else if (test.pending) { + this.write(tag('testcase', attrs, false, tag('skipped', {}, true))); + } else { + this.write(tag('testcase', attrs, true)); + } +}; + +/** + * HTML tag helper. + * + * @param name + * @param attrs + * @param close + * @param content + * @return {string} + */ +function tag(name, attrs, close, content) { + var end = close ? '/>' : '>'; + var pairs = []; + var tag; + + for (var key in attrs) { + if (Object.prototype.hasOwnProperty.call(attrs, key)) { + pairs.push(key + '="' + escape(attrs[key]) + '"'); + } + } + + tag = '<' + name + (pairs.length ? ' ' + pairs.join(' ') : '') + end; + if (content) { + tag += content + '</' + name + end; + } + return tag; +} + +/** + * Return cdata escaped CDATA `str`. + */ + +function cdata(str) { + return '<![CDATA[' + escape(str) + ']]>'; +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../utils":39,"./base":17,"fs":41}],35:[function(require,module,exports){ +(function (global){ +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var Pending = require('./pending'); +var debug = require('debug')('mocha:runnable'); +var milliseconds = require('./ms'); +var utils = require('./utils'); +var inherits = utils.inherits; + +/** + * Save timer references to avoid Sinon interfering (see GH-237). + */ + +/* eslint-disable no-unused-vars, no-native-reassign */ +var Date = global.Date; +var setTimeout = global.setTimeout; +var setInterval = global.setInterval; +var clearTimeout = global.clearTimeout; +var clearInterval = global.clearInterval; +/* eslint-enable no-unused-vars, no-native-reassign */ + +/** + * Object#toString(). + */ + +var toString = Object.prototype.toString; + +/** + * Expose `Runnable`. + */ + +module.exports = Runnable; + +/** + * Initialize a new `Runnable` with the given `title` and callback `fn`. + * + * @param {String} title + * @param {Function} fn + * @api private + * @param {string} title + * @param {Function} fn + */ +function Runnable(title, fn) { + this.title = title; + this.fn = fn; + this.async = fn && fn.length; + this.sync = !this.async; + this._timeout = 2000; + this._slow = 75; + this._enableTimeouts = true; + this.timedOut = false; + this._trace = new Error('done() called multiple times'); +} + +/** + * Inherit from `EventEmitter.prototype`. + */ +inherits(Runnable, EventEmitter); + +/** + * Set & get timeout `ms`. + * + * @api private + * @param {number|string} ms + * @return {Runnable|number} ms or Runnable instance. + */ +Runnable.prototype.timeout = function(ms) { + if (!arguments.length) { + return this._timeout; + } + if (ms === 0) { + this._enableTimeouts = false; + } + if (typeof ms === 'string') { + ms = milliseconds(ms); + } + debug('timeout %d', ms); + this._timeout = ms; + if (this.timer) { + this.resetTimeout(); + } + return this; +}; + +/** + * Set & get slow `ms`. + * + * @api private + * @param {number|string} ms + * @return {Runnable|number} ms or Runnable instance. + */ +Runnable.prototype.slow = function(ms) { + if (!arguments.length) { + return this._slow; + } + if (typeof ms === 'string') { + ms = milliseconds(ms); + } + debug('timeout %d', ms); + this._slow = ms; + return this; +}; + +/** + * Set and get whether timeout is `enabled`. + * + * @api private + * @param {boolean} enabled + * @return {Runnable|boolean} enabled or Runnable instance. + */ +Runnable.prototype.enableTimeouts = function(enabled) { + if (!arguments.length) { + return this._enableTimeouts; + } + debug('enableTimeouts %s', enabled); + this._enableTimeouts = enabled; + return this; +}; + +/** + * Halt and mark as pending. + * + * @api private + */ +Runnable.prototype.skip = function() { + throw new Pending(); +}; + +/** + * Return the full title generated by recursively concatenating the parent's + * full title. + * + * @api public + * @return {string} + */ +Runnable.prototype.fullTitle = function() { + return this.parent.fullTitle() + ' ' + this.title; +}; + +/** + * Clear the timeout. + * + * @api private + */ +Runnable.prototype.clearTimeout = function() { + clearTimeout(this.timer); +}; + +/** + * Inspect the runnable void of private properties. + * + * @api private + * @return {string} + */ +Runnable.prototype.inspect = function() { + return JSON.stringify(this, function(key, val) { + if (key[0] === '_') { + return; + } + if (key === 'parent') { + return '#<Suite>'; + } + if (key === 'ctx') { + return '#<Context>'; + } + return val; + }, 2); +}; + +/** + * Reset the timeout. + * + * @api private + */ +Runnable.prototype.resetTimeout = function() { + var self = this; + var ms = this.timeout() || 1e9; + + if (!this._enableTimeouts) { + return; + } + this.clearTimeout(); + this.timer = setTimeout(function() { + if (!self._enableTimeouts) { + return; + } + self.callback(new Error('timeout of ' + ms + 'ms exceeded. Ensure the done() callback is being called in this test.')); + self.timedOut = true; + }, ms); +}; + +/** + * Whitelist a list of globals for this test run. + * + * @api private + * @param {string[]} globals + */ +Runnable.prototype.globals = function(globals) { + this._allowedGlobals = globals; +}; + +/** + * Run the test and invoke `fn(err)`. + * + * @param {Function} fn + * @api private + */ +Runnable.prototype.run = function(fn) { + var self = this; + var start = new Date(); + var ctx = this.ctx; + var finished; + var emitted; + + // Sometimes the ctx exists, but it is not runnable + if (ctx && ctx.runnable) { + ctx.runnable(this); + } + + // called multiple times + function multiple(err) { + if (emitted) { + return; + } + emitted = true; + self.emit('error', err || new Error('done() called multiple times; stacktrace may be inaccurate')); + } + + // finished + function done(err) { + var ms = self.timeout(); + if (self.timedOut) { + return; + } + if (finished) { + return multiple(err || self._trace); + } + + self.clearTimeout(); + self.duration = new Date() - start; + finished = true; + if (!err && self.duration > ms && self._enableTimeouts) { + err = new Error('timeout of ' + ms + 'ms exceeded. Ensure the done() callback is being called in this test.'); + } + fn(err); + } + + // for .resetTimeout() + this.callback = done; + + // explicit async with `done` argument + if (this.async) { + this.resetTimeout(); + + if (this.allowUncaught) { + return callFnAsync(this.fn); + } + try { + callFnAsync(this.fn); + } catch (err) { + done(utils.getError(err)); + } + return; + } + + if (this.allowUncaught) { + callFn(this.fn); + done(); + return; + } + + // sync or promise-returning + try { + if (this.pending) { + done(); + } else { + callFn(this.fn); + } + } catch (err) { + done(utils.getError(err)); + } + + function callFn(fn) { + var result = fn.call(ctx); + if (result && typeof result.then === 'function') { + self.resetTimeout(); + result + .then(function() { + done(); + }, + function(reason) { + done(reason || new Error('Promise rejected with no or falsy reason')); + }); + } else { + if (self.asyncOnly) { + return done(new Error('--async-only option in use without declaring `done()` or returning a promise')); + } + + done(); + } + } + + function callFnAsync(fn) { + fn.call(ctx, function(err) { + if (err instanceof Error || toString.call(err) === '[object Error]') { + return done(err); + } + if (err) { + if (Object.prototype.toString.call(err) === '[object Object]') { + return done(new Error('done() invoked with non-Error: ' + + JSON.stringify(err))); + } + return done(new Error('done() invoked with non-Error: ' + err)); + } + done(); + }); + } +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./ms":15,"./pending":16,"./utils":39,"debug":2,"events":3}],36:[function(require,module,exports){ +(function (process,global){ +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var Pending = require('./pending'); +var utils = require('./utils'); +var inherits = utils.inherits; +var debug = require('debug')('mocha:runner'); +var Runnable = require('./runnable'); +var filter = utils.filter; +var indexOf = utils.indexOf; +var keys = utils.keys; +var stackFilter = utils.stackTraceFilter(); +var stringify = utils.stringify; +var type = utils.type; +var undefinedError = utils.undefinedError; + +/** + * Non-enumerable globals. + */ + +var globals = [ + 'setTimeout', + 'clearTimeout', + 'setInterval', + 'clearInterval', + 'XMLHttpRequest', + 'Date', + 'setImmediate', + 'clearImmediate' +]; + +/** + * Expose `Runner`. + */ + +module.exports = Runner; + +/** + * Initialize a `Runner` for the given `suite`. + * + * Events: + * + * - `start` execution started + * - `end` execution complete + * - `suite` (suite) test suite execution started + * - `suite end` (suite) all tests (and sub-suites) have finished + * - `test` (test) test execution started + * - `test end` (test) test completed + * - `hook` (hook) hook execution started + * - `hook end` (hook) hook complete + * - `pass` (test) test passed + * - `fail` (test, err) test failed + * - `pending` (test) test pending + * + * @api public + * @param {Suite} suite Root suite + * @param {boolean} [delay] Whether or not to delay execution of root suite + * until ready. + */ +function Runner(suite, delay) { + var self = this; + this._globals = []; + this._abort = false; + this._delay = delay; + this.suite = suite; + this.started = false; + this.total = suite.total(); + this.failures = 0; + this.on('test end', function(test) { + self.checkGlobals(test); + }); + this.on('hook end', function(hook) { + self.checkGlobals(hook); + }); + this._defaultGrep = /.*/; + this.grep(this._defaultGrep); + this.globals(this.globalProps().concat(extraGlobals())); +} + +/** + * Wrapper for setImmediate, process.nextTick, or browser polyfill. + * + * @param {Function} fn + * @api private + */ +Runner.immediately = global.setImmediate || process.nextTick; + +/** + * Inherit from `EventEmitter.prototype`. + */ +inherits(Runner, EventEmitter); + +/** + * Run tests with full titles matching `re`. Updates runner.total + * with number of tests matched. + * + * @param {RegExp} re + * @param {Boolean} invert + * @return {Runner} for chaining + * @api public + * @param {RegExp} re + * @param {boolean} invert + * @return {Runner} Runner instance. + */ +Runner.prototype.grep = function(re, invert) { + debug('grep %s', re); + this._grep = re; + this._invert = invert; + this.total = this.grepTotal(this.suite); + return this; +}; + +/** + * Returns the number of tests matching the grep search for the + * given suite. + * + * @param {Suite} suite + * @return {Number} + * @api public + * @param {Suite} suite + * @return {number} + */ +Runner.prototype.grepTotal = function(suite) { + var self = this; + var total = 0; + + suite.eachTest(function(test) { + var match = self._grep.test(test.fullTitle()); + if (self._invert) { + match = !match; + } + if (match) { + total++; + } + }); + + return total; +}; + +/** + * Return a list of global properties. + * + * @return {Array} + * @api private + */ +Runner.prototype.globalProps = function() { + var props = keys(global); + + // non-enumerables + for (var i = 0; i < globals.length; ++i) { + if (~indexOf(props, globals[i])) { + continue; + } + props.push(globals[i]); + } + + return props; +}; + +/** + * Allow the given `arr` of globals. + * + * @param {Array} arr + * @return {Runner} for chaining + * @api public + * @param {Array} arr + * @return {Runner} Runner instance. + */ +Runner.prototype.globals = function(arr) { + if (!arguments.length) { + return this._globals; + } + debug('globals %j', arr); + this._globals = this._globals.concat(arr); + return this; +}; + +/** + * Check for global variable leaks. + * + * @api private + */ +Runner.prototype.checkGlobals = function(test) { + if (this.ignoreLeaks) { + return; + } + var ok = this._globals; + + var globals = this.globalProps(); + var leaks; + + if (test) { + ok = ok.concat(test._allowedGlobals || []); + } + + if (this.prevGlobalsLength === globals.length) { + return; + } + this.prevGlobalsLength = globals.length; + + leaks = filterLeaks(ok, globals); + this._globals = this._globals.concat(leaks); + + if (leaks.length > 1) { + this.fail(test, new Error('global leaks detected: ' + leaks.join(', ') + '')); + } else if (leaks.length) { + this.fail(test, new Error('global leak detected: ' + leaks[0])); + } +}; + +/** + * Fail the given `test`. + * + * @api private + * @param {Test} test + * @param {Error} err + */ +Runner.prototype.fail = function(test, err) { + ++this.failures; + test.state = 'failed'; + + if (!(err instanceof Error || err && typeof err.message === 'string')) { + err = new Error('the ' + type(err) + ' ' + stringify(err) + ' was thrown, throw an Error :)'); + } + + err.stack = (this.fullStackTrace || !err.stack) + ? err.stack + : stackFilter(err.stack); + + this.emit('fail', test, err); +}; + +/** + * Fail the given `hook` with `err`. + * + * Hook failures work in the following pattern: + * - If bail, then exit + * - Failed `before` hook skips all tests in a suite and subsuites, + * but jumps to corresponding `after` hook + * - Failed `before each` hook skips remaining tests in a + * suite and jumps to corresponding `after each` hook, + * which is run only once + * - Failed `after` hook does not alter + * execution order + * - Failed `after each` hook skips remaining tests in a + * suite and subsuites, but executes other `after each` + * hooks + * + * @api private + * @param {Hook} hook + * @param {Error} err + */ +Runner.prototype.failHook = function(hook, err) { + if (hook.ctx && hook.ctx.currentTest) { + hook.originalTitle = hook.originalTitle || hook.title; + hook.title = hook.originalTitle + ' for "' + hook.ctx.currentTest.title + '"'; + } + + this.fail(hook, err); + if (this.suite.bail()) { + this.emit('end'); + } +}; + +/** + * Run hook `name` callbacks and then invoke `fn()`. + * + * @api private + * @param {string} name + * @param {Function} fn + */ + +Runner.prototype.hook = function(name, fn) { + var suite = this.suite; + var hooks = suite['_' + name]; + var self = this; + + function next(i) { + var hook = hooks[i]; + if (!hook) { + return fn(); + } + self.currentRunnable = hook; + + hook.ctx.currentTest = self.test; + + self.emit('hook', hook); + + if (!hook.listeners('error').length) { + hook.on('error', function(err) { + self.failHook(hook, err); + }); + } + + hook.run(function(err) { + var testError = hook.error(); + if (testError) { + self.fail(self.test, testError); + } + if (err) { + if (err instanceof Pending) { + suite.pending = true; + } else { + self.failHook(hook, err); + + // stop executing hooks, notify callee of hook err + return fn(err); + } + } + self.emit('hook end', hook); + delete hook.ctx.currentTest; + next(++i); + }); + } + + Runner.immediately(function() { + next(0); + }); +}; + +/** + * Run hook `name` for the given array of `suites` + * in order, and callback `fn(err, errSuite)`. + * + * @api private + * @param {string} name + * @param {Array} suites + * @param {Function} fn + */ +Runner.prototype.hooks = function(name, suites, fn) { + var self = this; + var orig = this.suite; + + function next(suite) { + self.suite = suite; + + if (!suite) { + self.suite = orig; + return fn(); + } + + self.hook(name, function(err) { + if (err) { + var errSuite = self.suite; + self.suite = orig; + return fn(err, errSuite); + } + + next(suites.pop()); + }); + } + + next(suites.pop()); +}; + +/** + * Run hooks from the top level down. + * + * @param {String} name + * @param {Function} fn + * @api private + */ +Runner.prototype.hookUp = function(name, fn) { + var suites = [this.suite].concat(this.parents()).reverse(); + this.hooks(name, suites, fn); +}; + +/** + * Run hooks from the bottom up. + * + * @param {String} name + * @param {Function} fn + * @api private + */ +Runner.prototype.hookDown = function(name, fn) { + var suites = [this.suite].concat(this.parents()); + this.hooks(name, suites, fn); +}; + +/** + * Return an array of parent Suites from + * closest to furthest. + * + * @return {Array} + * @api private + */ +Runner.prototype.parents = function() { + var suite = this.suite; + var suites = []; + while (suite.parent) { + suite = suite.parent; + suites.push(suite); + } + return suites; +}; + +/** + * Run the current test and callback `fn(err)`. + * + * @param {Function} fn + * @api private + */ +Runner.prototype.runTest = function(fn) { + var self = this; + var test = this.test; + + if (this.asyncOnly) { + test.asyncOnly = true; + } + + if (this.allowUncaught) { + test.allowUncaught = true; + return test.run(fn); + } + try { + test.on('error', function(err) { + self.fail(test, err); + }); + test.run(fn); + } catch (err) { + fn(err); + } +}; + +/** + * Run tests in the given `suite` and invoke the callback `fn()` when complete. + * + * @api private + * @param {Suite} suite + * @param {Function} fn + */ +Runner.prototype.runTests = function(suite, fn) { + var self = this; + var tests = suite.tests.slice(); + var test; + + function hookErr(_, errSuite, after) { + // before/after Each hook for errSuite failed: + var orig = self.suite; + + // for failed 'after each' hook start from errSuite parent, + // otherwise start from errSuite itself + self.suite = after ? errSuite.parent : errSuite; + + if (self.suite) { + // call hookUp afterEach + self.hookUp('afterEach', function(err2, errSuite2) { + self.suite = orig; + // some hooks may fail even now + if (err2) { + return hookErr(err2, errSuite2, true); + } + // report error suite + fn(errSuite); + }); + } else { + // there is no need calling other 'after each' hooks + self.suite = orig; + fn(errSuite); + } + } + + function next(err, errSuite) { + // if we bail after first err + if (self.failures && suite._bail) { + return fn(); + } + + if (self._abort) { + return fn(); + } + + if (err) { + return hookErr(err, errSuite, true); + } + + // next test + test = tests.shift(); + + // all done + if (!test) { + return fn(); + } + + // grep + var match = self._grep.test(test.fullTitle()); + if (self._invert) { + match = !match; + } + if (!match) { + // Run immediately only if we have defined a grep. When we + // define a grep — It can cause maximum callstack error if + // the grep is doing a large recursive loop by neglecting + // all tests. The run immediately function also comes with + // a performance cost. So we don't want to run immediately + // if we run the whole test suite, because running the whole + // test suite don't do any immediate recursive loops. Thus, + // allowing a JS runtime to breathe. + if (self._grep !== self._defaultGrep) { + Runner.immediately(next); + } else { + next(); + } + return; + } + + // pending + if (test.pending) { + self.emit('pending', test); + self.emit('test end', test); + return next(); + } + + // execute test and hook(s) + self.emit('test', self.test = test); + self.hookDown('beforeEach', function(err, errSuite) { + if (suite.pending) { + self.emit('pending', test); + self.emit('test end', test); + return next(); + } + if (err) { + return hookErr(err, errSuite, false); + } + self.currentRunnable = self.test; + self.runTest(function(err) { + test = self.test; + + if (err) { + if (err instanceof Pending) { + self.emit('pending', test); + } else { + self.fail(test, err); + } + self.emit('test end', test); + + if (err instanceof Pending) { + return next(); + } + + return self.hookUp('afterEach', next); + } + + test.state = 'passed'; + self.emit('pass', test); + self.emit('test end', test); + self.hookUp('afterEach', next); + }); + }); + } + + this.next = next; + this.hookErr = hookErr; + next(); +}; + +/** + * Run the given `suite` and invoke the callback `fn()` when complete. + * + * @api private + * @param {Suite} suite + * @param {Function} fn + */ +Runner.prototype.runSuite = function(suite, fn) { + var i = 0; + var self = this; + var total = this.grepTotal(suite); + var afterAllHookCalled = false; + + debug('run suite %s', suite.fullTitle()); + + if (!total || (self.failures && suite._bail)) { + return fn(); + } + + this.emit('suite', this.suite = suite); + + function next(errSuite) { + if (errSuite) { + // current suite failed on a hook from errSuite + if (errSuite === suite) { + // if errSuite is current suite + // continue to the next sibling suite + return done(); + } + // errSuite is among the parents of current suite + // stop execution of errSuite and all sub-suites + return done(errSuite); + } + + if (self._abort) { + return done(); + } + + var curr = suite.suites[i++]; + if (!curr) { + return done(); + } + + // Avoid grep neglecting large number of tests causing a + // huge recursive loop and thus a maximum call stack error. + // See comment in `this.runTests()` for more information. + if (self._grep !== self._defaultGrep) { + Runner.immediately(function() { + self.runSuite(curr, next); + }); + } else { + self.runSuite(curr, next); + } + } + + function done(errSuite) { + self.suite = suite; + self.nextSuite = next; + + if (afterAllHookCalled) { + fn(errSuite); + } else { + // mark that the afterAll block has been called once + // and so can be skipped if there is an error in it. + afterAllHookCalled = true; + self.hook('afterAll', function() { + self.emit('suite end', suite); + fn(errSuite); + }); + } + } + + this.nextSuite = next; + + this.hook('beforeAll', function(err) { + if (err) { + return done(); + } + self.runTests(suite, next); + }); +}; + +/** + * Handle uncaught exceptions. + * + * @param {Error} err + * @api private + */ +Runner.prototype.uncaught = function(err) { + if (err) { + debug('uncaught exception %s', err !== function() { + return this; + }.call(err) ? err : (err.message || err)); + } else { + debug('uncaught undefined exception'); + err = undefinedError(); + } + err.uncaught = true; + + var runnable = this.currentRunnable; + + if (!runnable) { + runnable = new Runnable('Uncaught error outside test suite'); + runnable.parent = this.suite; + + if (this.started) { + this.fail(runnable, err); + } else { + // Can't recover from this failure + this.emit('start'); + this.fail(runnable, err); + this.emit('end'); + } + + return; + } + + runnable.clearTimeout(); + + // Ignore errors if complete + if (runnable.state) { + return; + } + this.fail(runnable, err); + + // recover from test + if (runnable.type === 'test') { + this.emit('test end', runnable); + this.hookUp('afterEach', this.next); + return; + } + + // recover from hooks + if (runnable.type === 'hook') { + var errSuite = this.suite; + // if hook failure is in afterEach block + if (runnable.fullTitle().indexOf('after each') > -1) { + return this.hookErr(err, errSuite, true); + } + // if hook failure is in beforeEach block + if (runnable.fullTitle().indexOf('before each') > -1) { + return this.hookErr(err, errSuite, false); + } + // if hook failure is in after or before blocks + return this.nextSuite(errSuite); + } + + // bail + this.emit('end'); +}; + +/** + * Run the root suite and invoke `fn(failures)` + * on completion. + * + * @param {Function} fn + * @return {Runner} for chaining + * @api public + * @param {Function} fn + * @return {Runner} Runner instance. + */ +Runner.prototype.run = function(fn) { + var self = this; + var rootSuite = this.suite; + + fn = fn || function() {}; + + function uncaught(err) { + self.uncaught(err); + } + + function start() { + self.started = true; + self.emit('start'); + self.runSuite(rootSuite, function() { + debug('finished running'); + self.emit('end'); + }); + } + + debug('start'); + + // callback + this.on('end', function() { + debug('end'); + process.removeListener('uncaughtException', uncaught); + fn(self.failures); + }); + + // uncaught exception + process.on('uncaughtException', uncaught); + + if (this._delay) { + // for reporters, I guess. + // might be nice to debounce some dots while we wait. + this.emit('waiting', rootSuite); + rootSuite.once('run', start); + } else { + start(); + } + + return this; +}; + +/** + * Cleanly abort execution. + * + * @api public + * @return {Runner} Runner instance. + */ +Runner.prototype.abort = function() { + debug('aborting'); + this._abort = true; + + return this; +}; + +/** + * Filter leaks with the given globals flagged as `ok`. + * + * @api private + * @param {Array} ok + * @param {Array} globals + * @return {Array} + */ +function filterLeaks(ok, globals) { + return filter(globals, function(key) { + // Firefox and Chrome exposes iframes as index inside the window object + if (/^d+/.test(key)) { + return false; + } + + // in firefox + // if runner runs in an iframe, this iframe's window.getInterface method not init at first + // it is assigned in some seconds + if (global.navigator && (/^getInterface/).test(key)) { + return false; + } + + // an iframe could be approached by window[iframeIndex] + // in ie6,7,8 and opera, iframeIndex is enumerable, this could cause leak + if (global.navigator && (/^\d+/).test(key)) { + return false; + } + + // Opera and IE expose global variables for HTML element IDs (issue #243) + if (/^mocha-/.test(key)) { + return false; + } + + var matched = filter(ok, function(ok) { + if (~ok.indexOf('*')) { + return key.indexOf(ok.split('*')[0]) === 0; + } + return key === ok; + }); + return !matched.length && (!global.navigator || key !== 'onerror'); + }); +} + +/** + * Array of globals dependent on the environment. + * + * @return {Array} + * @api private + */ +function extraGlobals() { + if (typeof process === 'object' && typeof process.version === 'string') { + var parts = process.version.split('.'); + var nodeVersion = utils.reduce(parts, function(a, v) { + return a << 8 | v; + }); + + // 'errno' was renamed to process._errno in v0.9.11. + + if (nodeVersion < 0x00090B) { + return ['errno']; + } + } + + return []; +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./pending":16,"./runnable":35,"./utils":39,"_process":51,"debug":2,"events":3}],37:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var Hook = require('./hook'); +var utils = require('./utils'); +var inherits = utils.inherits; +var debug = require('debug')('mocha:suite'); +var milliseconds = require('./ms'); + +/** + * Expose `Suite`. + */ + +exports = module.exports = Suite; + +/** + * Create a new `Suite` with the given `title` and parent `Suite`. When a suite + * with the same title is already present, that suite is returned to provide + * nicer reporter and more flexible meta-testing. + * + * @api public + * @param {Suite} parent + * @param {string} title + * @return {Suite} + */ +exports.create = function(parent, title) { + var suite = new Suite(title, parent.ctx); + suite.parent = parent; + if (parent.pending) { + suite.pending = true; + } + title = suite.fullTitle(); + parent.addSuite(suite); + return suite; +}; + +/** + * Initialize a new `Suite` with the given `title` and `ctx`. + * + * @api private + * @param {string} title + * @param {Context} parentContext + */ +function Suite(title, parentContext) { + this.title = title; + function Context() {} + Context.prototype = parentContext; + this.ctx = new Context(); + this.suites = []; + this.tests = []; + this.pending = false; + this._beforeEach = []; + this._beforeAll = []; + this._afterEach = []; + this._afterAll = []; + this.root = !title; + this._timeout = 2000; + this._enableTimeouts = true; + this._slow = 75; + this._bail = false; + this.delayed = false; +} + +/** + * Inherit from `EventEmitter.prototype`. + */ +inherits(Suite, EventEmitter); + +/** + * Return a clone of this `Suite`. + * + * @api private + * @return {Suite} + */ +Suite.prototype.clone = function() { + var suite = new Suite(this.title); + debug('clone'); + suite.ctx = this.ctx; + suite.timeout(this.timeout()); + suite.enableTimeouts(this.enableTimeouts()); + suite.slow(this.slow()); + suite.bail(this.bail()); + return suite; +}; + +/** + * Set timeout `ms` or short-hand such as "2s". + * + * @api private + * @param {number|string} ms + * @return {Suite|number} for chaining + */ +Suite.prototype.timeout = function(ms) { + if (!arguments.length) { + return this._timeout; + } + if (ms.toString() === '0') { + this._enableTimeouts = false; + } + if (typeof ms === 'string') { + ms = milliseconds(ms); + } + debug('timeout %d', ms); + this._timeout = parseInt(ms, 10); + return this; +}; + +/** + * Set timeout to `enabled`. + * + * @api private + * @param {boolean} enabled + * @return {Suite|boolean} self or enabled + */ +Suite.prototype.enableTimeouts = function(enabled) { + if (!arguments.length) { + return this._enableTimeouts; + } + debug('enableTimeouts %s', enabled); + this._enableTimeouts = enabled; + return this; +}; + +/** + * Set slow `ms` or short-hand such as "2s". + * + * @api private + * @param {number|string} ms + * @return {Suite|number} for chaining + */ +Suite.prototype.slow = function(ms) { + if (!arguments.length) { + return this._slow; + } + if (typeof ms === 'string') { + ms = milliseconds(ms); + } + debug('slow %d', ms); + this._slow = ms; + return this; +}; + +/** + * Sets whether to bail after first error. + * + * @api private + * @param {boolean} bail + * @return {Suite|number} for chaining + */ +Suite.prototype.bail = function(bail) { + if (!arguments.length) { + return this._bail; + } + debug('bail %s', bail); + this._bail = bail; + return this; +}; + +/** + * Run `fn(test[, done])` before running tests. + * + * @api private + * @param {string} title + * @param {Function} fn + * @return {Suite} for chaining + */ +Suite.prototype.beforeAll = function(title, fn) { + if (this.pending) { + return this; + } + if (typeof title === 'function') { + fn = title; + title = fn.name; + } + title = '"before all" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._beforeAll.push(hook); + this.emit('beforeAll', hook); + return this; +}; + +/** + * Run `fn(test[, done])` after running tests. + * + * @api private + * @param {string} title + * @param {Function} fn + * @return {Suite} for chaining + */ +Suite.prototype.afterAll = function(title, fn) { + if (this.pending) { + return this; + } + if (typeof title === 'function') { + fn = title; + title = fn.name; + } + title = '"after all" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._afterAll.push(hook); + this.emit('afterAll', hook); + return this; +}; + +/** + * Run `fn(test[, done])` before each test case. + * + * @api private + * @param {string} title + * @param {Function} fn + * @return {Suite} for chaining + */ +Suite.prototype.beforeEach = function(title, fn) { + if (this.pending) { + return this; + } + if (typeof title === 'function') { + fn = title; + title = fn.name; + } + title = '"before each" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._beforeEach.push(hook); + this.emit('beforeEach', hook); + return this; +}; + +/** + * Run `fn(test[, done])` after each test case. + * + * @api private + * @param {string} title + * @param {Function} fn + * @return {Suite} for chaining + */ +Suite.prototype.afterEach = function(title, fn) { + if (this.pending) { + return this; + } + if (typeof title === 'function') { + fn = title; + title = fn.name; + } + title = '"after each" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._afterEach.push(hook); + this.emit('afterEach', hook); + return this; +}; + +/** + * Add a test `suite`. + * + * @api private + * @param {Suite} suite + * @return {Suite} for chaining + */ +Suite.prototype.addSuite = function(suite) { + suite.parent = this; + suite.timeout(this.timeout()); + suite.enableTimeouts(this.enableTimeouts()); + suite.slow(this.slow()); + suite.bail(this.bail()); + this.suites.push(suite); + this.emit('suite', suite); + return this; +}; + +/** + * Add a `test` to this suite. + * + * @api private + * @param {Test} test + * @return {Suite} for chaining + */ +Suite.prototype.addTest = function(test) { + test.parent = this; + test.timeout(this.timeout()); + test.enableTimeouts(this.enableTimeouts()); + test.slow(this.slow()); + test.ctx = this.ctx; + this.tests.push(test); + this.emit('test', test); + return this; +}; + +/** + * Return the full title generated by recursively concatenating the parent's + * full title. + * + * @api public + * @return {string} + */ +Suite.prototype.fullTitle = function() { + if (this.parent) { + var full = this.parent.fullTitle(); + if (full) { + return full + ' ' + this.title; + } + } + return this.title; +}; + +/** + * Return the total number of tests. + * + * @api public + * @return {number} + */ +Suite.prototype.total = function() { + return utils.reduce(this.suites, function(sum, suite) { + return sum + suite.total(); + }, 0) + this.tests.length; +}; + +/** + * Iterates through each suite recursively to find all tests. Applies a + * function in the format `fn(test)`. + * + * @api private + * @param {Function} fn + * @return {Suite} + */ +Suite.prototype.eachTest = function(fn) { + utils.forEach(this.tests, fn); + utils.forEach(this.suites, function(suite) { + suite.eachTest(fn); + }); + return this; +}; + +/** + * This will run the root suite if we happen to be running in delayed mode. + */ +Suite.prototype.run = function run() { + if (this.root) { + this.emit('run'); + } +}; + +},{"./hook":7,"./ms":15,"./utils":39,"debug":2,"events":3}],38:[function(require,module,exports){ +/** + * Module dependencies. + */ + +var Runnable = require('./runnable'); +var inherits = require('./utils').inherits; + +/** + * Expose `Test`. + */ + +module.exports = Test; + +/** + * Initialize a new `Test` with the given `title` and callback `fn`. + * + * @api private + * @param {String} title + * @param {Function} fn + */ +function Test(title, fn) { + Runnable.call(this, title, fn); + this.pending = !fn; + this.type = 'test'; +} + +/** + * Inherit from `Runnable.prototype`. + */ +inherits(Test, Runnable); + +},{"./runnable":35,"./utils":39}],39:[function(require,module,exports){ +(function (process,Buffer){ +/* eslint-env browser */ + +/** + * Module dependencies. + */ + +var basename = require('path').basename; +var debug = require('debug')('mocha:watch'); +var exists = require('fs').existsSync || require('path').existsSync; +var glob = require('glob'); +var join = require('path').join; +var readdirSync = require('fs').readdirSync; +var statSync = require('fs').statSync; +var watchFile = require('fs').watchFile; + +/** + * Ignored directories. + */ + +var ignore = ['node_modules', '.git']; + +exports.inherits = require('util').inherits; + +/** + * Escape special characters in the given string of html. + * + * @api private + * @param {string} html + * @return {string} + */ +exports.escape = function(html) { + return String(html) + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(/</g, '<') + .replace(/>/g, '>'); +}; + +/** + * Array#forEach (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Function} fn + * @param {Object} scope + */ +exports.forEach = function(arr, fn, scope) { + for (var i = 0, l = arr.length; i < l; i++) { + fn.call(scope, arr[i], i); + } +}; + +/** + * Test if the given obj is type of string. + * + * @api private + * @param {Object} obj + * @return {boolean} + */ +exports.isString = function(obj) { + return typeof obj === 'string'; +}; + +/** + * Array#map (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Function} fn + * @param {Object} scope + * @return {Array} + */ +exports.map = function(arr, fn, scope) { + var result = []; + for (var i = 0, l = arr.length; i < l; i++) { + result.push(fn.call(scope, arr[i], i, arr)); + } + return result; +}; + +/** + * Array#indexOf (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Object} obj to find index of + * @param {number} start + * @return {number} + */ +exports.indexOf = function(arr, obj, start) { + for (var i = start || 0, l = arr.length; i < l; i++) { + if (arr[i] === obj) { + return i; + } + } + return -1; +}; + +/** + * Array#reduce (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Function} fn + * @param {Object} val Initial value. + * @return {*} + */ +exports.reduce = function(arr, fn, val) { + var rval = val; + + for (var i = 0, l = arr.length; i < l; i++) { + rval = fn(rval, arr[i], i, arr); + } + + return rval; +}; + +/** + * Array#filter (<=IE8) + * + * @api private + * @param {Array} arr + * @param {Function} fn + * @return {Array} + */ +exports.filter = function(arr, fn) { + var ret = []; + + for (var i = 0, l = arr.length; i < l; i++) { + var val = arr[i]; + if (fn(val, i, arr)) { + ret.push(val); + } + } + + return ret; +}; + +/** + * Object.keys (<=IE8) + * + * @api private + * @param {Object} obj + * @return {Array} keys + */ +exports.keys = typeof Object.keys === 'function' ? Object.keys : function(obj) { + var keys = []; + var has = Object.prototype.hasOwnProperty; // for `window` on <=IE8 + + for (var key in obj) { + if (has.call(obj, key)) { + keys.push(key); + } + } + + return keys; +}; + +/** + * Watch the given `files` for changes + * and invoke `fn(file)` on modification. + * + * @api private + * @param {Array} files + * @param {Function} fn + */ +exports.watch = function(files, fn) { + var options = { interval: 100 }; + files.forEach(function(file) { + debug('file %s', file); + watchFile(file, options, function(curr, prev) { + if (prev.mtime < curr.mtime) { + fn(file); + } + }); + }); +}; + +/** + * Array.isArray (<=IE8) + * + * @api private + * @param {Object} obj + * @return {Boolean} + */ +var isArray = typeof Array.isArray === 'function' ? Array.isArray : function(obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; +}; + +/** + * Buffer.prototype.toJSON polyfill. + * + * @type {Function} + */ +if (typeof Buffer !== 'undefined' && Buffer.prototype) { + Buffer.prototype.toJSON = Buffer.prototype.toJSON || function() { + return Array.prototype.slice.call(this, 0); + }; +} + +/** + * Ignored files. + * + * @api private + * @param {string} path + * @return {boolean} + */ +function ignored(path) { + return !~ignore.indexOf(path); +} + +/** + * Lookup files in the given `dir`. + * + * @api private + * @param {string} dir + * @param {string[]} [ext=['.js']] + * @param {Array} [ret=[]] + * @return {Array} + */ +exports.files = function(dir, ext, ret) { + ret = ret || []; + ext = ext || ['js']; + + var re = new RegExp('\\.(' + ext.join('|') + ')$'); + + readdirSync(dir) + .filter(ignored) + .forEach(function(path) { + path = join(dir, path); + if (statSync(path).isDirectory()) { + exports.files(path, ext, ret); + } else if (path.match(re)) { + ret.push(path); + } + }); + + return ret; +}; + +/** + * Compute a slug from the given `str`. + * + * @api private + * @param {string} str + * @return {string} + */ +exports.slug = function(str) { + return str + .toLowerCase() + .replace(/ +/g, '-') + .replace(/[^-\w]/g, ''); +}; + +/** + * Strip the function definition from `str`, and re-indent for pre whitespace. + * + * @param {string} str + * @return {string} + */ +exports.clean = function(str) { + str = str + .replace(/\r\n?|[\n\u2028\u2029]/g, '\n').replace(/^\uFEFF/, '') + .replace(/^function *\(.*\)\s*{|\(.*\) *=> *{?/, '') + .replace(/\s+\}$/, ''); + + var spaces = str.match(/^\n?( *)/)[1].length; + var tabs = str.match(/^\n?(\t*)/)[1].length; + var re = new RegExp('^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs ? tabs : spaces) + '}', 'gm'); + + str = str.replace(re, ''); + + return exports.trim(str); +}; + +/** + * Trim the given `str`. + * + * @api private + * @param {string} str + * @return {string} + */ +exports.trim = function(str) { + return str.replace(/^\s+|\s+$/g, ''); +}; + +/** + * Parse the given `qs`. + * + * @api private + * @param {string} qs + * @return {Object} + */ +exports.parseQuery = function(qs) { + return exports.reduce(qs.replace('?', '').split('&'), function(obj, pair) { + var i = pair.indexOf('='); + var key = pair.slice(0, i); + var val = pair.slice(++i); + + obj[key] = decodeURIComponent(val); + return obj; + }, {}); +}; + +/** + * Highlight the given string of `js`. + * + * @api private + * @param {string} js + * @return {string} + */ +function highlight(js) { + return js + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/\/\/(.*)/gm, '<span class="comment">//$1</span>') + .replace(/('.*?')/gm, '<span class="string">$1</span>') + .replace(/(\d+\.\d+)/gm, '<span class="number">$1</span>') + .replace(/(\d+)/gm, '<span class="number">$1</span>') + .replace(/\bnew[ \t]+(\w+)/gm, '<span class="keyword">new</span> <span class="init">$1</span>') + .replace(/\b(function|new|throw|return|var|if|else)\b/gm, '<span class="keyword">$1</span>'); +} + +/** + * Highlight the contents of tag `name`. + * + * @api private + * @param {string} name + */ +exports.highlightTags = function(name) { + var code = document.getElementById('mocha').getElementsByTagName(name); + for (var i = 0, len = code.length; i < len; ++i) { + code[i].innerHTML = highlight(code[i].innerHTML); + } +}; + +/** + * If a value could have properties, and has none, this function is called, + * which returns a string representation of the empty value. + * + * Functions w/ no properties return `'[Function]'` + * Arrays w/ length === 0 return `'[]'` + * Objects w/ no properties return `'{}'` + * All else: return result of `value.toString()` + * + * @api private + * @param {*} value The value to inspect. + * @param {string} [type] The type of the value, if known. + * @returns {string} + */ +function emptyRepresentation(value, type) { + type = type || exports.type(value); + + switch (type) { + case 'function': + return '[Function]'; + case 'object': + return '{}'; + case 'array': + return '[]'; + default: + return value.toString(); + } +} + +/** + * Takes some variable and asks `Object.prototype.toString()` what it thinks it + * is. + * + * @api private + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString + * @param {*} value The value to test. + * @returns {string} + * @example + * type({}) // 'object' + * type([]) // 'array' + * type(1) // 'number' + * type(false) // 'boolean' + * type(Infinity) // 'number' + * type(null) // 'null' + * type(new Date()) // 'date' + * type(/foo/) // 'regexp' + * type('type') // 'string' + * type(global) // 'global' + */ +exports.type = function type(value) { + if (value === undefined) { + return 'undefined'; + } else if (value === null) { + return 'null'; + } else if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { + return 'buffer'; + } + return Object.prototype.toString.call(value) + .replace(/^\[.+\s(.+?)\]$/, '$1') + .toLowerCase(); +}; + +/** + * Stringify `value`. Different behavior depending on type of value: + * + * - If `value` is undefined or null, return `'[undefined]'` or `'[null]'`, respectively. + * - If `value` is not an object, function or array, return result of `value.toString()` wrapped in double-quotes. + * - If `value` is an *empty* object, function, or array, return result of function + * {@link emptyRepresentation}. + * - If `value` has properties, call {@link exports.canonicalize} on it, then return result of + * JSON.stringify(). + * + * @api private + * @see exports.type + * @param {*} value + * @return {string} + */ +exports.stringify = function(value) { + var type = exports.type(value); + + if (!~exports.indexOf(['object', 'array', 'function'], type)) { + if (type !== 'buffer') { + return jsonStringify(value); + } + var json = value.toJSON(); + // Based on the toJSON result + return jsonStringify(json.data && json.type ? json.data : json, 2) + .replace(/,(\n|$)/g, '$1'); + } + + for (var prop in value) { + if (Object.prototype.hasOwnProperty.call(value, prop)) { + return jsonStringify(exports.canonicalize(value), 2).replace(/,(\n|$)/g, '$1'); + } + } + + return emptyRepresentation(value, type); +}; + +/** + * like JSON.stringify but more sense. + * + * @api private + * @param {Object} object + * @param {number=} spaces + * @param {number=} depth + * @returns {*} + */ +function jsonStringify(object, spaces, depth) { + if (typeof spaces === 'undefined') { + // primitive types + return _stringify(object); + } + + depth = depth || 1; + var space = spaces * depth; + var str = isArray(object) ? '[' : '{'; + var end = isArray(object) ? ']' : '}'; + var length = object.length || exports.keys(object).length; + // `.repeat()` polyfill + function repeat(s, n) { + return new Array(n).join(s); + } + + function _stringify(val) { + switch (exports.type(val)) { + case 'null': + case 'undefined': + val = '[' + val + ']'; + break; + case 'array': + case 'object': + val = jsonStringify(val, spaces, depth + 1); + break; + case 'boolean': + case 'regexp': + case 'number': + val = val === 0 && (1 / val) === -Infinity // `-0` + ? '-0' + : val.toString(); + break; + case 'date': + var sDate = isNaN(val.getTime()) // Invalid date + ? val.toString() + : val.toISOString(); + val = '[Date: ' + sDate + ']'; + break; + case 'buffer': + var json = val.toJSON(); + // Based on the toJSON result + json = json.data && json.type ? json.data : json; + val = '[Buffer: ' + jsonStringify(json, 2, depth + 1) + ']'; + break; + default: + val = (val === '[Function]' || val === '[Circular]') + ? val + : JSON.stringify(val); // string + } + return val; + } + + for (var i in object) { + if (!object.hasOwnProperty(i)) { + continue; // not my business + } + --length; + str += '\n ' + repeat(' ', space) + + (isArray(object) ? '' : '"' + i + '": ') // key + + _stringify(object[i]) // value + + (length ? ',' : ''); // comma + } + + return str + // [], {} + + (str.length !== 1 ? '\n' + repeat(' ', --space) + end : end); +} + +/** + * Test if a value is a buffer. + * + * @api private + * @param {*} value The value to test. + * @return {boolean} True if `value` is a buffer, otherwise false + */ +exports.isBuffer = function(value) { + return typeof Buffer !== 'undefined' && Buffer.isBuffer(value); +}; + +/** + * Return a new Thing that has the keys in sorted order. Recursive. + * + * If the Thing... + * - has already been seen, return string `'[Circular]'` + * - is `undefined`, return string `'[undefined]'` + * - is `null`, return value `null` + * - is some other primitive, return the value + * - is not a primitive or an `Array`, `Object`, or `Function`, return the value of the Thing's `toString()` method + * - is a non-empty `Array`, `Object`, or `Function`, return the result of calling this function again. + * - is an empty `Array`, `Object`, or `Function`, return the result of calling `emptyRepresentation()` + * + * @api private + * @see {@link exports.stringify} + * @param {*} value Thing to inspect. May or may not have properties. + * @param {Array} [stack=[]] Stack of seen values + * @return {(Object|Array|Function|string|undefined)} + */ +exports.canonicalize = function(value, stack) { + var canonicalizedObj; + /* eslint-disable no-unused-vars */ + var prop; + /* eslint-enable no-unused-vars */ + var type = exports.type(value); + function withStack(value, fn) { + stack.push(value); + fn(); + stack.pop(); + } + + stack = stack || []; + + if (exports.indexOf(stack, value) !== -1) { + return '[Circular]'; + } + + switch (type) { + case 'undefined': + case 'buffer': + case 'null': + canonicalizedObj = value; + break; + case 'array': + withStack(value, function() { + canonicalizedObj = exports.map(value, function(item) { + return exports.canonicalize(item, stack); + }); + }); + break; + case 'function': + /* eslint-disable guard-for-in */ + for (prop in value) { + canonicalizedObj = {}; + break; + } + /* eslint-enable guard-for-in */ + if (!canonicalizedObj) { + canonicalizedObj = emptyRepresentation(value, type); + break; + } + /* falls through */ + case 'object': + canonicalizedObj = canonicalizedObj || {}; + withStack(value, function() { + exports.forEach(exports.keys(value).sort(), function(key) { + canonicalizedObj[key] = exports.canonicalize(value[key], stack); + }); + }); + break; + case 'date': + case 'number': + case 'regexp': + case 'boolean': + canonicalizedObj = value; + break; + default: + canonicalizedObj = value.toString(); + } + + return canonicalizedObj; +}; + +/** + * Lookup file names at the given `path`. + * + * @api public + * @param {string} path Base path to start searching from. + * @param {string[]} extensions File extensions to look for. + * @param {boolean} recursive Whether or not to recurse into subdirectories. + * @return {string[]} An array of paths. + */ +exports.lookupFiles = function lookupFiles(path, extensions, recursive) { + var files = []; + var re = new RegExp('\\.(' + extensions.join('|') + ')$'); + + if (!exists(path)) { + if (exists(path + '.js')) { + path += '.js'; + } else { + files = glob.sync(path); + if (!files.length) { + throw new Error("cannot resolve path (or pattern) '" + path + "'"); + } + return files; + } + } + + try { + var stat = statSync(path); + if (stat.isFile()) { + return path; + } + } catch (err) { + // ignore error + return; + } + + readdirSync(path).forEach(function(file) { + file = join(path, file); + try { + var stat = statSync(file); + if (stat.isDirectory()) { + if (recursive) { + files = files.concat(lookupFiles(file, extensions, recursive)); + } + return; + } + } catch (err) { + // ignore error + return; + } + if (!stat.isFile() || !re.test(file) || basename(file)[0] === '.') { + return; + } + files.push(file); + }); + + return files; +}; + +/** + * Generate an undefined error with a message warning the user. + * + * @return {Error} + */ + +exports.undefinedError = function() { + return new Error('Caught undefined error, did you throw without specifying what?'); +}; + +/** + * Generate an undefined error if `err` is not defined. + * + * @param {Error} err + * @return {Error} + */ + +exports.getError = function(err) { + return err || exports.undefinedError(); +}; + +/** + * @summary + * This Filter based on `mocha-clean` module.(see: `github.com/rstacruz/mocha-clean`) + * @description + * When invoking this function you get a filter function that get the Error.stack as an input, + * and return a prettify output. + * (i.e: strip Mocha and internal node functions from stack trace). + * @returns {Function} + */ +exports.stackTraceFilter = function() { + // TODO: Replace with `process.browser` + var slash = '/'; + var is = typeof document === 'undefined' ? { node: true } : { browser: true }; + var cwd = is.node + ? process.cwd() + slash + : (typeof location === 'undefined' ? window.location : location).href.replace(/\/[^\/]*$/, '/'); + + function isMochaInternal(line) { + return (~line.indexOf('node_modules' + slash + 'mocha' + slash)) + || (~line.indexOf('components' + slash + 'mochajs' + slash)) + || (~line.indexOf('components' + slash + 'mocha' + slash)) + || (~line.indexOf(slash + 'mocha.js')); + } + + function isNodeInternal(line) { + return (~line.indexOf('(timers.js:')) + || (~line.indexOf('(events.js:')) + || (~line.indexOf('(node.js:')) + || (~line.indexOf('(module.js:')) + || (~line.indexOf('GeneratorFunctionPrototype.next (native)')) + || false; + } + + return function(stack) { + stack = stack.split('\n'); + + stack = exports.reduce(stack, function(list, line) { + if (isMochaInternal(line)) { + return list; + } + + if (is.node && isNodeInternal(line)) { + return list; + } + + // Clean up cwd(absolute) + list.push(line.replace(cwd, '')); + return list; + }, []); + + return stack.join('\n'); + }; +}; + +}).call(this,require('_process'),require("buffer").Buffer) +},{"_process":51,"buffer":43,"debug":2,"fs":41,"glob":41,"path":41,"util":66}],40:[function(require,module,exports){ +(function (process){ +var WritableStream = require('stream').Writable +var inherits = require('util').inherits + +module.exports = BrowserStdout + + +inherits(BrowserStdout, WritableStream) + +function BrowserStdout(opts) { + if (!(this instanceof BrowserStdout)) return new BrowserStdout(opts) + + opts = opts || {} + WritableStream.call(this, opts) + this.label = (opts.label !== undefined) ? opts.label : 'stdout' +} + +BrowserStdout.prototype._write = function(chunks, encoding, cb) { + var output = chunks.toString ? chunks.toString() : chunks + if (this.label === false) { + console.log(output) + } else { + console.log(this.label+':', output) + } + process.nextTick(cb) +} + +}).call(this,require('_process')) +},{"_process":51,"stream":63,"util":66}],41:[function(require,module,exports){ + +},{}],42:[function(require,module,exports){ +arguments[4][41][0].apply(exports,arguments) +},{"dup":41}],43:[function(require,module,exports){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> + * @license MIT + */ + +var base64 = require('base64-js') +var ieee754 = require('ieee754') +var isArray = require('is-array') + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 +Buffer.poolSize = 8192 // not used by this implementation + +var rootParent = {} + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property + * on objects. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = (function () { + function Bar () {} + try { + var arr = new Uint8Array(1) + arr.foo = function () { return 42 } + arr.constructor = Bar + return arr.foo() === 42 && // typed array instances can be augmented + arr.constructor === Bar && // constructor can be set + typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` + arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` + } catch (e) { + return false + } +})() + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +/** + * Class: Buffer + * ============= + * + * The Buffer constructor returns instances of `Uint8Array` that are augmented + * with function properties for all the node `Buffer` API functions. We use + * `Uint8Array` so that square bracket notation works as expected -- it returns + * a single octet. + * + * By augmenting the instances, we can avoid modifying the `Uint8Array` + * prototype. + */ +function Buffer (arg) { + if (!(this instanceof Buffer)) { + // Avoid going through an ArgumentsAdaptorTrampoline in the common case. + if (arguments.length > 1) return new Buffer(arg, arguments[1]) + return new Buffer(arg) + } + + this.length = 0 + this.parent = undefined + + // Common case. + if (typeof arg === 'number') { + return fromNumber(this, arg) + } + + // Slightly less common case. + if (typeof arg === 'string') { + return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8') + } + + // Unusual. + return fromObject(this, arg) +} + +function fromNumber (that, length) { + that = allocate(that, length < 0 ? 0 : checked(length) | 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < length; i++) { + that[i] = 0 + } + } + return that +} + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8' + + // Assumption: byteLength() return value is always < kMaxLength. + var length = byteLength(string, encoding) | 0 + that = allocate(that, length) + + that.write(string, encoding) + return that +} + +function fromObject (that, object) { + if (Buffer.isBuffer(object)) return fromBuffer(that, object) + + if (isArray(object)) return fromArray(that, object) + + if (object == null) { + throw new TypeError('must start with number, buffer, array or string') + } + + if (typeof ArrayBuffer !== 'undefined') { + if (object.buffer instanceof ArrayBuffer) { + return fromTypedArray(that, object) + } + if (object instanceof ArrayBuffer) { + return fromArrayBuffer(that, object) + } + } + + if (object.length) return fromArrayLike(that, object) + + return fromJsonObject(that, object) +} + +function fromBuffer (that, buffer) { + var length = checked(buffer.length) | 0 + that = allocate(that, length) + buffer.copy(that, 0, 0, length) + return that +} + +function fromArray (that, array) { + var length = checked(array.length) | 0 + that = allocate(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +// Duplicate of fromArray() to keep fromArray() monomorphic. +function fromTypedArray (that, array) { + var length = checked(array.length) | 0 + that = allocate(that, length) + // Truncating the elements is probably not what people expect from typed + // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior + // of the old Buffer constructor. + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function fromArrayBuffer (that, array) { + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + array.byteLength + that = Buffer._augment(new Uint8Array(array)) + } else { + // Fallback: Return an object instance of the Buffer class + that = fromTypedArray(that, new Uint8Array(array)) + } + return that +} + +function fromArrayLike (that, array) { + var length = checked(array.length) | 0 + that = allocate(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object. +// Returns a zero-length buffer for inputs that don't conform to the spec. +function fromJsonObject (that, object) { + var array + var length = 0 + + if (object.type === 'Buffer' && isArray(object.data)) { + array = object.data + length = checked(array.length) | 0 + } + that = allocate(that, length) + + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function allocate (that, length) { + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = Buffer._augment(new Uint8Array(length)) + } else { + // Fallback: Return an object instance of the Buffer class + that.length = length + that._isBuffer = true + } + + var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1 + if (fromPool) that.parent = rootParent + + return that +} + +function checked (length) { + // Note: cannot use `length < kMaxLength` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (subject, encoding) { + if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding) + + var buf = new Buffer(subject, encoding) + delete buf.parent + return buf +} + +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + var i = 0 + var len = Math.min(x, y) + while (i < len) { + if (a[i] !== b[i]) break + + ++i + } + + if (i !== len) { + x = a[i] + y = b[i] + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'binary': + case 'base64': + case 'raw': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.') + + if (list.length === 0) { + return new Buffer(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; i++) { + length += list[i].length + } + } + + var buf = new Buffer(length) + var pos = 0 + for (i = 0; i < list.length; i++) { + var item = list[i] + item.copy(buf, pos) + pos += item.length + } + return buf +} + +function byteLength (string, encoding) { + if (typeof string !== 'string') string = '' + string + + var len = string.length + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'binary': + // Deprecated + case 'raw': + case 'raws': + return len + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +// pre-set for values that may exist in the future +Buffer.prototype.length = undefined +Buffer.prototype.parent = undefined + +function slowToString (encoding, start, end) { + var loweredCase = false + + start = start | 0 + end = end === undefined || end === Infinity ? this.length : end | 0 + + if (!encoding) encoding = 'utf8' + if (start < 0) start = 0 + if (end > this.length) end = this.length + if (end <= start) return '' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'binary': + return binarySlice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toString = function toString () { + var length = this.length | 0 + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') + if (this.length > max) str += ' ... ' + } + return '<Buffer ' + str + '>' +} + +Buffer.prototype.compare = function compare (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return 0 + return Buffer.compare(this, b) +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset) { + if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff + else if (byteOffset < -0x80000000) byteOffset = -0x80000000 + byteOffset >>= 0 + + if (this.length === 0) return -1 + if (byteOffset >= this.length) return -1 + + // Negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0) + + if (typeof val === 'string') { + if (val.length === 0) return -1 // special case: looking for empty string always fails + return String.prototype.indexOf.call(this, val, byteOffset) + } + if (Buffer.isBuffer(val)) { + return arrayIndexOf(this, val, byteOffset) + } + if (typeof val === 'number') { + if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') { + return Uint8Array.prototype.indexOf.call(this, val, byteOffset) + } + return arrayIndexOf(this, [ val ], byteOffset) + } + + function arrayIndexOf (arr, val, byteOffset) { + var foundIndex = -1 + for (var i = 0; byteOffset + i < arr.length; i++) { + if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex + } else { + foundIndex = -1 + } + } + return -1 + } + + throw new TypeError('val must be string, number or Buffer') +} + +// `get` is deprecated +Buffer.prototype.get = function get (offset) { + console.log('.get() is deprecated. Access using array indexes instead.') + return this.readUInt8(offset) +} + +// `set` is deprecated +Buffer.prototype.set = function set (v, offset) { + console.log('.set() is deprecated. Access using array indexes instead.') + return this.writeUInt8(v, offset) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + // must be an even number of digits + var strLen = string.length + if (strLen % 2 !== 0) throw new Error('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; i++) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (isNaN(parsed)) throw new Error('Invalid hex string') + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function binaryWrite (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0 + if (isFinite(length)) { + length = length | 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + var swap = encoding + encoding = offset + offset = length | 0 + length = swap + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'binary': + return binaryWrite(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; i++) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function binarySlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; i++) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; i++) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = Buffer._augment(this.subarray(start, end)) + } else { + var sliceLen = end - start + newBuf = new Buffer(sliceLen, undefined) + for (var i = 0; i < sliceLen; i++) { + newBuf[i] = this[i + start] + } + } + + if (newBuf.length) newBuf.parent = this.parent || this + + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance') + if (value > max || value < min) throw new RangeError('value is out of bounds') + if (offset + ext > buf.length) throw new RangeError('index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + this[offset] = value + return offset + 1 +} + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = value + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = value + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = value + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = value + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = value < 0 ? 1 : 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = value < 0 ? 1 : 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + if (value < 0) value = 0xff + value + 1 + this[offset] = value + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = value + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = value + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = value + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = value + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (value > max || value < min) throw new RangeError('value is out of bounds') + if (offset + ext > buf.length) throw new RangeError('index out of range') + if (offset < 0) throw new RangeError('index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + var i + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; i--) { + target[i + targetStart] = this[i + start] + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; i++) { + target[i + targetStart] = this[i + start] + } + } else { + target._set(this.subarray(start, start + len), targetStart) + } + + return len +} + +// fill(value, start=0, end=buffer.length) +Buffer.prototype.fill = function fill (value, start, end) { + if (!value) value = 0 + if (!start) start = 0 + if (!end) end = this.length + + if (end < start) throw new RangeError('end < start') + + // Fill 0 bytes; we're done + if (end === start) return + if (this.length === 0) return + + if (start < 0 || start >= this.length) throw new RangeError('start out of bounds') + if (end < 0 || end > this.length) throw new RangeError('end out of bounds') + + var i + if (typeof value === 'number') { + for (i = start; i < end; i++) { + this[i] = value + } + } else { + var bytes = utf8ToBytes(value.toString()) + var len = bytes.length + for (i = start; i < end; i++) { + this[i] = bytes[i % len] + } + } + + return this +} + +/** + * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance. + * Added in Node 0.12. Only available in browsers that support ArrayBuffer. + */ +Buffer.prototype.toArrayBuffer = function toArrayBuffer () { + if (typeof Uint8Array !== 'undefined') { + if (Buffer.TYPED_ARRAY_SUPPORT) { + return (new Buffer(this)).buffer + } else { + var buf = new Uint8Array(this.length) + for (var i = 0, len = buf.length; i < len; i += 1) { + buf[i] = this[i] + } + return buf.buffer + } + } else { + throw new TypeError('Buffer.toArrayBuffer not supported in this browser') + } +} + +// HELPER FUNCTIONS +// ================ + +var BP = Buffer.prototype + +/** + * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods + */ +Buffer._augment = function _augment (arr) { + arr.constructor = Buffer + arr._isBuffer = true + + // save reference to original Uint8Array set method before overwriting + arr._set = arr.set + + // deprecated + arr.get = BP.get + arr.set = BP.set + + arr.write = BP.write + arr.toString = BP.toString + arr.toLocaleString = BP.toString + arr.toJSON = BP.toJSON + arr.equals = BP.equals + arr.compare = BP.compare + arr.indexOf = BP.indexOf + arr.copy = BP.copy + arr.slice = BP.slice + arr.readUIntLE = BP.readUIntLE + arr.readUIntBE = BP.readUIntBE + arr.readUInt8 = BP.readUInt8 + arr.readUInt16LE = BP.readUInt16LE + arr.readUInt16BE = BP.readUInt16BE + arr.readUInt32LE = BP.readUInt32LE + arr.readUInt32BE = BP.readUInt32BE + arr.readIntLE = BP.readIntLE + arr.readIntBE = BP.readIntBE + arr.readInt8 = BP.readInt8 + arr.readInt16LE = BP.readInt16LE + arr.readInt16BE = BP.readInt16BE + arr.readInt32LE = BP.readInt32LE + arr.readInt32BE = BP.readInt32BE + arr.readFloatLE = BP.readFloatLE + arr.readFloatBE = BP.readFloatBE + arr.readDoubleLE = BP.readDoubleLE + arr.readDoubleBE = BP.readDoubleBE + arr.writeUInt8 = BP.writeUInt8 + arr.writeUIntLE = BP.writeUIntLE + arr.writeUIntBE = BP.writeUIntBE + arr.writeUInt16LE = BP.writeUInt16LE + arr.writeUInt16BE = BP.writeUInt16BE + arr.writeUInt32LE = BP.writeUInt32LE + arr.writeUInt32BE = BP.writeUInt32BE + arr.writeIntLE = BP.writeIntLE + arr.writeIntBE = BP.writeIntBE + arr.writeInt8 = BP.writeInt8 + arr.writeInt16LE = BP.writeInt16LE + arr.writeInt16BE = BP.writeInt16BE + arr.writeInt32LE = BP.writeInt32LE + arr.writeInt32BE = BP.writeInt32BE + arr.writeFloatLE = BP.writeFloatLE + arr.writeFloatBE = BP.writeFloatBE + arr.writeDoubleLE = BP.writeDoubleLE + arr.writeDoubleBE = BP.writeDoubleBE + arr.fill = BP.fill + arr.inspect = BP.inspect + arr.toArrayBuffer = BP.toArrayBuffer + + return arr +} + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; i++) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; i++) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; i++) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; i++) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +},{"base64-js":44,"ieee754":45,"is-array":46}],44:[function(require,module,exports){ +var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + +;(function (exports) { + 'use strict'; + + var Arr = (typeof Uint8Array !== 'undefined') + ? Uint8Array + : Array + + var PLUS = '+'.charCodeAt(0) + var SLASH = '/'.charCodeAt(0) + var NUMBER = '0'.charCodeAt(0) + var LOWER = 'a'.charCodeAt(0) + var UPPER = 'A'.charCodeAt(0) + var PLUS_URL_SAFE = '-'.charCodeAt(0) + var SLASH_URL_SAFE = '_'.charCodeAt(0) + + function decode (elt) { + var code = elt.charCodeAt(0) + if (code === PLUS || + code === PLUS_URL_SAFE) + return 62 // '+' + if (code === SLASH || + code === SLASH_URL_SAFE) + return 63 // '/' + if (code < NUMBER) + return -1 //no match + if (code < NUMBER + 10) + return code - NUMBER + 26 + 26 + if (code < UPPER + 26) + return code - UPPER + if (code < LOWER + 26) + return code - LOWER + 26 + } + + function b64ToByteArray (b64) { + var i, j, l, tmp, placeHolders, arr + + if (b64.length % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // the number of equal signs (place holders) + // if there are two placeholders, than the two characters before it + // represent one byte + // if there is only one, then the three characters before it represent 2 bytes + // this is just a cheap hack to not do indexOf twice + var len = b64.length + placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 + + // base64 is 4/3 + up to two characters of the original data + arr = new Arr(b64.length * 3 / 4 - placeHolders) + + // if there are placeholders, only get up to the last complete 4 chars + l = placeHolders > 0 ? b64.length - 4 : b64.length + + var L = 0 + + function push (v) { + arr[L++] = v + } + + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) + push((tmp & 0xFF0000) >> 16) + push((tmp & 0xFF00) >> 8) + push(tmp & 0xFF) + } + + if (placeHolders === 2) { + tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) + push(tmp & 0xFF) + } else if (placeHolders === 1) { + tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) + push((tmp >> 8) & 0xFF) + push(tmp & 0xFF) + } + + return arr + } + + function uint8ToBase64 (uint8) { + var i, + extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes + output = "", + temp, length + + function encode (num) { + return lookup.charAt(num) + } + + function tripletToBase64 (num) { + return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) + } + + // go through the array every three bytes, we'll deal with trailing stuff later + for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { + temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) + output += tripletToBase64(temp) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + switch (extraBytes) { + case 1: + temp = uint8[uint8.length - 1] + output += encode(temp >> 2) + output += encode((temp << 4) & 0x3F) + output += '==' + break + case 2: + temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) + output += encode(temp >> 10) + output += encode((temp >> 4) & 0x3F) + output += encode((temp << 2) & 0x3F) + output += '=' + break + } + + return output + } + + exports.toByteArray = b64ToByteArray + exports.fromByteArray = uint8ToBase64 +}(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) + +},{}],45:[function(require,module,exports){ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = nBytes * 8 - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = nBytes * 8 - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + +},{}],46:[function(require,module,exports){ + +/** + * isArray + */ + +var isArray = Array.isArray; + +/** + * toString + */ + +var str = Object.prototype.toString; + +/** + * Whether or not the given `val` + * is an array. + * + * example: + * + * isArray([]); + * // > true + * isArray(arguments); + * // > false + * isArray(''); + * // > false + * + * @param {mixed} val + * @return {bool} + */ + +module.exports = isArray || function (val) { + return !! val && '[object Array]' == str.call(val); +}; + +},{}],47:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } + throw TypeError('Uncaught, unspecified "error" event.'); + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}],48:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],49:[function(require,module,exports){ +module.exports = Array.isArray || function (arr) { + return Object.prototype.toString.call(arr) == '[object Array]'; +}; + +},{}],50:[function(require,module,exports){ +exports.endianness = function () { return 'LE' }; + +exports.hostname = function () { + if (typeof location !== 'undefined') { + return location.hostname + } + else return ''; +}; + +exports.loadavg = function () { return [] }; + +exports.uptime = function () { return 0 }; + +exports.freemem = function () { + return Number.MAX_VALUE; +}; + +exports.totalmem = function () { + return Number.MAX_VALUE; +}; + +exports.cpus = function () { return [] }; + +exports.type = function () { return 'Browser' }; + +exports.release = function () { + if (typeof navigator !== 'undefined') { + return navigator.appVersion; + } + return ''; +}; + +exports.networkInterfaces += exports.getNetworkInterfaces += function () { return {} }; + +exports.arch = function () { return 'javascript' }; + +exports.platform = function () { return 'browser' }; + +exports.tmpdir = exports.tmpDir = function () { + return '/tmp'; +}; + +exports.EOL = '\n'; + +},{}],51:[function(require,module,exports){ +// shim for using process in browser + +var process = module.exports = {}; +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = setTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + clearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + setTimeout(drainQueue, 0); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],52:[function(require,module,exports){ +module.exports = require("./lib/_stream_duplex.js") + +},{"./lib/_stream_duplex.js":53}],53:[function(require,module,exports){ +(function (process){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + +module.exports = Duplex; + +/*<replacement>*/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) keys.push(key); + return keys; +} +/*</replacement>*/ + + +/*<replacement>*/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/*</replacement>*/ + +var Readable = require('./_stream_readable'); +var Writable = require('./_stream_writable'); + +util.inherits(Duplex, Readable); + +forEach(objectKeys(Writable.prototype), function(method) { + if (!Duplex.prototype[method]) + Duplex.prototype[method] = Writable.prototype[method]; +}); + +function Duplex(options) { + if (!(this instanceof Duplex)) + return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) + this.readable = false; + + if (options && options.writable === false) + this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) + this.allowHalfOpen = false; + + this.once('end', onend); +} + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) + return; + + // no more data can be written. + // But allow more writes to happen in this tick. + process.nextTick(this.end.bind(this)); +} + +function forEach (xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } +} + +}).call(this,require('_process')) +},{"./_stream_readable":55,"./_stream_writable":57,"_process":51,"core-util-is":58,"inherits":48}],54:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + +module.exports = PassThrough; + +var Transform = require('./_stream_transform'); + +/*<replacement>*/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/*</replacement>*/ + +util.inherits(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) + return new PassThrough(options); + + Transform.call(this, options); +} + +PassThrough.prototype._transform = function(chunk, encoding, cb) { + cb(null, chunk); +}; + +},{"./_stream_transform":56,"core-util-is":58,"inherits":48}],55:[function(require,module,exports){ +(function (process){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +module.exports = Readable; + +/*<replacement>*/ +var isArray = require('isarray'); +/*</replacement>*/ + + +/*<replacement>*/ +var Buffer = require('buffer').Buffer; +/*</replacement>*/ + +Readable.ReadableState = ReadableState; + +var EE = require('events').EventEmitter; + +/*<replacement>*/ +if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { + return emitter.listeners(type).length; +}; +/*</replacement>*/ + +var Stream = require('stream'); + +/*<replacement>*/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/*</replacement>*/ + +var StringDecoder; + + +/*<replacement>*/ +var debug = require('util'); +if (debug && debug.debuglog) { + debug = debug.debuglog('stream'); +} else { + debug = function () {}; +} +/*</replacement>*/ + + +util.inherits(Readable, Stream); + +function ReadableState(options, stream) { + var Duplex = require('./_stream_duplex'); + + options = options || {}; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var defaultHwm = options.objectMode ? 16 : 16 * 1024; + this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm; + + // cast to ints. + this.highWaterMark = ~~this.highWaterMark; + + this.buffer = []; + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + + if (stream instanceof Duplex) + this.objectMode = this.objectMode || !!options.readableObjectMode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // when piping, we only care about 'readable' events that happen + // after read()ing all the bytes and not getting any pushback. + this.ranOut = false; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) + StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + var Duplex = require('./_stream_duplex'); + + if (!(this instanceof Readable)) + return new Readable(options); + + this._readableState = new ReadableState(options, this); + + // legacy + this.readable = true; + + Stream.call(this); +} + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function(chunk, encoding) { + var state = this._readableState; + + if (util.isString(chunk) && !state.objectMode) { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = new Buffer(chunk, encoding); + encoding = ''; + } + } + + return readableAddChunk(this, state, chunk, encoding, false); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function(chunk) { + var state = this._readableState; + return readableAddChunk(this, state, chunk, '', true); +}; + +function readableAddChunk(stream, state, chunk, encoding, addToFront) { + var er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (util.isNullOrUndefined(chunk)) { + state.reading = false; + if (!state.ended) + onEofChunk(stream, state); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (state.ended && !addToFront) { + var e = new Error('stream.push() after EOF'); + stream.emit('error', e); + } else if (state.endEmitted && addToFront) { + var e = new Error('stream.unshift() after end event'); + stream.emit('error', e); + } else { + if (state.decoder && !addToFront && !encoding) + chunk = state.decoder.write(chunk); + + if (!addToFront) + state.reading = false; + + // if we want the data now, just emit it. + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) + state.buffer.unshift(chunk); + else + state.buffer.push(chunk); + + if (state.needReadable) + emitReadable(stream); + } + + maybeReadMore(stream, state); + } + } else if (!addToFront) { + state.reading = false; + } + + return needMoreData(state); +} + + + +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && + (state.needReadable || + state.length < state.highWaterMark || + state.length === 0); +} + +// backwards compatibility. +Readable.prototype.setEncoding = function(enc) { + if (!StringDecoder) + StringDecoder = require('string_decoder/').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; + +// Don't raise the hwm > 128MB +var MAX_HWM = 0x800000; +function roundUpToNextPowerOf2(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 + n--; + for (var p = 1; p < 32; p <<= 1) n |= n >> p; + n++; + } + return n; +} + +function howMuchToRead(n, state) { + if (state.length === 0 && state.ended) + return 0; + + if (state.objectMode) + return n === 0 ? 0 : 1; + + if (isNaN(n) || util.isNull(n)) { + // only flow one buffer at a time + if (state.flowing && state.buffer.length) + return state.buffer[0].length; + else + return state.length; + } + + if (n <= 0) + return 0; + + // If we're asking for more than the target buffer level, + // then raise the water mark. Bump up to the next highest + // power of 2, to prevent increasing it excessively in tiny + // amounts. + if (n > state.highWaterMark) + state.highWaterMark = roundUpToNextPowerOf2(n); + + // don't have that much. return null, unless we've ended. + if (n > state.length) { + if (!state.ended) { + state.needReadable = true; + return 0; + } else + return state.length; + } + + return n; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function(n) { + debug('read', n); + var state = this._readableState; + var nOrig = n; + + if (!util.isNumber(n) || n > 0) + state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && + state.needReadable && + (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) + endReadable(this); + else + emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) + endReadable(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } + + if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) + state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + } + + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (doRead && !state.reading) + n = howMuchToRead(nOrig, state); + + var ret; + if (n > 0) + ret = fromList(n, state); + else + ret = null; + + if (util.isNull(ret)) { + state.needReadable = true; + n = 0; + } + + state.length -= n; + + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (state.length === 0 && !state.ended) + state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended && state.length === 0) + endReadable(this); + + if (!util.isNull(ret)) + this.emit('data', ret); + + return ret; +}; + +function chunkInvalid(state, chunk) { + var er = null; + if (!util.isBuffer(chunk) && + !util.isString(chunk) && + !util.isNullOrUndefined(chunk) && + !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} + + +function onEofChunk(stream, state) { + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) + process.nextTick(function() { + emitReadable_(stream); + }); + else + emitReadable_(stream); + } +} + +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} + + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(function() { + maybeReadMore_(stream, state); + }); + } +} + +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && + state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break; + else + len = state.length; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function(n) { + this.emit('error', new Error('not implemented')); +}; + +Readable.prototype.pipe = function(dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + + var doEnd = (!pipeOpts || pipeOpts.end !== false) && + dest !== process.stdout && + dest !== process.stderr; + + var endFn = doEnd ? onend : cleanup; + if (state.endEmitted) + process.nextTick(endFn); + else + src.once('end', endFn); + + dest.on('unpipe', onunpipe); + function onunpipe(readable) { + debug('onunpipe'); + if (readable === src) { + cleanup(); + } + } + + function onend() { + debug('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', cleanup); + src.removeListener('data', ondata); + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && + (!dest._writableState || dest._writableState.needDrain)) + ondrain(); + } + + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + if (false === ret) { + debug('false write response, pause', + src._readableState.awaitDrain); + src._readableState.awaitDrain++; + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EE.listenerCount(dest, 'error') === 0) + dest.emit('error', er); + } + // This is a brutally ugly hack to make sure that our error handler + // is attached before any userland ones. NEVER DO THIS. + if (!dest._events || !dest._events.error) + dest.on('error', onerror); + else if (isArray(dest._events.error)) + dest._events.error.unshift(onerror); + else + dest._events.error = [onerror, dest._events.error]; + + + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function() { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) + state.awaitDrain--; + if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + + +Readable.prototype.unpipe = function(dest) { + var state = this._readableState; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) + return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) + return this; + + if (!dest) + dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) + dest.emit('unpipe', this); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) + dests[i].emit('unpipe', this); + return this; + } + + // try to find the right one. + var i = indexOf(state.pipes, dest); + if (i === -1) + return this; + + state.pipes.splice(i, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) + state.pipes = state.pipes[0]; + + dest.emit('unpipe', this); + + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function(ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + + // If listening to data, and it has not explicitly been paused, + // then call resume to start the flow of data on the next tick. + if (ev === 'data' && false !== this._readableState.flowing) { + this.resume(); + } + + if (ev === 'readable' && this.readable) { + var state = this._readableState; + if (!state.readableListening) { + state.readableListening = true; + state.emittedReadable = false; + state.needReadable = true; + if (!state.reading) { + var self = this; + process.nextTick(function() { + debug('readable nexttick read 0'); + self.read(0); + }); + } else if (state.length) { + emitReadable(this, state); + } + } + } + + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function() { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + if (!state.reading) { + debug('resume read 0'); + this.read(0); + } + resume(this, state); + } + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(function() { + resume_(stream, state); + }); + } +} + +function resume_(stream, state) { + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) + stream.read(0); +} + +Readable.prototype.pause = function() { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + if (state.flowing) { + do { + var chunk = stream.read(); + } while (null !== chunk && state.flowing); + } +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function(stream) { + var state = this._readableState; + var paused = false; + + var self = this; + stream.on('end', function() { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) + self.push(chunk); + } + + self.push(null); + }); + + stream.on('data', function(chunk) { + debug('wrapped data'); + if (state.decoder) + chunk = state.decoder.write(chunk); + if (!chunk || !state.objectMode && !chunk.length) + return; + + var ret = self.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (util.isFunction(stream[i]) && util.isUndefined(this[i])) { + this[i] = function(method) { return function() { + return stream[method].apply(stream, arguments); + }}(i); + } + } + + // proxy certain important events. + var events = ['error', 'close', 'destroy', 'pause', 'resume']; + forEach(events, function(ev) { + stream.on(ev, self.emit.bind(self, ev)); + }); + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + self._read = function(n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + + return self; +}; + + + +// exposed for testing purposes only. +Readable._fromList = fromList; + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +function fromList(n, state) { + var list = state.buffer; + var length = state.length; + var stringMode = !!state.decoder; + var objectMode = !!state.objectMode; + var ret; + + // nothing in the list, definitely empty. + if (list.length === 0) + return null; + + if (length === 0) + ret = null; + else if (objectMode) + ret = list.shift(); + else if (!n || n >= length) { + // read it all, truncate the array. + if (stringMode) + ret = list.join(''); + else + ret = Buffer.concat(list, length); + list.length = 0; + } else { + // read just some of it. + if (n < list[0].length) { + // just take a part of the first list item. + // slice is the same for buffers and strings. + var buf = list[0]; + ret = buf.slice(0, n); + list[0] = buf.slice(n); + } else if (n === list[0].length) { + // first list is a perfect match + ret = list.shift(); + } else { + // complex case. + // we have enough to cover it, but it spans past the first buffer. + if (stringMode) + ret = ''; + else + ret = new Buffer(n); + + var c = 0; + for (var i = 0, l = list.length; i < l && c < n; i++) { + var buf = list[0]; + var cpy = Math.min(n - c, buf.length); + + if (stringMode) + ret += buf.slice(0, cpy); + else + buf.copy(ret, c, 0, cpy); + + if (cpy < buf.length) + list[0] = buf.slice(cpy); + else + list.shift(); + + c += cpy; + } + } + } + + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) + throw new Error('endReadable called on non-empty stream'); + + if (!state.endEmitted) { + state.ended = true; + process.nextTick(function() { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } + }); + } +} + +function forEach (xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } +} + +function indexOf (xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} + +}).call(this,require('_process')) +},{"./_stream_duplex":53,"_process":51,"buffer":43,"core-util-is":58,"events":47,"inherits":48,"isarray":49,"stream":63,"string_decoder/":64,"util":42}],56:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + +module.exports = Transform; + +var Duplex = require('./_stream_duplex'); + +/*<replacement>*/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/*</replacement>*/ + +util.inherits(Transform, Duplex); + + +function TransformState(options, stream) { + this.afterTransform = function(er, data) { + return afterTransform(stream, er, data); + }; + + this.needTransform = false; + this.transforming = false; + this.writecb = null; + this.writechunk = null; +} + +function afterTransform(stream, er, data) { + var ts = stream._transformState; + ts.transforming = false; + + var cb = ts.writecb; + + if (!cb) + return stream.emit('error', new Error('no writecb in Transform class')); + + ts.writechunk = null; + ts.writecb = null; + + if (!util.isNullOrUndefined(data)) + stream.push(data); + + if (cb) + cb(er); + + var rs = stream._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + stream._read(rs.highWaterMark); + } +} + + +function Transform(options) { + if (!(this instanceof Transform)) + return new Transform(options); + + Duplex.call(this, options); + + this._transformState = new TransformState(options, this); + + // when the writable side finishes, then flush out anything remaining. + var stream = this; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + + this.once('prefinish', function() { + if (util.isFunction(this._flush)) + this._flush(function(er) { + done(stream, er); + }); + else + done(stream); + }); +} + +Transform.prototype.push = function(chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function(chunk, encoding, cb) { + throw new Error('not implemented'); +}; + +Transform.prototype._write = function(chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || + rs.needReadable || + rs.length < rs.highWaterMark) + this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function(n) { + var ts = this._transformState; + + if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + + +function done(stream, er) { + if (er) + return stream.emit('error', er); + + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + var ws = stream._writableState; + var ts = stream._transformState; + + if (ws.length) + throw new Error('calling transform done when ws.length != 0'); + + if (ts.transforming) + throw new Error('calling transform done when still transforming'); + + return stream.push(null); +} + +},{"./_stream_duplex":53,"core-util-is":58,"inherits":48}],57:[function(require,module,exports){ +(function (process){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, cb), and it'll handle all +// the drain event emission and buffering. + +module.exports = Writable; + +/*<replacement>*/ +var Buffer = require('buffer').Buffer; +/*</replacement>*/ + +Writable.WritableState = WritableState; + + +/*<replacement>*/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/*</replacement>*/ + +var Stream = require('stream'); + +util.inherits(Writable, Stream); + +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; +} + +function WritableState(options, stream) { + var Duplex = require('./_stream_duplex'); + + options = options || {}; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var defaultHwm = options.objectMode ? 16 : 16 * 1024; + this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + + if (stream instanceof Duplex) + this.objectMode = this.objectMode || !!options.writableObjectMode; + + // cast to ints. + this.highWaterMark = ~~this.highWaterMark; + + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function(er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + + this.buffer = []; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; +} + +function Writable(options) { + var Duplex = require('./_stream_duplex'); + + // Writable ctor is applied to Duplexes, though they're not + // instanceof Writable, they're instanceof Readable. + if (!(this instanceof Writable) && !(this instanceof Duplex)) + return new Writable(options); + + this._writableState = new WritableState(options, this); + + // legacy. + this.writable = true; + + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function() { + this.emit('error', new Error('Cannot pipe. Not readable.')); +}; + + +function writeAfterEnd(stream, state, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + process.nextTick(function() { + cb(er); + }); +} + +// If we get something that is not a buffer, string, null, or undefined, +// and we're not in objectMode, then that's an error. +// Otherwise stream chunks are all considered to be of length=1, and the +// watermarks determine how many objects to keep in the buffer, rather than +// how many bytes or characters. +function validChunk(stream, state, chunk, cb) { + var valid = true; + if (!util.isBuffer(chunk) && + !util.isString(chunk) && + !util.isNullOrUndefined(chunk) && + !state.objectMode) { + var er = new TypeError('Invalid non-string/buffer chunk'); + stream.emit('error', er); + process.nextTick(function() { + cb(er); + }); + valid = false; + } + return valid; +} + +Writable.prototype.write = function(chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + + if (util.isFunction(encoding)) { + cb = encoding; + encoding = null; + } + + if (util.isBuffer(chunk)) + encoding = 'buffer'; + else if (!encoding) + encoding = state.defaultEncoding; + + if (!util.isFunction(cb)) + cb = function() {}; + + if (state.ended) + writeAfterEnd(this, state, cb); + else if (validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, chunk, encoding, cb); + } + + return ret; +}; + +Writable.prototype.cork = function() { + var state = this._writableState; + + state.corked++; +}; + +Writable.prototype.uncork = function() { + var state = this._writableState; + + if (state.corked) { + state.corked--; + + if (!state.writing && + !state.corked && + !state.finished && + !state.bufferProcessing && + state.buffer.length) + clearBuffer(this, state); + } +}; + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && + state.decodeStrings !== false && + util.isString(chunk)) { + chunk = new Buffer(chunk, encoding); + } + return chunk; +} + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, chunk, encoding, cb) { + chunk = decodeChunk(state, chunk, encoding); + if (util.isBuffer(chunk)) + encoding = 'buffer'; + var len = state.objectMode ? 1 : chunk.length; + + state.length += len; + + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) + state.needDrain = true; + + if (state.writing || state.corked) + state.buffer.push(new WriteReq(chunk, encoding, cb)); + else + doWrite(stream, state, false, len, chunk, encoding, cb); + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) + stream._writev(chunk, state.onwrite); + else + stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + if (sync) + process.nextTick(function() { + state.pendingcb--; + cb(er); + }); + else { + state.pendingcb--; + cb(er); + } + + stream._writableState.errorEmitted = true; + stream.emit('error', er); +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + + onwriteStateUpdate(state); + + if (er) + onwriteError(stream, state, sync, er, cb); + else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(stream, state); + + if (!finished && + !state.corked && + !state.bufferProcessing && + state.buffer.length) { + clearBuffer(stream, state); + } + + if (sync) { + process.nextTick(function() { + afterWrite(stream, state, finished, cb); + }); + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) + onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + + if (stream._writev && state.buffer.length > 1) { + // Fast case, write everything using _writev() + var cbs = []; + for (var c = 0; c < state.buffer.length; c++) + cbs.push(state.buffer[c].callback); + + // count the one we are adding, as well. + // TODO(isaacs) clean this up + state.pendingcb++; + doWrite(stream, state, true, state.length, state.buffer, '', function(err) { + for (var i = 0; i < cbs.length; i++) { + state.pendingcb--; + cbs[i](err); + } + }); + + // Clear buffer + state.buffer = []; + } else { + // Slow case, write chunks one-by-one + for (var c = 0; c < state.buffer.length; c++) { + var entry = state.buffer[c]; + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, false, len, chunk, encoding, cb); + + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + c++; + break; + } + } + + if (c < state.buffer.length) + state.buffer = state.buffer.slice(c); + else + state.buffer.length = 0; + } + + state.bufferProcessing = false; +} + +Writable.prototype._write = function(chunk, encoding, cb) { + cb(new Error('not implemented')); + +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function(chunk, encoding, cb) { + var state = this._writableState; + + if (util.isFunction(chunk)) { + cb = chunk; + chunk = null; + encoding = null; + } else if (util.isFunction(encoding)) { + cb = encoding; + encoding = null; + } + + if (!util.isNullOrUndefined(chunk)) + this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending && !state.finished) + endWritable(this, state, cb); +}; + + +function needFinish(stream, state) { + return (state.ending && + state.length === 0 && + !state.finished && + !state.writing); +} + +function prefinish(stream, state) { + if (!state.prefinished) { + state.prefinished = true; + stream.emit('prefinish'); + } +} + +function finishMaybe(stream, state) { + var need = needFinish(stream, state); + if (need) { + if (state.pendingcb === 0) { + prefinish(stream, state); + state.finished = true; + stream.emit('finish'); + } else + prefinish(stream, state); + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) + process.nextTick(cb); + else + stream.once('finish', cb); + } + state.ended = true; +} + +}).call(this,require('_process')) +},{"./_stream_duplex":53,"_process":51,"buffer":43,"core-util-is":58,"inherits":48,"stream":63}],58:[function(require,module,exports){ +(function (Buffer){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +function isBuffer(arg) { + return Buffer.isBuffer(arg); +} +exports.isBuffer = isBuffer; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} +}).call(this,require("buffer").Buffer) +},{"buffer":43}],59:[function(require,module,exports){ +module.exports = require("./lib/_stream_passthrough.js") + +},{"./lib/_stream_passthrough.js":54}],60:[function(require,module,exports){ +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = require('stream'); +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); + +},{"./lib/_stream_duplex.js":53,"./lib/_stream_passthrough.js":54,"./lib/_stream_readable.js":55,"./lib/_stream_transform.js":56,"./lib/_stream_writable.js":57,"stream":63}],61:[function(require,module,exports){ +module.exports = require("./lib/_stream_transform.js") + +},{"./lib/_stream_transform.js":56}],62:[function(require,module,exports){ +module.exports = require("./lib/_stream_writable.js") + +},{"./lib/_stream_writable.js":57}],63:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +module.exports = Stream; + +var EE = require('events').EventEmitter; +var inherits = require('inherits'); + +inherits(Stream, EE); +Stream.Readable = require('readable-stream/readable.js'); +Stream.Writable = require('readable-stream/writable.js'); +Stream.Duplex = require('readable-stream/duplex.js'); +Stream.Transform = require('readable-stream/transform.js'); +Stream.PassThrough = require('readable-stream/passthrough.js'); + +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; + + + +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. + +function Stream() { + EE.call(this); +} + +Stream.prototype.pipe = function(dest, options) { + var source = this; + + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } + } + + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } + + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } + + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; + + dest.end(); + } + + + function onclose() { + if (didOnEnd) return; + didOnEnd = true; + + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } + + source.on('error', onerror); + dest.on('error', onerror); + + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + + source.removeListener('end', onend); + source.removeListener('close', onclose); + + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + + dest.removeListener('close', cleanup); + } + + source.on('end', cleanup); + source.on('close', cleanup); + + dest.on('close', cleanup); + + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; + +},{"events":47,"inherits":48,"readable-stream/duplex.js":52,"readable-stream/passthrough.js":59,"readable-stream/readable.js":60,"readable-stream/transform.js":61,"readable-stream/writable.js":62}],64:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var Buffer = require('buffer').Buffer; + +var isBufferEncoding = Buffer.isEncoding + || function(encoding) { + switch (encoding && encoding.toLowerCase()) { + case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; + default: return false; + } + } + + +function assertEncoding(encoding) { + if (encoding && !isBufferEncoding(encoding)) { + throw new Error('Unknown encoding: ' + encoding); + } +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. CESU-8 is handled as part of the UTF-8 encoding. +// +// @TODO Handling all encodings inside a single object makes it very difficult +// to reason about this code, so it should be split up in the future. +// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code +// points as used by CESU-8. +var StringDecoder = exports.StringDecoder = function(encoding) { + this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); + assertEncoding(encoding); + switch (this.encoding) { + case 'utf8': + // CESU-8 represents each of Surrogate Pair by 3-bytes + this.surrogateSize = 3; + break; + case 'ucs2': + case 'utf16le': + // UTF-16 represents each of Surrogate Pair by 2-bytes + this.surrogateSize = 2; + this.detectIncompleteChar = utf16DetectIncompleteChar; + break; + case 'base64': + // Base-64 stores 3 bytes in 4 chars, and pads the remainder. + this.surrogateSize = 3; + this.detectIncompleteChar = base64DetectIncompleteChar; + break; + default: + this.write = passThroughWrite; + return; + } + + // Enough space to store all bytes of a single character. UTF-8 needs 4 + // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate). + this.charBuffer = new Buffer(6); + // Number of bytes received for the current incomplete multi-byte character. + this.charReceived = 0; + // Number of bytes expected for the current incomplete multi-byte character. + this.charLength = 0; +}; + + +// write decodes the given buffer and returns it as JS string that is +// guaranteed to not contain any partial multi-byte characters. Any partial +// character found at the end of the buffer is buffered up, and will be +// returned when calling write again with the remaining bytes. +// +// Note: Converting a Buffer containing an orphan surrogate to a String +// currently works, but converting a String to a Buffer (via `new Buffer`, or +// Buffer#write) will replace incomplete surrogates with the unicode +// replacement character. See https://codereview.chromium.org/121173009/ . +StringDecoder.prototype.write = function(buffer) { + var charStr = ''; + // if our last write ended with an incomplete multibyte character + while (this.charLength) { + // determine how many remaining bytes this buffer has to offer for this char + var available = (buffer.length >= this.charLength - this.charReceived) ? + this.charLength - this.charReceived : + buffer.length; + + // add the new bytes to the char buffer + buffer.copy(this.charBuffer, this.charReceived, 0, available); + this.charReceived += available; + + if (this.charReceived < this.charLength) { + // still not enough chars in this buffer? wait for more ... + return ''; + } + + // remove bytes belonging to the current character from the buffer + buffer = buffer.slice(available, buffer.length); + + // get the character that was split + charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); + + // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character + var charCode = charStr.charCodeAt(charStr.length - 1); + if (charCode >= 0xD800 && charCode <= 0xDBFF) { + this.charLength += this.surrogateSize; + charStr = ''; + continue; + } + this.charReceived = this.charLength = 0; + + // if there are no more bytes in this buffer, just emit our char + if (buffer.length === 0) { + return charStr; + } + break; + } + + // determine and set charLength / charReceived + this.detectIncompleteChar(buffer); + + var end = buffer.length; + if (this.charLength) { + // buffer the incomplete character bytes we got + buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end); + end -= this.charReceived; + } + + charStr += buffer.toString(this.encoding, 0, end); + + var end = charStr.length - 1; + var charCode = charStr.charCodeAt(end); + // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character + if (charCode >= 0xD800 && charCode <= 0xDBFF) { + var size = this.surrogateSize; + this.charLength += size; + this.charReceived += size; + this.charBuffer.copy(this.charBuffer, size, 0, size); + buffer.copy(this.charBuffer, 0, 0, size); + return charStr.substring(0, end); + } + + // or just emit the charStr + return charStr; +}; + +// detectIncompleteChar determines if there is an incomplete UTF-8 character at +// the end of the given buffer. If so, it sets this.charLength to the byte +// length that character, and sets this.charReceived to the number of bytes +// that are available for this character. +StringDecoder.prototype.detectIncompleteChar = function(buffer) { + // determine how many bytes we have to check at the end of this buffer + var i = (buffer.length >= 3) ? 3 : buffer.length; + + // Figure out if one of the last i bytes of our buffer announces an + // incomplete char. + for (; i > 0; i--) { + var c = buffer[buffer.length - i]; + + // See http://en.wikipedia.org/wiki/UTF-8#Description + + // 110XXXXX + if (i == 1 && c >> 5 == 0x06) { + this.charLength = 2; + break; + } + + // 1110XXXX + if (i <= 2 && c >> 4 == 0x0E) { + this.charLength = 3; + break; + } + + // 11110XXX + if (i <= 3 && c >> 3 == 0x1E) { + this.charLength = 4; + break; + } + } + this.charReceived = i; +}; + +StringDecoder.prototype.end = function(buffer) { + var res = ''; + if (buffer && buffer.length) + res = this.write(buffer); + + if (this.charReceived) { + var cr = this.charReceived; + var buf = this.charBuffer; + var enc = this.encoding; + res += buf.slice(0, cr).toString(enc); + } + + return res; +}; + +function passThroughWrite(buffer) { + return buffer.toString(this.encoding); +} + +function utf16DetectIncompleteChar(buffer) { + this.charReceived = buffer.length % 2; + this.charLength = this.charReceived ? 2 : 0; +} + +function base64DetectIncompleteChar(buffer) { + this.charReceived = buffer.length % 3; + this.charLength = this.charReceived ? 3 : 0; +} + +},{"buffer":43}],65:[function(require,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],66:[function(require,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":65,"_process":51,"inherits":48}],67:[function(require,module,exports){ +/* See LICENSE file for terms of use */ + +/* + * Text diff implementation. + * + * This library supports the following APIS: + * JsDiff.diffChars: Character by character diff + * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace + * JsDiff.diffLines: Line based diff + * + * JsDiff.diffCss: Diff targeted at CSS content + * + * These methods are based on the implementation proposed in + * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986). + * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927 + */ +(function(global, undefined) { + var objectPrototypeToString = Object.prototype.toString; + + /*istanbul ignore next*/ + function map(arr, mapper, that) { + if (Array.prototype.map) { + return Array.prototype.map.call(arr, mapper, that); + } + + var other = new Array(arr.length); + + for (var i = 0, n = arr.length; i < n; i++) { + other[i] = mapper.call(that, arr[i], i, arr); + } + return other; + } + function clonePath(path) { + return { newPos: path.newPos, components: path.components.slice(0) }; + } + function removeEmpty(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + return ret; + } + function escapeHTML(s) { + var n = s; + n = n.replace(/&/g, '&'); + n = n.replace(/</g, '<'); + n = n.replace(/>/g, '>'); + n = n.replace(/"/g, '"'); + + return n; + } + + // This function handles the presence of circular references by bailing out when encountering an + // object that is already on the "stack" of items being processed. + function canonicalize(obj, stack, replacementStack) { + stack = stack || []; + replacementStack = replacementStack || []; + + var i; + + for (i = 0; i < stack.length; i += 1) { + if (stack[i] === obj) { + return replacementStack[i]; + } + } + + var canonicalizedObj; + + if ('[object Array]' === objectPrototypeToString.call(obj)) { + stack.push(obj); + canonicalizedObj = new Array(obj.length); + replacementStack.push(canonicalizedObj); + for (i = 0; i < obj.length; i += 1) { + canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack); + } + stack.pop(); + replacementStack.pop(); + } else if (typeof obj === 'object' && obj !== null) { + stack.push(obj); + canonicalizedObj = {}; + replacementStack.push(canonicalizedObj); + var sortedKeys = [], + key; + for (key in obj) { + sortedKeys.push(key); + } + sortedKeys.sort(); + for (i = 0; i < sortedKeys.length; i += 1) { + key = sortedKeys[i]; + canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack); + } + stack.pop(); + replacementStack.pop(); + } else { + canonicalizedObj = obj; + } + return canonicalizedObj; + } + + function buildValues(components, newString, oldString, useLongestToken) { + var componentPos = 0, + componentLen = components.length, + newPos = 0, + oldPos = 0; + + for (; componentPos < componentLen; componentPos++) { + var component = components[componentPos]; + if (!component.removed) { + if (!component.added && useLongestToken) { + var value = newString.slice(newPos, newPos + component.count); + value = map(value, function(value, i) { + var oldValue = oldString[oldPos + i]; + return oldValue.length > value.length ? oldValue : value; + }); + + component.value = value.join(''); + } else { + component.value = newString.slice(newPos, newPos + component.count).join(''); + } + newPos += component.count; + + // Common case + if (!component.added) { + oldPos += component.count; + } + } else { + component.value = oldString.slice(oldPos, oldPos + component.count).join(''); + oldPos += component.count; + + // Reverse add and remove so removes are output first to match common convention + // The diffing algorithm is tied to add then remove output and this is the simplest + // route to get the desired output with minimal overhead. + if (componentPos && components[componentPos - 1].added) { + var tmp = components[componentPos - 1]; + components[componentPos - 1] = components[componentPos]; + components[componentPos] = tmp; + } + } + } + + return components; + } + + function Diff(ignoreWhitespace) { + this.ignoreWhitespace = ignoreWhitespace; + } + Diff.prototype = { + diff: function(oldString, newString, callback) { + var self = this; + + function done(value) { + if (callback) { + setTimeout(function() { callback(undefined, value); }, 0); + return true; + } else { + return value; + } + } + + // Handle the identity case (this is due to unrolling editLength == 0 + if (newString === oldString) { + return done([{ value: newString }]); + } + if (!newString) { + return done([{ value: oldString, removed: true }]); + } + if (!oldString) { + return done([{ value: newString, added: true }]); + } + + newString = this.tokenize(newString); + oldString = this.tokenize(oldString); + + var newLen = newString.length, oldLen = oldString.length; + var editLength = 1; + var maxEditLength = newLen + oldLen; + var bestPath = [{ newPos: -1, components: [] }]; + + // Seed editLength = 0, i.e. the content starts with the same values + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + // Identity per the equality and tokenizer + return done([{value: newString.join('')}]); + } + + // Main worker method. checks all permutations of a given edit length for acceptance. + function execEditLength() { + for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + var basePath; + var addPath = bestPath[diagonalPath - 1], + removePath = bestPath[diagonalPath + 1], + oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + if (addPath) { + // No one else is going to attempt to use this value, clear it + bestPath[diagonalPath - 1] = undefined; + } + + var canAdd = addPath && addPath.newPos + 1 < newLen, + canRemove = removePath && 0 <= oldPos && oldPos < oldLen; + if (!canAdd && !canRemove) { + // If this path is a terminal then prune + bestPath[diagonalPath] = undefined; + continue; + } + + // Select the diagonal that we want to branch from. We select the prior + // path whose position in the new string is the farthest from the origin + // and does not pass the bounds of the diff graph + if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) { + basePath = clonePath(removePath); + self.pushComponent(basePath.components, undefined, true); + } else { + basePath = addPath; // No need to clone, we've pulled it from the list + basePath.newPos++; + self.pushComponent(basePath.components, true, undefined); + } + + oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); + + // If we have hit the end of both strings, then we are done + if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + return done(buildValues(basePath.components, newString, oldString, self.useLongestToken)); + } else { + // Otherwise track this path as a potential candidate and continue. + bestPath[diagonalPath] = basePath; + } + } + + editLength++; + } + + // Performs the length of edit iteration. Is a bit fugly as this has to support the + // sync and async mode which is never fun. Loops over execEditLength until a value + // is produced. + if (callback) { + (function exec() { + setTimeout(function() { + // This should not happen, but we want to be safe. + /*istanbul ignore next */ + if (editLength > maxEditLength) { + return callback(); + } + + if (!execEditLength()) { + exec(); + } + }, 0); + }()); + } else { + while (editLength <= maxEditLength) { + var ret = execEditLength(); + if (ret) { + return ret; + } + } + } + }, + + pushComponent: function(components, added, removed) { + var last = components[components.length - 1]; + if (last && last.added === added && last.removed === removed) { + // We need to clone here as the component clone operation is just + // as shallow array clone + components[components.length - 1] = {count: last.count + 1, added: added, removed: removed }; + } else { + components.push({count: 1, added: added, removed: removed }); + } + }, + extractCommon: function(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, + oldLen = oldString.length, + newPos = basePath.newPos, + oldPos = newPos - diagonalPath, + + commonCount = 0; + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + newPos++; + oldPos++; + commonCount++; + } + + if (commonCount) { + basePath.components.push({count: commonCount}); + } + + basePath.newPos = newPos; + return oldPos; + }, + + equals: function(left, right) { + var reWhitespace = /\S/; + return left === right || (this.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right)); + }, + tokenize: function(value) { + return value.split(''); + } + }; + + var CharDiff = new Diff(); + + var WordDiff = new Diff(true); + var WordWithSpaceDiff = new Diff(); + WordDiff.tokenize = WordWithSpaceDiff.tokenize = function(value) { + return removeEmpty(value.split(/(\s+|\b)/)); + }; + + var CssDiff = new Diff(true); + CssDiff.tokenize = function(value) { + return removeEmpty(value.split(/([{}:;,]|\s+)/)); + }; + + var LineDiff = new Diff(); + + var TrimmedLineDiff = new Diff(); + TrimmedLineDiff.ignoreTrim = true; + + LineDiff.tokenize = TrimmedLineDiff.tokenize = function(value) { + var retLines = [], + lines = value.split(/^/m); + for (var i = 0; i < lines.length; i++) { + var line = lines[i], + lastLine = lines[i - 1], + lastLineLastChar = lastLine && lastLine[lastLine.length - 1]; + + // Merge lines that may contain windows new lines + if (line === '\n' && lastLineLastChar === '\r') { + retLines[retLines.length - 1] = retLines[retLines.length - 1].slice(0, -1) + '\r\n'; + } else { + if (this.ignoreTrim) { + line = line.trim(); + // add a newline unless this is the last line. + if (i < lines.length - 1) { + line += '\n'; + } + } + retLines.push(line); + } + } + + return retLines; + }; + + var PatchDiff = new Diff(); + PatchDiff.tokenize = function(value) { + var ret = [], + linesAndNewlines = value.split(/(\n|\r\n)/); + + // Ignore the final empty token that occurs if the string ends with a new line + if (!linesAndNewlines[linesAndNewlines.length - 1]) { + linesAndNewlines.pop(); + } + + // Merge the content and line separators into single tokens + for (var i = 0; i < linesAndNewlines.length; i++) { + var line = linesAndNewlines[i]; + + if (i % 2) { + ret[ret.length - 1] += line; + } else { + ret.push(line); + } + } + return ret; + }; + + var SentenceDiff = new Diff(); + SentenceDiff.tokenize = function(value) { + return removeEmpty(value.split(/(\S.+?[.!?])(?=\s+|$)/)); + }; + + var JsonDiff = new Diff(); + // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a + // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output: + JsonDiff.useLongestToken = true; + JsonDiff.tokenize = LineDiff.tokenize; + JsonDiff.equals = function(left, right) { + return LineDiff.equals(left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1')); + }; + + var JsDiff = { + Diff: Diff, + + diffChars: function(oldStr, newStr, callback) { return CharDiff.diff(oldStr, newStr, callback); }, + diffWords: function(oldStr, newStr, callback) { return WordDiff.diff(oldStr, newStr, callback); }, + diffWordsWithSpace: function(oldStr, newStr, callback) { return WordWithSpaceDiff.diff(oldStr, newStr, callback); }, + diffLines: function(oldStr, newStr, callback) { return LineDiff.diff(oldStr, newStr, callback); }, + diffTrimmedLines: function(oldStr, newStr, callback) { return TrimmedLineDiff.diff(oldStr, newStr, callback); }, + + diffSentences: function(oldStr, newStr, callback) { return SentenceDiff.diff(oldStr, newStr, callback); }, + + diffCss: function(oldStr, newStr, callback) { return CssDiff.diff(oldStr, newStr, callback); }, + diffJson: function(oldObj, newObj, callback) { + return JsonDiff.diff( + typeof oldObj === 'string' ? oldObj : JSON.stringify(canonicalize(oldObj), undefined, ' '), + typeof newObj === 'string' ? newObj : JSON.stringify(canonicalize(newObj), undefined, ' '), + callback + ); + }, + + createTwoFilesPatch: function(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader) { + var ret = []; + + if (oldFileName == newFileName) { + ret.push('Index: ' + oldFileName); + } + ret.push('==================================================================='); + ret.push('--- ' + oldFileName + (typeof oldHeader === 'undefined' ? '' : '\t' + oldHeader)); + ret.push('+++ ' + newFileName + (typeof newHeader === 'undefined' ? '' : '\t' + newHeader)); + + var diff = PatchDiff.diff(oldStr, newStr); + diff.push({value: '', lines: []}); // Append an empty value to make cleanup easier + + // Formats a given set of lines for printing as context lines in a patch + function contextLines(lines) { + return map(lines, function(entry) { return ' ' + entry; }); + } + + // Outputs the no newline at end of file warning if needed + function eofNL(curRange, i, current) { + var last = diff[diff.length - 2], + isLast = i === diff.length - 2, + isLastOfType = i === diff.length - 3 && current.added !== last.added; + + // Figure out if this is the last line for the given file and missing NL + if (!(/\n$/.test(current.value)) && (isLast || isLastOfType)) { + curRange.push('\\ No newline at end of file'); + } + } + + var oldRangeStart = 0, newRangeStart = 0, curRange = [], + oldLine = 1, newLine = 1; + for (var i = 0; i < diff.length; i++) { + var current = diff[i], + lines = current.lines || current.value.replace(/\n$/, '').split('\n'); + current.lines = lines; + + if (current.added || current.removed) { + // If we have previous context, start with that + if (!oldRangeStart) { + var prev = diff[i - 1]; + oldRangeStart = oldLine; + newRangeStart = newLine; + + if (prev) { + curRange = contextLines(prev.lines.slice(-4)); + oldRangeStart -= curRange.length; + newRangeStart -= curRange.length; + } + } + + // Output our changes + curRange.push.apply(curRange, map(lines, function(entry) { + return (current.added ? '+' : '-') + entry; + })); + eofNL(curRange, i, current); + + // Track the updated file position + if (current.added) { + newLine += lines.length; + } else { + oldLine += lines.length; + } + } else { + // Identical context lines. Track line changes + if (oldRangeStart) { + // Close out any changes that have been output (or join overlapping) + if (lines.length <= 8 && i < diff.length - 2) { + // Overlapping + curRange.push.apply(curRange, contextLines(lines)); + } else { + // end the range and output + var contextSize = Math.min(lines.length, 4); + ret.push( + '@@ -' + oldRangeStart + ',' + (oldLine - oldRangeStart + contextSize) + + ' +' + newRangeStart + ',' + (newLine - newRangeStart + contextSize) + + ' @@'); + ret.push.apply(ret, curRange); + ret.push.apply(ret, contextLines(lines.slice(0, contextSize))); + if (lines.length <= 4) { + eofNL(ret, i, current); + } + + oldRangeStart = 0; + newRangeStart = 0; + curRange = []; + } + } + oldLine += lines.length; + newLine += lines.length; + } + } + + return ret.join('\n') + '\n'; + }, + + createPatch: function(fileName, oldStr, newStr, oldHeader, newHeader) { + return JsDiff.createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader); + }, + + applyPatch: function(oldStr, uniDiff) { + var diffstr = uniDiff.split('\n'), + hunks = [], + i = 0, + remEOFNL = false, + addEOFNL = false; + + // Skip to the first change hunk + while (i < diffstr.length && !(/^@@/.test(diffstr[i]))) { + i++; + } + + // Parse the unified diff + for (; i < diffstr.length; i++) { + if (diffstr[i][0] === '@') { + var chnukHeader = diffstr[i].split(/@@ -(\d+),(\d+) \+(\d+),(\d+) @@/); + hunks.unshift({ + start: chnukHeader[3], + oldlength: +chnukHeader[2], + removed: [], + newlength: chnukHeader[4], + added: [] + }); + } else if (diffstr[i][0] === '+') { + hunks[0].added.push(diffstr[i].substr(1)); + } else if (diffstr[i][0] === '-') { + hunks[0].removed.push(diffstr[i].substr(1)); + } else if (diffstr[i][0] === ' ') { + hunks[0].added.push(diffstr[i].substr(1)); + hunks[0].removed.push(diffstr[i].substr(1)); + } else if (diffstr[i][0] === '\\') { + if (diffstr[i - 1][0] === '+') { + remEOFNL = true; + } else if (diffstr[i - 1][0] === '-') { + addEOFNL = true; + } + } + } + + // Apply the diff to the input + var lines = oldStr.split('\n'); + for (i = hunks.length - 1; i >= 0; i--) { + var hunk = hunks[i]; + // Sanity check the input string. Bail if we don't match. + for (var j = 0; j < hunk.oldlength; j++) { + if (lines[hunk.start - 1 + j] !== hunk.removed[j]) { + return false; + } + } + Array.prototype.splice.apply(lines, [hunk.start - 1, hunk.oldlength].concat(hunk.added)); + } + + // Handle EOFNL insertion/removal + if (remEOFNL) { + while (!lines[lines.length - 1]) { + lines.pop(); + } + } else if (addEOFNL) { + lines.push(''); + } + return lines.join('\n'); + }, + + convertChangesToXML: function(changes) { + var ret = []; + for (var i = 0; i < changes.length; i++) { + var change = changes[i]; + if (change.added) { + ret.push('<ins>'); + } else if (change.removed) { + ret.push('<del>'); + } + + ret.push(escapeHTML(change.value)); + + if (change.added) { + ret.push('</ins>'); + } else if (change.removed) { + ret.push('</del>'); + } + } + return ret.join(''); + }, + + // See: http://code.google.com/p/google-diff-match-patch/wiki/API + convertChangesToDMP: function(changes) { + var ret = [], + change, + operation; + for (var i = 0; i < changes.length; i++) { + change = changes[i]; + if (change.added) { + operation = 1; + } else if (change.removed) { + operation = -1; + } else { + operation = 0; + } + + ret.push([operation, change.value]); + } + return ret; + }, + + canonicalize: canonicalize + }; + + /*istanbul ignore next */ + /*global module */ + if (typeof module !== 'undefined' && module.exports) { + module.exports = JsDiff; + } else if (typeof define === 'function' && define.amd) { + /*global define */ + define([], function() { return JsDiff; }); + } else if (typeof global.JsDiff === 'undefined') { + global.JsDiff = JsDiff; + } +}(this)); + +},{}],68:[function(require,module,exports){ +'use strict'; + +var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + +module.exports = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return str.replace(matchOperatorsRe, '\\$&'); +}; + +},{}],69:[function(require,module,exports){ +(function (process){ +// Growl - Copyright TJ Holowaychuk <tj@vision-media.ca> (MIT Licensed) + +/** + * Module dependencies. + */ + +var exec = require('child_process').exec + , fs = require('fs') + , path = require('path') + , exists = fs.existsSync || path.existsSync + , os = require('os') + , quote = JSON.stringify + , cmd; + +function which(name) { + var paths = process.env.PATH.split(':'); + var loc; + + for (var i = 0, len = paths.length; i < len; ++i) { + loc = path.join(paths[i], name); + if (exists(loc)) return loc; + } +} + +switch(os.type()) { + case 'Darwin': + if (which('terminal-notifier')) { + cmd = { + type: "Darwin-NotificationCenter" + , pkg: "terminal-notifier" + , msg: '-message' + , title: '-title' + , subtitle: '-subtitle' + , priority: { + cmd: '-execute' + , range: [] + } + }; + } else { + cmd = { + type: "Darwin-Growl" + , pkg: "growlnotify" + , msg: '-m' + , sticky: '--sticky' + , priority: { + cmd: '--priority' + , range: [ + -2 + , -1 + , 0 + , 1 + , 2 + , "Very Low" + , "Moderate" + , "Normal" + , "High" + , "Emergency" + ] + } + }; + } + break; + case 'Linux': + cmd = { + type: "Linux" + , pkg: "notify-send" + , msg: '' + , sticky: '-t 0' + , icon: '-i' + , priority: { + cmd: '-u' + , range: [ + "low" + , "normal" + , "critical" + ] + } + }; + break; + case 'Windows_NT': + cmd = { + type: "Windows" + , pkg: "growlnotify" + , msg: '' + , sticky: '/s:true' + , title: '/t:' + , icon: '/i:' + , priority: { + cmd: '/p:' + , range: [ + -2 + , -1 + , 0 + , 1 + , 2 + ] + } + }; + break; +} + +/** + * Expose `growl`. + */ + +exports = module.exports = growl; + +/** + * Node-growl version. + */ + +exports.version = '1.4.1' + +/** + * Send growl notification _msg_ with _options_. + * + * Options: + * + * - title Notification title + * - sticky Make the notification stick (defaults to false) + * - priority Specify an int or named key (default is 0) + * - name Application name (defaults to growlnotify) + * - image + * - path to an icon sets --iconpath + * - path to an image sets --image + * - capitalized word sets --appIcon + * - filename uses extname as --icon + * - otherwise treated as --icon + * + * Examples: + * + * growl('New email') + * growl('5 new emails', { title: 'Thunderbird' }) + * growl('Email sent', function(){ + * // ... notification sent + * }) + * + * @param {string} msg + * @param {object} options + * @param {function} fn + * @api public + */ + +function growl(msg, options, fn) { + var image + , args + , options = options || {} + , fn = fn || function(){}; + + // noop + if (!cmd) return fn(new Error('growl not supported on this platform')); + args = [cmd.pkg]; + + // image + if (image = options.image) { + switch(cmd.type) { + case 'Darwin-Growl': + var flag, ext = path.extname(image).substr(1) + flag = flag || ext == 'icns' && 'iconpath' + flag = flag || /^[A-Z]/.test(image) && 'appIcon' + flag = flag || /^png|gif|jpe?g$/.test(ext) && 'image' + flag = flag || ext && (image = ext) && 'icon' + flag = flag || 'icon' + args.push('--' + flag, quote(image)) + break; + case 'Linux': + args.push(cmd.icon, quote(image)); + // libnotify defaults to sticky, set a hint for transient notifications + if (!options.sticky) args.push('--hint=int:transient:1'); + break; + case 'Windows': + args.push(cmd.icon + quote(image)); + break; + } + } + + // sticky + if (options.sticky) args.push(cmd.sticky); + + // priority + if (options.priority) { + var priority = options.priority + ''; + var checkindexOf = cmd.priority.range.indexOf(priority); + if (~cmd.priority.range.indexOf(priority)) { + args.push(cmd.priority, options.priority); + } + } + + // name + if (options.name && cmd.type === "Darwin-Growl") { + args.push('--name', options.name); + } + + switch(cmd.type) { + case 'Darwin-Growl': + args.push(cmd.msg); + args.push(quote(msg)); + if (options.title) args.push(quote(options.title)); + break; + case 'Darwin-NotificationCenter': + args.push(cmd.msg); + args.push(quote(msg)); + if (options.title) { + args.push(cmd.title); + args.push(quote(options.title)); + } + if (options.subtitle) { + args.push(cmd.subtitle); + args.push(quote(options.subtitle)); + } + break; + case 'Darwin-Growl': + args.push(cmd.msg); + args.push(quote(msg)); + if (options.title) args.push(quote(options.title)); + break; + case 'Linux': + if (options.title) { + args.push(quote(options.title)); + args.push(cmd.msg); + args.push(quote(msg)); + } else { + args.push(quote(msg)); + } + break; + case 'Windows': + args.push(quote(msg)); + if (options.title) args.push(cmd.title + quote(options.title)); + break; + } + + // execute + exec(args.join(' '), fn); +}; + +}).call(this,require('_process')) +},{"_process":51,"child_process":41,"fs":41,"os":50,"path":41}],70:[function(require,module,exports){ +(function (process,global){ +/** + * Shim process.stdout. + */ + +process.stdout = require('browser-stdout')(); + +var Mocha = require('../'); + +/** + * Create a Mocha instance. + * + * @return {undefined} + */ + +var mocha = new Mocha({ reporter: 'html' }); + +/** + * Save timer references to avoid Sinon interfering (see GH-237). + */ + +var Date = global.Date; +var setTimeout = global.setTimeout; +var setInterval = global.setInterval; +var clearTimeout = global.clearTimeout; +var clearInterval = global.clearInterval; + +var uncaughtExceptionHandlers = []; + +var originalOnerrorHandler = global.onerror; + +/** + * Remove uncaughtException listener. + * Revert to original onerror handler if previously defined. + */ + +process.removeListener = function(e, fn){ + if ('uncaughtException' == e) { + if (originalOnerrorHandler) { + global.onerror = originalOnerrorHandler; + } else { + global.onerror = function() {}; + } + var i = Mocha.utils.indexOf(uncaughtExceptionHandlers, fn); + if (i != -1) { uncaughtExceptionHandlers.splice(i, 1); } + } +}; + +/** + * Implements uncaughtException listener. + */ + +process.on = function(e, fn){ + if ('uncaughtException' == e) { + global.onerror = function(err, url, line){ + fn(new Error(err + ' (' + url + ':' + line + ')')); + return !mocha.allowUncaught; + }; + uncaughtExceptionHandlers.push(fn); + } +}; + +// The BDD UI is registered by default, but no UI will be functional in the +// browser without an explicit call to the overridden `mocha.ui` (see below). +// Ensure that this default UI does not expose its methods to the global scope. +mocha.suite.removeAllListeners('pre-require'); + +var immediateQueue = [] + , immediateTimeout; + +function timeslice() { + var immediateStart = new Date().getTime(); + while (immediateQueue.length && (new Date().getTime() - immediateStart) < 100) { + immediateQueue.shift()(); + } + if (immediateQueue.length) { + immediateTimeout = setTimeout(timeslice, 0); + } else { + immediateTimeout = null; + } +} + +/** + * High-performance override of Runner.immediately. + */ + +Mocha.Runner.immediately = function(callback) { + immediateQueue.push(callback); + if (!immediateTimeout) { + immediateTimeout = setTimeout(timeslice, 0); + } +}; + +/** + * Function to allow assertion libraries to throw errors directly into mocha. + * This is useful when running tests in a browser because window.onerror will + * only receive the 'message' attribute of the Error. + */ +mocha.throwError = function(err) { + Mocha.utils.forEach(uncaughtExceptionHandlers, function (fn) { + fn(err); + }); + throw err; +}; + +/** + * Override ui to ensure that the ui functions are initialized. + * Normally this would happen in Mocha.prototype.loadFiles. + */ + +mocha.ui = function(ui){ + Mocha.prototype.ui.call(this, ui); + this.suite.emit('pre-require', global, null, this); + return this; +}; + +/** + * Setup mocha with the given setting options. + */ + +mocha.setup = function(opts){ + if ('string' == typeof opts) opts = { ui: opts }; + for (var opt in opts) this[opt](opts[opt]); + return this; +}; + +/** + * Run mocha, returning the Runner. + */ + +mocha.run = function(fn){ + var options = mocha.options; + mocha.globals('location'); + + var query = Mocha.utils.parseQuery(global.location.search || ''); + if (query.grep) mocha.grep(new RegExp(query.grep)); + if (query.fgrep) mocha.grep(query.fgrep); + if (query.invert) mocha.invert(); + + return Mocha.prototype.run.call(mocha, function(err){ + // The DOM Document is not available in Web Workers. + var document = global.document; + if (document && document.getElementById('mocha') && options.noHighlighting !== true) { + Mocha.utils.highlightTags('code'); + } + if (fn) fn(err); + }); +}; + +/** + * Expose the process shim. + * https://github.com/mochajs/mocha/pull/916 + */ + +Mocha.process = process; + +/** + * Expose mocha. + */ + +window.Mocha = Mocha; +window.mocha = mocha; + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../":1,"_process":51,"browser-stdout":40}]},{},[70]); diff --git a/libraries/foundation-6/test/javascript/lib/sinon.js b/libraries/foundation-6/test/javascript/lib/sinon.js new file mode 100755 index 00000000..dc73fc82 --- /dev/null +++ b/libraries/foundation-6/test/javascript/lib/sinon.js @@ -0,0 +1,6437 @@ +/** + * Sinon.JS 1.17.3, 2016/01/27 + * + * @author Christian Johansen (christian@cjohansen.no) + * @author Contributors: https://github.com/cjohansen/Sinon.JS/blob/master/AUTHORS + * + * (The BSD License) + * + * Copyright (c) 2010-2014, Christian Johansen, christian@cjohansen.no + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of Christian Johansen nor the names of his contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function (root, factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + define('sinon', [], function () { + return (root.sinon = factory()); + }); + } else if (typeof exports === 'object') { + module.exports = factory(); + } else { + root.sinon = factory(); + } +}(this, function () { + 'use strict'; + var samsam, formatio, lolex; + (function () { + function define(mod, deps, fn) { + if (mod == "samsam") { + samsam = deps(); + } else if (typeof deps === "function" && mod.length === 0) { + lolex = deps(); + } else if (typeof fn === "function") { + formatio = fn(samsam); + } + } + define.amd = {}; +((typeof define === "function" && define.amd && function (m) { define("samsam", m); }) || + (typeof module === "object" && + function (m) { module.exports = m(); }) || // Node + function (m) { this.samsam = m(); } // Browser globals +)(function () { + var o = Object.prototype; + var div = typeof document !== "undefined" && document.createElement("div"); + + function isNaN(value) { + // Unlike global isNaN, this avoids type coercion + // typeof check avoids IE host object issues, hat tip to + // lodash + var val = value; // JsLint thinks value !== value is "weird" + return typeof value === "number" && value !== val; + } + + function getClass(value) { + // Returns the internal [[Class]] by calling Object.prototype.toString + // with the provided value as this. Return value is a string, naming the + // internal class, e.g. "Array" + return o.toString.call(value).split(/[ \]]/)[1]; + } + + /** + * @name samsam.isArguments + * @param Object object + * + * Returns ``true`` if ``object`` is an ``arguments`` object, + * ``false`` otherwise. + */ + function isArguments(object) { + if (getClass(object) === 'Arguments') { return true; } + if (typeof object !== "object" || typeof object.length !== "number" || + getClass(object) === "Array") { + return false; + } + if (typeof object.callee == "function") { return true; } + try { + object[object.length] = 6; + delete object[object.length]; + } catch (e) { + return true; + } + return false; + } + + /** + * @name samsam.isElement + * @param Object object + * + * Returns ``true`` if ``object`` is a DOM element node. Unlike + * Underscore.js/lodash, this function will return ``false`` if ``object`` + * is an *element-like* object, i.e. a regular object with a ``nodeType`` + * property that holds the value ``1``. + */ + function isElement(object) { + if (!object || object.nodeType !== 1 || !div) { return false; } + try { + object.appendChild(div); + object.removeChild(div); + } catch (e) { + return false; + } + return true; + } + + /** + * @name samsam.keys + * @param Object object + * + * Return an array of own property names. + */ + function keys(object) { + var ks = [], prop; + for (prop in object) { + if (o.hasOwnProperty.call(object, prop)) { ks.push(prop); } + } + return ks; + } + + /** + * @name samsam.isDate + * @param Object value + * + * Returns true if the object is a ``Date``, or *date-like*. Duck typing + * of date objects work by checking that the object has a ``getTime`` + * function whose return value equals the return value from the object's + * ``valueOf``. + */ + function isDate(value) { + return typeof value.getTime == "function" && + value.getTime() == value.valueOf(); + } + + /** + * @name samsam.isNegZero + * @param Object value + * + * Returns ``true`` if ``value`` is ``-0``. + */ + function isNegZero(value) { + return value === 0 && 1 / value === -Infinity; + } + + /** + * @name samsam.equal + * @param Object obj1 + * @param Object obj2 + * + * Returns ``true`` if two objects are strictly equal. Compared to + * ``===`` there are two exceptions: + * + * - NaN is considered equal to NaN + * - -0 and +0 are not considered equal + */ + function identical(obj1, obj2) { + if (obj1 === obj2 || (isNaN(obj1) && isNaN(obj2))) { + return obj1 !== 0 || isNegZero(obj1) === isNegZero(obj2); + } + } + + + /** + * @name samsam.deepEqual + * @param Object obj1 + * @param Object obj2 + * + * Deep equal comparison. Two values are "deep equal" if: + * + * - They are equal, according to samsam.identical + * - They are both date objects representing the same time + * - They are both arrays containing elements that are all deepEqual + * - They are objects with the same set of properties, and each property + * in ``obj1`` is deepEqual to the corresponding property in ``obj2`` + * + * Supports cyclic objects. + */ + function deepEqualCyclic(obj1, obj2) { + + // used for cyclic comparison + // contain already visited objects + var objects1 = [], + objects2 = [], + // contain pathes (position in the object structure) + // of the already visited objects + // indexes same as in objects arrays + paths1 = [], + paths2 = [], + // contains combinations of already compared objects + // in the manner: { "$1['ref']$2['ref']": true } + compared = {}; + + /** + * used to check, if the value of a property is an object + * (cyclic logic is only needed for objects) + * only needed for cyclic logic + */ + function isObject(value) { + + if (typeof value === 'object' && value !== null && + !(value instanceof Boolean) && + !(value instanceof Date) && + !(value instanceof Number) && + !(value instanceof RegExp) && + !(value instanceof String)) { + + return true; + } + + return false; + } + + /** + * returns the index of the given object in the + * given objects array, -1 if not contained + * only needed for cyclic logic + */ + function getIndex(objects, obj) { + + var i; + for (i = 0; i < objects.length; i++) { + if (objects[i] === obj) { + return i; + } + } + + return -1; + } + + // does the recursion for the deep equal check + return (function deepEqual(obj1, obj2, path1, path2) { + var type1 = typeof obj1; + var type2 = typeof obj2; + + // == null also matches undefined + if (obj1 === obj2 || + isNaN(obj1) || isNaN(obj2) || + obj1 == null || obj2 == null || + type1 !== "object" || type2 !== "object") { + + return identical(obj1, obj2); + } + + // Elements are only equal if identical(expected, actual) + if (isElement(obj1) || isElement(obj2)) { return false; } + + var isDate1 = isDate(obj1), isDate2 = isDate(obj2); + if (isDate1 || isDate2) { + if (!isDate1 || !isDate2 || obj1.getTime() !== obj2.getTime()) { + return false; + } + } + + if (obj1 instanceof RegExp && obj2 instanceof RegExp) { + if (obj1.toString() !== obj2.toString()) { return false; } + } + + var class1 = getClass(obj1); + var class2 = getClass(obj2); + var keys1 = keys(obj1); + var keys2 = keys(obj2); + + if (isArguments(obj1) || isArguments(obj2)) { + if (obj1.length !== obj2.length) { return false; } + } else { + if (type1 !== type2 || class1 !== class2 || + keys1.length !== keys2.length) { + return false; + } + } + + var key, i, l, + // following vars are used for the cyclic logic + value1, value2, + isObject1, isObject2, + index1, index2, + newPath1, newPath2; + + for (i = 0, l = keys1.length; i < l; i++) { + key = keys1[i]; + if (!o.hasOwnProperty.call(obj2, key)) { + return false; + } + + // Start of the cyclic logic + + value1 = obj1[key]; + value2 = obj2[key]; + + isObject1 = isObject(value1); + isObject2 = isObject(value2); + + // determine, if the objects were already visited + // (it's faster to check for isObject first, than to + // get -1 from getIndex for non objects) + index1 = isObject1 ? getIndex(objects1, value1) : -1; + index2 = isObject2 ? getIndex(objects2, value2) : -1; + + // determine the new pathes of the objects + // - for non cyclic objects the current path will be extended + // by current property name + // - for cyclic objects the stored path is taken + newPath1 = index1 !== -1 + ? paths1[index1] + : path1 + '[' + JSON.stringify(key) + ']'; + newPath2 = index2 !== -1 + ? paths2[index2] + : path2 + '[' + JSON.stringify(key) + ']'; + + // stop recursion if current objects are already compared + if (compared[newPath1 + newPath2]) { + return true; + } + + // remember the current objects and their pathes + if (index1 === -1 && isObject1) { + objects1.push(value1); + paths1.push(newPath1); + } + if (index2 === -1 && isObject2) { + objects2.push(value2); + paths2.push(newPath2); + } + + // remember that the current objects are already compared + if (isObject1 && isObject2) { + compared[newPath1 + newPath2] = true; + } + + // End of cyclic logic + + // neither value1 nor value2 is a cycle + // continue with next level + if (!deepEqual(value1, value2, newPath1, newPath2)) { + return false; + } + } + + return true; + + }(obj1, obj2, '$1', '$2')); + } + + var match; + + function arrayContains(array, subset) { + if (subset.length === 0) { return true; } + var i, l, j, k; + for (i = 0, l = array.length; i < l; ++i) { + if (match(array[i], subset[0])) { + for (j = 0, k = subset.length; j < k; ++j) { + if (!match(array[i + j], subset[j])) { return false; } + } + return true; + } + } + return false; + } + + /** + * @name samsam.match + * @param Object object + * @param Object matcher + * + * Compare arbitrary value ``object`` with matcher. + */ + match = function match(object, matcher) { + if (matcher && typeof matcher.test === "function") { + return matcher.test(object); + } + + if (typeof matcher === "function") { + return matcher(object) === true; + } + + if (typeof matcher === "string") { + matcher = matcher.toLowerCase(); + var notNull = typeof object === "string" || !!object; + return notNull && + (String(object)).toLowerCase().indexOf(matcher) >= 0; + } + + if (typeof matcher === "number") { + return matcher === object; + } + + if (typeof matcher === "boolean") { + return matcher === object; + } + + if (typeof(matcher) === "undefined") { + return typeof(object) === "undefined"; + } + + if (matcher === null) { + return object === null; + } + + if (getClass(object) === "Array" && getClass(matcher) === "Array") { + return arrayContains(object, matcher); + } + + if (matcher && typeof matcher === "object") { + if (matcher === object) { + return true; + } + var prop; + for (prop in matcher) { + var value = object[prop]; + if (typeof value === "undefined" && + typeof object.getAttribute === "function") { + value = object.getAttribute(prop); + } + if (matcher[prop] === null || typeof matcher[prop] === 'undefined') { + if (value !== matcher[prop]) { + return false; + } + } else if (typeof value === "undefined" || !match(value, matcher[prop])) { + return false; + } + } + return true; + } + + throw new Error("Matcher was not a string, a number, a " + + "function, a boolean or an object"); + }; + + return { + isArguments: isArguments, + isElement: isElement, + isDate: isDate, + isNegZero: isNegZero, + identical: identical, + deepEqual: deepEqualCyclic, + match: match, + keys: keys + }; +}); +((typeof define === "function" && define.amd && function (m) { + define("formatio", ["samsam"], m); +}) || (typeof module === "object" && function (m) { + module.exports = m(require("samsam")); +}) || function (m) { this.formatio = m(this.samsam); } +)(function (samsam) { + + var formatio = { + excludeConstructors: ["Object", /^.$/], + quoteStrings: true, + limitChildrenCount: 0 + }; + + var hasOwn = Object.prototype.hasOwnProperty; + + var specialObjects = []; + if (typeof global !== "undefined") { + specialObjects.push({ object: global, value: "[object global]" }); + } + if (typeof document !== "undefined") { + specialObjects.push({ + object: document, + value: "[object HTMLDocument]" + }); + } + if (typeof window !== "undefined") { + specialObjects.push({ object: window, value: "[object Window]" }); + } + + function functionName(func) { + if (!func) { return ""; } + if (func.displayName) { return func.displayName; } + if (func.name) { return func.name; } + var matches = func.toString().match(/function\s+([^\(]+)/m); + return (matches && matches[1]) || ""; + } + + function constructorName(f, object) { + var name = functionName(object && object.constructor); + var excludes = f.excludeConstructors || + formatio.excludeConstructors || []; + + var i, l; + for (i = 0, l = excludes.length; i < l; ++i) { + if (typeof excludes[i] === "string" && excludes[i] === name) { + return ""; + } else if (excludes[i].test && excludes[i].test(name)) { + return ""; + } + } + + return name; + } + + function isCircular(object, objects) { + if (typeof object !== "object") { return false; } + var i, l; + for (i = 0, l = objects.length; i < l; ++i) { + if (objects[i] === object) { return true; } + } + return false; + } + + function ascii(f, object, processed, indent) { + if (typeof object === "string") { + var qs = f.quoteStrings; + var quote = typeof qs !== "boolean" || qs; + return processed || quote ? '"' + object + '"' : object; + } + + if (typeof object === "function" && !(object instanceof RegExp)) { + return ascii.func(object); + } + + processed = processed || []; + + if (isCircular(object, processed)) { return "[Circular]"; } + + if (Object.prototype.toString.call(object) === "[object Array]") { + return ascii.array.call(f, object, processed); + } + + if (!object) { return String((1/object) === -Infinity ? "-0" : object); } + if (samsam.isElement(object)) { return ascii.element(object); } + + if (typeof object.toString === "function" && + object.toString !== Object.prototype.toString) { + return object.toString(); + } + + var i, l; + for (i = 0, l = specialObjects.length; i < l; i++) { + if (object === specialObjects[i].object) { + return specialObjects[i].value; + } + } + + return ascii.object.call(f, object, processed, indent); + } + + ascii.func = function (func) { + return "function " + functionName(func) + "() {}"; + }; + + ascii.array = function (array, processed) { + processed = processed || []; + processed.push(array); + var pieces = []; + var i, l; + l = (this.limitChildrenCount > 0) ? + Math.min(this.limitChildrenCount, array.length) : array.length; + + for (i = 0; i < l; ++i) { + pieces.push(ascii(this, array[i], processed)); + } + + if(l < array.length) + pieces.push("[... " + (array.length - l) + " more elements]"); + + return "[" + pieces.join(", ") + "]"; + }; + + ascii.object = function (object, processed, indent) { + processed = processed || []; + processed.push(object); + indent = indent || 0; + var pieces = [], properties = samsam.keys(object).sort(); + var length = 3; + var prop, str, obj, i, k, l; + l = (this.limitChildrenCount > 0) ? + Math.min(this.limitChildrenCount, properties.length) : properties.length; + + for (i = 0; i < l; ++i) { + prop = properties[i]; + obj = object[prop]; + + if (isCircular(obj, processed)) { + str = "[Circular]"; + } else { + str = ascii(this, obj, processed, indent + 2); + } + + str = (/\s/.test(prop) ? '"' + prop + '"' : prop) + ": " + str; + length += str.length; + pieces.push(str); + } + + var cons = constructorName(this, object); + var prefix = cons ? "[" + cons + "] " : ""; + var is = ""; + for (i = 0, k = indent; i < k; ++i) { is += " "; } + + if(l < properties.length) + pieces.push("[... " + (properties.length - l) + " more elements]"); + + if (length + indent > 80) { + return prefix + "{\n " + is + pieces.join(",\n " + is) + "\n" + + is + "}"; + } + return prefix + "{ " + pieces.join(", ") + " }"; + }; + + ascii.element = function (element) { + var tagName = element.tagName.toLowerCase(); + var attrs = element.attributes, attr, pairs = [], attrName, i, l, val; + + for (i = 0, l = attrs.length; i < l; ++i) { + attr = attrs.item(i); + attrName = attr.nodeName.toLowerCase().replace("html:", ""); + val = attr.nodeValue; + if (attrName !== "contenteditable" || val !== "inherit") { + if (!!val) { pairs.push(attrName + "=\"" + val + "\""); } + } + } + + var formatted = "<" + tagName + (pairs.length > 0 ? " " : ""); + var content = element.innerHTML; + + if (content.length > 20) { + content = content.substr(0, 20) + "[...]"; + } + + var res = formatted + pairs.join(" ") + ">" + content + + "</" + tagName + ">"; + + return res.replace(/ contentEditable="inherit"/, ""); + }; + + function Formatio(options) { + for (var opt in options) { + this[opt] = options[opt]; + } + } + + Formatio.prototype = { + functionName: functionName, + + configure: function (options) { + return new Formatio(options); + }, + + constructorName: function (object) { + return constructorName(this, object); + }, + + ascii: function (object, processed, indent) { + return ascii(this, object, processed, indent); + } + }; + + return Formatio.prototype; +}); +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.lolex=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ +(function (global){ +/*global global, window*/ +/** + * @author Christian Johansen (christian@cjohansen.no) and contributors + * @license BSD + * + * Copyright (c) 2010-2014 Christian Johansen + */ + +(function (global) { + + // Make properties writable in IE, as per + // http://www.adequatelygood.com/Replacing-setTimeout-Globally.html + // JSLint being anal + var glbl = global; + + global.setTimeout = glbl.setTimeout; + global.clearTimeout = glbl.clearTimeout; + global.setInterval = glbl.setInterval; + global.clearInterval = glbl.clearInterval; + global.Date = glbl.Date; + + // setImmediate is not a standard function + // avoid adding the prop to the window object if not present + if('setImmediate' in global) { + global.setImmediate = glbl.setImmediate; + global.clearImmediate = glbl.clearImmediate; + } + + // node expects setTimeout/setInterval to return a fn object w/ .ref()/.unref() + // browsers, a number. + // see https://github.com/cjohansen/Sinon.JS/pull/436 + + var NOOP = function () { return undefined; }; + var timeoutResult = setTimeout(NOOP, 0); + var addTimerReturnsObject = typeof timeoutResult === "object"; + clearTimeout(timeoutResult); + + var NativeDate = Date; + var uniqueTimerId = 1; + + /** + * Parse strings like "01:10:00" (meaning 1 hour, 10 minutes, 0 seconds) into + * number of milliseconds. This is used to support human-readable strings passed + * to clock.tick() + */ + function parseTime(str) { + if (!str) { + return 0; + } + + var strings = str.split(":"); + var l = strings.length, i = l; + var ms = 0, parsed; + + if (l > 3 || !/^(\d\d:){0,2}\d\d?$/.test(str)) { + throw new Error("tick only understands numbers, 'm:s' and 'h:m:s'. Each part must be two digits"); + } + + while (i--) { + parsed = parseInt(strings[i], 10); + + if (parsed >= 60) { + throw new Error("Invalid time " + str); + } + + ms += parsed * Math.pow(60, (l - i - 1)); + } + + return ms * 1000; + } + + /** + * Used to grok the `now` parameter to createClock. + */ + function getEpoch(epoch) { + if (!epoch) { return 0; } + if (typeof epoch.getTime === "function") { return epoch.getTime(); } + if (typeof epoch === "number") { return epoch; } + throw new TypeError("now should be milliseconds since UNIX epoch"); + } + + function inRange(from, to, timer) { + return timer && timer.callAt >= from && timer.callAt <= to; + } + + function mirrorDateProperties(target, source) { + var prop; + for (prop in source) { + if (source.hasOwnProperty(prop)) { + target[prop] = source[prop]; + } + } + + // set special now implementation + if (source.now) { + target.now = function now() { + return target.clock.now; + }; + } else { + delete target.now; + } + + // set special toSource implementation + if (source.toSource) { + target.toSource = function toSource() { + return source.toSource(); + }; + } else { + delete target.toSource; + } + + // set special toString implementation + target.toString = function toString() { + return source.toString(); + }; + + target.prototype = source.prototype; + target.parse = source.parse; + target.UTC = source.UTC; + target.prototype.toUTCString = source.prototype.toUTCString; + + return target; + } + + function createDate() { + function ClockDate(year, month, date, hour, minute, second, ms) { + // Defensive and verbose to avoid potential harm in passing + // explicit undefined when user does not pass argument + switch (arguments.length) { + case 0: + return new NativeDate(ClockDate.clock.now); + case 1: + return new NativeDate(year); + case 2: + return new NativeDate(year, month); + case 3: + return new NativeDate(year, month, date); + case 4: + return new NativeDate(year, month, date, hour); + case 5: + return new NativeDate(year, month, date, hour, minute); + case 6: + return new NativeDate(year, month, date, hour, minute, second); + default: + return new NativeDate(year, month, date, hour, minute, second, ms); + } + } + + return mirrorDateProperties(ClockDate, NativeDate); + } + + function addTimer(clock, timer) { + if (timer.func === undefined) { + throw new Error("Callback must be provided to timer calls"); + } + + if (!clock.timers) { + clock.timers = {}; + } + + timer.id = uniqueTimerId++; + timer.createdAt = clock.now; + timer.callAt = clock.now + (timer.delay || (clock.duringTick ? 1 : 0)); + + clock.timers[timer.id] = timer; + + if (addTimerReturnsObject) { + return { + id: timer.id, + ref: NOOP, + unref: NOOP + }; + } + + return timer.id; + } + + + function compareTimers(a, b) { + // Sort first by absolute timing + if (a.callAt < b.callAt) { + return -1; + } + if (a.callAt > b.callAt) { + return 1; + } + + // Sort next by immediate, immediate timers take precedence + if (a.immediate && !b.immediate) { + return -1; + } + if (!a.immediate && b.immediate) { + return 1; + } + + // Sort next by creation time, earlier-created timers take precedence + if (a.createdAt < b.createdAt) { + return -1; + } + if (a.createdAt > b.createdAt) { + return 1; + } + + // Sort next by id, lower-id timers take precedence + if (a.id < b.id) { + return -1; + } + if (a.id > b.id) { + return 1; + } + + // As timer ids are unique, no fallback `0` is necessary + } + + function firstTimerInRange(clock, from, to) { + var timers = clock.timers, + timer = null, + id, + isInRange; + + for (id in timers) { + if (timers.hasOwnProperty(id)) { + isInRange = inRange(from, to, timers[id]); + + if (isInRange && (!timer || compareTimers(timer, timers[id]) === 1)) { + timer = timers[id]; + } + } + } + + return timer; + } + + function firstTimer(clock) { + var timers = clock.timers, + timer = null, + id; + + for (id in timers) { + if (timers.hasOwnProperty(id)) { + if (!timer || compareTimers(timer, timers[id]) === 1) { + timer = timers[id]; + } + } + } + + return timer; + } + + function callTimer(clock, timer) { + var exception; + + if (typeof timer.interval === "number") { + clock.timers[timer.id].callAt += timer.interval; + } else { + delete clock.timers[timer.id]; + } + + try { + if (typeof timer.func === "function") { + timer.func.apply(null, timer.args); + } else { + eval(timer.func); + } + } catch (e) { + exception = e; + } + + if (!clock.timers[timer.id]) { + if (exception) { + throw exception; + } + return; + } + + if (exception) { + throw exception; + } + } + + function timerType(timer) { + if (timer.immediate) { + return "Immediate"; + } else if (typeof timer.interval !== "undefined") { + return "Interval"; + } else { + return "Timeout"; + } + } + + function clearTimer(clock, timerId, ttype) { + if (!timerId) { + // null appears to be allowed in most browsers, and appears to be + // relied upon by some libraries, like Bootstrap carousel + return; + } + + if (!clock.timers) { + clock.timers = []; + } + + // in Node, timerId is an object with .ref()/.unref(), and + // its .id field is the actual timer id. + if (typeof timerId === "object") { + timerId = timerId.id; + } + + if (clock.timers.hasOwnProperty(timerId)) { + // check that the ID matches a timer of the correct type + var timer = clock.timers[timerId]; + if (timerType(timer) === ttype) { + delete clock.timers[timerId]; + } else { + throw new Error("Cannot clear timer: timer created with set" + ttype + "() but cleared with clear" + timerType(timer) + "()"); + } + } + } + + function uninstall(clock, target) { + var method, + i, + l; + + for (i = 0, l = clock.methods.length; i < l; i++) { + method = clock.methods[i]; + + if (target[method].hadOwnProperty) { + target[method] = clock["_" + method]; + } else { + try { + delete target[method]; + } catch (ignore) {} + } + } + + // Prevent multiple executions which will completely remove these props + clock.methods = []; + } + + function hijackMethod(target, method, clock) { + var prop; + + clock[method].hadOwnProperty = Object.prototype.hasOwnProperty.call(target, method); + clock["_" + method] = target[method]; + + if (method === "Date") { + var date = mirrorDateProperties(clock[method], target[method]); + target[method] = date; + } else { + target[method] = function () { + return clock[method].apply(clock, arguments); + }; + + for (prop in clock[method]) { + if (clock[method].hasOwnProperty(prop)) { + target[method][prop] = clock[method][prop]; + } + } + } + + target[method].clock = clock; + } + + var timers = { + setTimeout: setTimeout, + clearTimeout: clearTimeout, + setImmediate: global.setImmediate, + clearImmediate: global.clearImmediate, + setInterval: setInterval, + clearInterval: clearInterval, + Date: Date + }; + + var keys = Object.keys || function (obj) { + var ks = [], + key; + + for (key in obj) { + if (obj.hasOwnProperty(key)) { + ks.push(key); + } + } + + return ks; + }; + + exports.timers = timers; + + function createClock(now) { + var clock = { + now: getEpoch(now), + timeouts: {}, + Date: createDate() + }; + + clock.Date.clock = clock; + + clock.setTimeout = function setTimeout(func, timeout) { + return addTimer(clock, { + func: func, + args: Array.prototype.slice.call(arguments, 2), + delay: timeout + }); + }; + + clock.clearTimeout = function clearTimeout(timerId) { + return clearTimer(clock, timerId, "Timeout"); + }; + + clock.setInterval = function setInterval(func, timeout) { + return addTimer(clock, { + func: func, + args: Array.prototype.slice.call(arguments, 2), + delay: timeout, + interval: timeout + }); + }; + + clock.clearInterval = function clearInterval(timerId) { + return clearTimer(clock, timerId, "Interval"); + }; + + clock.setImmediate = function setImmediate(func) { + return addTimer(clock, { + func: func, + args: Array.prototype.slice.call(arguments, 1), + immediate: true + }); + }; + + clock.clearImmediate = function clearImmediate(timerId) { + return clearTimer(clock, timerId, "Immediate"); + }; + + clock.tick = function tick(ms) { + ms = typeof ms === "number" ? ms : parseTime(ms); + var tickFrom = clock.now, tickTo = clock.now + ms, previous = clock.now; + var timer = firstTimerInRange(clock, tickFrom, tickTo); + var oldNow; + + clock.duringTick = true; + + var firstException; + while (timer && tickFrom <= tickTo) { + if (clock.timers[timer.id]) { + tickFrom = clock.now = timer.callAt; + try { + oldNow = clock.now; + callTimer(clock, timer); + // compensate for any setSystemTime() call during timer callback + if (oldNow !== clock.now) { + tickFrom += clock.now - oldNow; + tickTo += clock.now - oldNow; + previous += clock.now - oldNow; + } + } catch (e) { + firstException = firstException || e; + } + } + + timer = firstTimerInRange(clock, previous, tickTo); + previous = tickFrom; + } + + clock.duringTick = false; + clock.now = tickTo; + + if (firstException) { + throw firstException; + } + + return clock.now; + }; + + clock.next = function next() { + var timer = firstTimer(clock); + if (!timer) { + return clock.now; + } + + clock.duringTick = true; + try { + clock.now = timer.callAt; + callTimer(clock, timer); + return clock.now; + } finally { + clock.duringTick = false; + } + }; + + clock.reset = function reset() { + clock.timers = {}; + }; + + clock.setSystemTime = function setSystemTime(now) { + // determine time difference + var newNow = getEpoch(now); + var difference = newNow - clock.now; + + // update 'system clock' + clock.now = newNow; + + // update timers and intervals to keep them stable + for (var id in clock.timers) { + if (clock.timers.hasOwnProperty(id)) { + var timer = clock.timers[id]; + timer.createdAt += difference; + timer.callAt += difference; + } + } + }; + + return clock; + } + exports.createClock = createClock; + + exports.install = function install(target, now, toFake) { + var i, + l; + + if (typeof target === "number") { + toFake = now; + now = target; + target = null; + } + + if (!target) { + target = global; + } + + var clock = createClock(now); + + clock.uninstall = function () { + uninstall(clock, target); + }; + + clock.methods = toFake || []; + + if (clock.methods.length === 0) { + clock.methods = keys(timers); + } + + for (i = 0, l = clock.methods.length; i < l; i++) { + hijackMethod(target, clock.methods[i], clock); + } + + return clock; + }; + +}(global || this)); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}]},{},[1])(1) +}); + })(); + var define; +/** + * Sinon core utilities. For internal use only. + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +var sinon = (function () { +"use strict"; + // eslint-disable-line no-unused-vars + + var sinonModule; + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + sinonModule = module.exports = require("./sinon/util/core"); + require("./sinon/extend"); + require("./sinon/walk"); + require("./sinon/typeOf"); + require("./sinon/times_in_words"); + require("./sinon/spy"); + require("./sinon/call"); + require("./sinon/behavior"); + require("./sinon/stub"); + require("./sinon/mock"); + require("./sinon/collection"); + require("./sinon/assert"); + require("./sinon/sandbox"); + require("./sinon/test"); + require("./sinon/test_case"); + require("./sinon/match"); + require("./sinon/format"); + require("./sinon/log_error"); + } + + if (isAMD) { + define(loadDependencies); + } else if (isNode) { + loadDependencies(require, module.exports, module); + sinonModule = module.exports; + } else { + sinonModule = {}; + } + + return sinonModule; +}()); + +/** + * @depend ../../sinon.js + */ +/** + * Sinon core utilities. For internal use only. + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +(function (sinonGlobal) { + + var div = typeof document !== "undefined" && document.createElement("div"); + var hasOwn = Object.prototype.hasOwnProperty; + + function isDOMNode(obj) { + var success = false; + + try { + obj.appendChild(div); + success = div.parentNode === obj; + } catch (e) { + return false; + } finally { + try { + obj.removeChild(div); + } catch (e) { + // Remove failed, not much we can do about that + } + } + + return success; + } + + function isElement(obj) { + return div && obj && obj.nodeType === 1 && isDOMNode(obj); + } + + function isFunction(obj) { + return typeof obj === "function" || !!(obj && obj.constructor && obj.call && obj.apply); + } + + function isReallyNaN(val) { + return typeof val === "number" && isNaN(val); + } + + function mirrorProperties(target, source) { + for (var prop in source) { + if (!hasOwn.call(target, prop)) { + target[prop] = source[prop]; + } + } + } + + function isRestorable(obj) { + return typeof obj === "function" && typeof obj.restore === "function" && obj.restore.sinon; + } + + // Cheap way to detect if we have ES5 support. + var hasES5Support = "keys" in Object; + + function makeApi(sinon) { + sinon.wrapMethod = function wrapMethod(object, property, method) { + if (!object) { + throw new TypeError("Should wrap property of object"); + } + + if (typeof method !== "function" && typeof method !== "object") { + throw new TypeError("Method wrapper should be a function or a property descriptor"); + } + + function checkWrappedMethod(wrappedMethod) { + var error; + + if (!isFunction(wrappedMethod)) { + error = new TypeError("Attempted to wrap " + (typeof wrappedMethod) + " property " + + property + " as function"); + } else if (wrappedMethod.restore && wrappedMethod.restore.sinon) { + error = new TypeError("Attempted to wrap " + property + " which is already wrapped"); + } else if (wrappedMethod.calledBefore) { + var verb = wrappedMethod.returns ? "stubbed" : "spied on"; + error = new TypeError("Attempted to wrap " + property + " which is already " + verb); + } + + if (error) { + if (wrappedMethod && wrappedMethod.stackTrace) { + error.stack += "\n--------------\n" + wrappedMethod.stackTrace; + } + throw error; + } + } + + var error, wrappedMethod, i; + + // IE 8 does not support hasOwnProperty on the window object and Firefox has a problem + // when using hasOwn.call on objects from other frames. + var owned = object.hasOwnProperty ? object.hasOwnProperty(property) : hasOwn.call(object, property); + + if (hasES5Support) { + var methodDesc = (typeof method === "function") ? {value: method} : method; + var wrappedMethodDesc = sinon.getPropertyDescriptor(object, property); + + if (!wrappedMethodDesc) { + error = new TypeError("Attempted to wrap " + (typeof wrappedMethod) + " property " + + property + " as function"); + } else if (wrappedMethodDesc.restore && wrappedMethodDesc.restore.sinon) { + error = new TypeError("Attempted to wrap " + property + " which is already wrapped"); + } + if (error) { + if (wrappedMethodDesc && wrappedMethodDesc.stackTrace) { + error.stack += "\n--------------\n" + wrappedMethodDesc.stackTrace; + } + throw error; + } + + var types = sinon.objectKeys(methodDesc); + for (i = 0; i < types.length; i++) { + wrappedMethod = wrappedMethodDesc[types[i]]; + checkWrappedMethod(wrappedMethod); + } + + mirrorProperties(methodDesc, wrappedMethodDesc); + for (i = 0; i < types.length; i++) { + mirrorProperties(methodDesc[types[i]], wrappedMethodDesc[types[i]]); + } + Object.defineProperty(object, property, methodDesc); + } else { + wrappedMethod = object[property]; + checkWrappedMethod(wrappedMethod); + object[property] = method; + method.displayName = property; + } + + method.displayName = property; + + // Set up a stack trace which can be used later to find what line of + // code the original method was created on. + method.stackTrace = (new Error("Stack Trace for original")).stack; + + method.restore = function () { + // For prototype properties try to reset by delete first. + // If this fails (ex: localStorage on mobile safari) then force a reset + // via direct assignment. + if (!owned) { + // In some cases `delete` may throw an error + try { + delete object[property]; + } catch (e) {} // eslint-disable-line no-empty + // For native code functions `delete` fails without throwing an error + // on Chrome < 43, PhantomJS, etc. + } else if (hasES5Support) { + Object.defineProperty(object, property, wrappedMethodDesc); + } + + // Use strict equality comparison to check failures then force a reset + // via direct assignment. + if (object[property] === method) { + object[property] = wrappedMethod; + } + }; + + method.restore.sinon = true; + + if (!hasES5Support) { + mirrorProperties(method, wrappedMethod); + } + + return method; + }; + + sinon.create = function create(proto) { + var F = function () {}; + F.prototype = proto; + return new F(); + }; + + sinon.deepEqual = function deepEqual(a, b) { + if (sinon.match && sinon.match.isMatcher(a)) { + return a.test(b); + } + + if (typeof a !== "object" || typeof b !== "object") { + return isReallyNaN(a) && isReallyNaN(b) || a === b; + } + + if (isElement(a) || isElement(b)) { + return a === b; + } + + if (a === b) { + return true; + } + + if ((a === null && b !== null) || (a !== null && b === null)) { + return false; + } + + if (a instanceof RegExp && b instanceof RegExp) { + return (a.source === b.source) && (a.global === b.global) && + (a.ignoreCase === b.ignoreCase) && (a.multiline === b.multiline); + } + + var aString = Object.prototype.toString.call(a); + if (aString !== Object.prototype.toString.call(b)) { + return false; + } + + if (aString === "[object Date]") { + return a.valueOf() === b.valueOf(); + } + + var prop; + var aLength = 0; + var bLength = 0; + + if (aString === "[object Array]" && a.length !== b.length) { + return false; + } + + for (prop in a) { + if (a.hasOwnProperty(prop)) { + aLength += 1; + + if (!(prop in b)) { + return false; + } + + if (!deepEqual(a[prop], b[prop])) { + return false; + } + } + } + + for (prop in b) { + if (b.hasOwnProperty(prop)) { + bLength += 1; + } + } + + return aLength === bLength; + }; + + sinon.functionName = function functionName(func) { + var name = func.displayName || func.name; + + // Use function decomposition as a last resort to get function + // name. Does not rely on function decomposition to work - if it + // doesn't debugging will be slightly less informative + // (i.e. toString will say 'spy' rather than 'myFunc'). + if (!name) { + var matches = func.toString().match(/function ([^\s\(]+)/); + name = matches && matches[1]; + } + + return name; + }; + + sinon.functionToString = function toString() { + if (this.getCall && this.callCount) { + var thisValue, + prop; + var i = this.callCount; + + while (i--) { + thisValue = this.getCall(i).thisValue; + + for (prop in thisValue) { + if (thisValue[prop] === this) { + return prop; + } + } + } + } + + return this.displayName || "sinon fake"; + }; + + sinon.objectKeys = function objectKeys(obj) { + if (obj !== Object(obj)) { + throw new TypeError("sinon.objectKeys called on a non-object"); + } + + var keys = []; + var key; + for (key in obj) { + if (hasOwn.call(obj, key)) { + keys.push(key); + } + } + + return keys; + }; + + sinon.getPropertyDescriptor = function getPropertyDescriptor(object, property) { + var proto = object; + var descriptor; + + while (proto && !(descriptor = Object.getOwnPropertyDescriptor(proto, property))) { + proto = Object.getPrototypeOf(proto); + } + return descriptor; + }; + + sinon.getConfig = function (custom) { + var config = {}; + custom = custom || {}; + var defaults = sinon.defaultConfig; + + for (var prop in defaults) { + if (defaults.hasOwnProperty(prop)) { + config[prop] = custom.hasOwnProperty(prop) ? custom[prop] : defaults[prop]; + } + } + + return config; + }; + + sinon.defaultConfig = { + injectIntoThis: true, + injectInto: null, + properties: ["spy", "stub", "mock", "clock", "server", "requests"], + useFakeTimers: true, + useFakeServer: true + }; + + sinon.timesInWords = function timesInWords(count) { + return count === 1 && "once" || + count === 2 && "twice" || + count === 3 && "thrice" || + (count || 0) + " times"; + }; + + sinon.calledInOrder = function (spies) { + for (var i = 1, l = spies.length; i < l; i++) { + if (!spies[i - 1].calledBefore(spies[i]) || !spies[i].called) { + return false; + } + } + + return true; + }; + + sinon.orderByFirstCall = function (spies) { + return spies.sort(function (a, b) { + // uuid, won't ever be equal + var aCall = a.getCall(0); + var bCall = b.getCall(0); + var aId = aCall && aCall.callId || -1; + var bId = bCall && bCall.callId || -1; + + return aId < bId ? -1 : 1; + }); + }; + + sinon.createStubInstance = function (constructor) { + if (typeof constructor !== "function") { + throw new TypeError("The constructor should be a function."); + } + return sinon.stub(sinon.create(constructor.prototype)); + }; + + sinon.restore = function (object) { + if (object !== null && typeof object === "object") { + for (var prop in object) { + if (isRestorable(object[prop])) { + object[prop].restore(); + } + } + } else if (isRestorable(object)) { + object.restore(); + } + }; + + return sinon; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports) { + makeApi(exports); + } + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * @depend util/core.js + */ +(function (sinonGlobal) { + + function makeApi(sinon) { + + // Adapted from https://developer.mozilla.org/en/docs/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug + var hasDontEnumBug = (function () { + var obj = { + constructor: function () { + return "0"; + }, + toString: function () { + return "1"; + }, + valueOf: function () { + return "2"; + }, + toLocaleString: function () { + return "3"; + }, + prototype: function () { + return "4"; + }, + isPrototypeOf: function () { + return "5"; + }, + propertyIsEnumerable: function () { + return "6"; + }, + hasOwnProperty: function () { + return "7"; + }, + length: function () { + return "8"; + }, + unique: function () { + return "9"; + } + }; + + var result = []; + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + result.push(obj[prop]()); + } + } + return result.join("") !== "0123456789"; + })(); + + /* Public: Extend target in place with all (own) properties from sources in-order. Thus, last source will + * override properties in previous sources. + * + * target - The Object to extend + * sources - Objects to copy properties from. + * + * Returns the extended target + */ + function extend(target /*, sources */) { + var sources = Array.prototype.slice.call(arguments, 1); + var source, i, prop; + + for (i = 0; i < sources.length; i++) { + source = sources[i]; + + for (prop in source) { + if (source.hasOwnProperty(prop)) { + target[prop] = source[prop]; + } + } + + // Make sure we copy (own) toString method even when in JScript with DontEnum bug + // See https://developer.mozilla.org/en/docs/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug + if (hasDontEnumBug && source.hasOwnProperty("toString") && source.toString !== target.toString) { + target.toString = source.toString; + } + } + + return target; + } + + sinon.extend = extend; + return sinon.extend; + } + + function loadDependencies(require, exports, module) { + var sinon = require("./util/core"); + module.exports = makeApi(sinon); + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * @depend util/core.js + */ +(function (sinonGlobal) { + + function makeApi(sinon) { + + function timesInWords(count) { + switch (count) { + case 1: + return "once"; + case 2: + return "twice"; + case 3: + return "thrice"; + default: + return (count || 0) + " times"; + } + } + + sinon.timesInWords = timesInWords; + return sinon.timesInWords; + } + + function loadDependencies(require, exports, module) { + var core = require("./util/core"); + module.exports = makeApi(core); + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * @depend util/core.js + */ +/** + * Format functions + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2014 Christian Johansen + */ +(function (sinonGlobal) { + + function makeApi(sinon) { + function typeOf(value) { + if (value === null) { + return "null"; + } else if (value === undefined) { + return "undefined"; + } + var string = Object.prototype.toString.call(value); + return string.substring(8, string.length - 1).toLowerCase(); + } + + sinon.typeOf = typeOf; + return sinon.typeOf; + } + + function loadDependencies(require, exports, module) { + var core = require("./util/core"); + module.exports = makeApi(core); + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * @depend util/core.js + * @depend typeOf.js + */ +/*jslint eqeqeq: false, onevar: false, plusplus: false*/ +/*global module, require, sinon*/ +/** + * Match functions + * + * @author Maximilian Antoni (mail@maxantoni.de) + * @license BSD + * + * Copyright (c) 2012 Maximilian Antoni + */ +(function (sinonGlobal) { + + function makeApi(sinon) { + function assertType(value, type, name) { + var actual = sinon.typeOf(value); + if (actual !== type) { + throw new TypeError("Expected type of " + name + " to be " + + type + ", but was " + actual); + } + } + + var matcher = { + toString: function () { + return this.message; + } + }; + + function isMatcher(object) { + return matcher.isPrototypeOf(object); + } + + function matchObject(expectation, actual) { + if (actual === null || actual === undefined) { + return false; + } + for (var key in expectation) { + if (expectation.hasOwnProperty(key)) { + var exp = expectation[key]; + var act = actual[key]; + if (isMatcher(exp)) { + if (!exp.test(act)) { + return false; + } + } else if (sinon.typeOf(exp) === "object") { + if (!matchObject(exp, act)) { + return false; + } + } else if (!sinon.deepEqual(exp, act)) { + return false; + } + } + } + return true; + } + + function match(expectation, message) { + var m = sinon.create(matcher); + var type = sinon.typeOf(expectation); + switch (type) { + case "object": + if (typeof expectation.test === "function") { + m.test = function (actual) { + return expectation.test(actual) === true; + }; + m.message = "match(" + sinon.functionName(expectation.test) + ")"; + return m; + } + var str = []; + for (var key in expectation) { + if (expectation.hasOwnProperty(key)) { + str.push(key + ": " + expectation[key]); + } + } + m.test = function (actual) { + return matchObject(expectation, actual); + }; + m.message = "match(" + str.join(", ") + ")"; + break; + case "number": + m.test = function (actual) { + // we need type coercion here + return expectation == actual; // eslint-disable-line eqeqeq + }; + break; + case "string": + m.test = function (actual) { + if (typeof actual !== "string") { + return false; + } + return actual.indexOf(expectation) !== -1; + }; + m.message = "match(\"" + expectation + "\")"; + break; + case "regexp": + m.test = function (actual) { + if (typeof actual !== "string") { + return false; + } + return expectation.test(actual); + }; + break; + case "function": + m.test = expectation; + if (message) { + m.message = message; + } else { + m.message = "match(" + sinon.functionName(expectation) + ")"; + } + break; + default: + m.test = function (actual) { + return sinon.deepEqual(expectation, actual); + }; + } + if (!m.message) { + m.message = "match(" + expectation + ")"; + } + return m; + } + + matcher.or = function (m2) { + if (!arguments.length) { + throw new TypeError("Matcher expected"); + } else if (!isMatcher(m2)) { + m2 = match(m2); + } + var m1 = this; + var or = sinon.create(matcher); + or.test = function (actual) { + return m1.test(actual) || m2.test(actual); + }; + or.message = m1.message + ".or(" + m2.message + ")"; + return or; + }; + + matcher.and = function (m2) { + if (!arguments.length) { + throw new TypeError("Matcher expected"); + } else if (!isMatcher(m2)) { + m2 = match(m2); + } + var m1 = this; + var and = sinon.create(matcher); + and.test = function (actual) { + return m1.test(actual) && m2.test(actual); + }; + and.message = m1.message + ".and(" + m2.message + ")"; + return and; + }; + + match.isMatcher = isMatcher; + + match.any = match(function () { + return true; + }, "any"); + + match.defined = match(function (actual) { + return actual !== null && actual !== undefined; + }, "defined"); + + match.truthy = match(function (actual) { + return !!actual; + }, "truthy"); + + match.falsy = match(function (actual) { + return !actual; + }, "falsy"); + + match.same = function (expectation) { + return match(function (actual) { + return expectation === actual; + }, "same(" + expectation + ")"); + }; + + match.typeOf = function (type) { + assertType(type, "string", "type"); + return match(function (actual) { + return sinon.typeOf(actual) === type; + }, "typeOf(\"" + type + "\")"); + }; + + match.instanceOf = function (type) { + assertType(type, "function", "type"); + return match(function (actual) { + return actual instanceof type; + }, "instanceOf(" + sinon.functionName(type) + ")"); + }; + + function createPropertyMatcher(propertyTest, messagePrefix) { + return function (property, value) { + assertType(property, "string", "property"); + var onlyProperty = arguments.length === 1; + var message = messagePrefix + "(\"" + property + "\""; + if (!onlyProperty) { + message += ", " + value; + } + message += ")"; + return match(function (actual) { + if (actual === undefined || actual === null || + !propertyTest(actual, property)) { + return false; + } + return onlyProperty || sinon.deepEqual(value, actual[property]); + }, message); + }; + } + + match.has = createPropertyMatcher(function (actual, property) { + if (typeof actual === "object") { + return property in actual; + } + return actual[property] !== undefined; + }, "has"); + + match.hasOwn = createPropertyMatcher(function (actual, property) { + return actual.hasOwnProperty(property); + }, "hasOwn"); + + match.bool = match.typeOf("boolean"); + match.number = match.typeOf("number"); + match.string = match.typeOf("string"); + match.object = match.typeOf("object"); + match.func = match.typeOf("function"); + match.array = match.typeOf("array"); + match.regexp = match.typeOf("regexp"); + match.date = match.typeOf("date"); + + sinon.match = match; + return match; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + var sinon = require("./util/core"); + require("./typeOf"); + module.exports = makeApi(sinon); + } + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * @depend util/core.js + */ +/** + * Format functions + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2014 Christian Johansen + */ +(function (sinonGlobal, formatio) { + + function makeApi(sinon) { + function valueFormatter(value) { + return "" + value; + } + + function getFormatioFormatter() { + var formatter = formatio.configure({ + quoteStrings: false, + limitChildrenCount: 250 + }); + + function format() { + return formatter.ascii.apply(formatter, arguments); + } + + return format; + } + + function getNodeFormatter() { + try { + var util = require("util"); + } catch (e) { + /* Node, but no util module - would be very old, but better safe than sorry */ + } + + function format(v) { + var isObjectWithNativeToString = typeof v === "object" && v.toString === Object.prototype.toString; + return isObjectWithNativeToString ? util.inspect(v) : v; + } + + return util ? format : valueFormatter; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var formatter; + + if (isNode) { + try { + formatio = require("formatio"); + } + catch (e) {} // eslint-disable-line no-empty + } + + if (formatio) { + formatter = getFormatioFormatter(); + } else if (isNode) { + formatter = getNodeFormatter(); + } else { + formatter = valueFormatter; + } + + sinon.format = formatter; + return sinon.format; + } + + function loadDependencies(require, exports, module) { + var sinon = require("./util/core"); + module.exports = makeApi(sinon); + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon, // eslint-disable-line no-undef + typeof formatio === "object" && formatio // eslint-disable-line no-undef +)); + +/** + * @depend util/core.js + * @depend match.js + * @depend format.js + */ +/** + * Spy calls + * + * @author Christian Johansen (christian@cjohansen.no) + * @author Maximilian Antoni (mail@maxantoni.de) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + * Copyright (c) 2013 Maximilian Antoni + */ +(function (sinonGlobal) { + + var slice = Array.prototype.slice; + + function makeApi(sinon) { + function throwYieldError(proxy, text, args) { + var msg = sinon.functionName(proxy) + text; + if (args.length) { + msg += " Received [" + slice.call(args).join(", ") + "]"; + } + throw new Error(msg); + } + + var callProto = { + calledOn: function calledOn(thisValue) { + if (sinon.match && sinon.match.isMatcher(thisValue)) { + return thisValue.test(this.thisValue); + } + return this.thisValue === thisValue; + }, + + calledWith: function calledWith() { + var l = arguments.length; + if (l > this.args.length) { + return false; + } + for (var i = 0; i < l; i += 1) { + if (!sinon.deepEqual(arguments[i], this.args[i])) { + return false; + } + } + + return true; + }, + + calledWithMatch: function calledWithMatch() { + var l = arguments.length; + if (l > this.args.length) { + return false; + } + for (var i = 0; i < l; i += 1) { + var actual = this.args[i]; + var expectation = arguments[i]; + if (!sinon.match || !sinon.match(expectation).test(actual)) { + return false; + } + } + return true; + }, + + calledWithExactly: function calledWithExactly() { + return arguments.length === this.args.length && + this.calledWith.apply(this, arguments); + }, + + notCalledWith: function notCalledWith() { + return !this.calledWith.apply(this, arguments); + }, + + notCalledWithMatch: function notCalledWithMatch() { + return !this.calledWithMatch.apply(this, arguments); + }, + + returned: function returned(value) { + return sinon.deepEqual(value, this.returnValue); + }, + + threw: function threw(error) { + if (typeof error === "undefined" || !this.exception) { + return !!this.exception; + } + + return this.exception === error || this.exception.name === error; + }, + + calledWithNew: function calledWithNew() { + return this.proxy.prototype && this.thisValue instanceof this.proxy; + }, + + calledBefore: function (other) { + return this.callId < other.callId; + }, + + calledAfter: function (other) { + return this.callId > other.callId; + }, + + callArg: function (pos) { + this.args[pos](); + }, + + callArgOn: function (pos, thisValue) { + this.args[pos].apply(thisValue); + }, + + callArgWith: function (pos) { + this.callArgOnWith.apply(this, [pos, null].concat(slice.call(arguments, 1))); + }, + + callArgOnWith: function (pos, thisValue) { + var args = slice.call(arguments, 2); + this.args[pos].apply(thisValue, args); + }, + + "yield": function () { + this.yieldOn.apply(this, [null].concat(slice.call(arguments, 0))); + }, + + yieldOn: function (thisValue) { + var args = this.args; + for (var i = 0, l = args.length; i < l; ++i) { + if (typeof args[i] === "function") { + args[i].apply(thisValue, slice.call(arguments, 1)); + return; + } + } + throwYieldError(this.proxy, " cannot yield since no callback was passed.", args); + }, + + yieldTo: function (prop) { + this.yieldToOn.apply(this, [prop, null].concat(slice.call(arguments, 1))); + }, + + yieldToOn: function (prop, thisValue) { + var args = this.args; + for (var i = 0, l = args.length; i < l; ++i) { + if (args[i] && typeof args[i][prop] === "function") { + args[i][prop].apply(thisValue, slice.call(arguments, 2)); + return; + } + } + throwYieldError(this.proxy, " cannot yield to '" + prop + + "' since no callback was passed.", args); + }, + + getStackFrames: function () { + // Omit the error message and the two top stack frames in sinon itself: + return this.stack && this.stack.split("\n").slice(3); + }, + + toString: function () { + var callStr = this.proxy ? this.proxy.toString() + "(" : ""; + var args = []; + + if (!this.args) { + return ":("; + } + + for (var i = 0, l = this.args.length; i < l; ++i) { + args.push(sinon.format(this.args[i])); + } + + callStr = callStr + args.join(", ") + ")"; + + if (typeof this.returnValue !== "undefined") { + callStr += " => " + sinon.format(this.returnValue); + } + + if (this.exception) { + callStr += " !" + this.exception.name; + + if (this.exception.message) { + callStr += "(" + this.exception.message + ")"; + } + } + if (this.stack) { + callStr += this.getStackFrames()[0].replace(/^\s*(?:at\s+|@)?/, " at "); + + } + + return callStr; + } + }; + + callProto.invokeCallback = callProto.yield; + + function createSpyCall(spy, thisValue, args, returnValue, exception, id, stack) { + if (typeof id !== "number") { + throw new TypeError("Call id is not a number"); + } + var proxyCall = sinon.create(callProto); + proxyCall.proxy = spy; + proxyCall.thisValue = thisValue; + proxyCall.args = args; + proxyCall.returnValue = returnValue; + proxyCall.exception = exception; + proxyCall.callId = id; + proxyCall.stack = stack; + + return proxyCall; + } + createSpyCall.toString = callProto.toString; // used by mocks + + sinon.spyCall = createSpyCall; + return createSpyCall; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + var sinon = require("./util/core"); + require("./match"); + require("./format"); + module.exports = makeApi(sinon); + } + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * @depend times_in_words.js + * @depend util/core.js + * @depend extend.js + * @depend call.js + * @depend format.js + */ +/** + * Spy functions + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +(function (sinonGlobal) { + + function makeApi(sinon) { + var push = Array.prototype.push; + var slice = Array.prototype.slice; + var callId = 0; + + function spy(object, property, types) { + if (!property && typeof object === "function") { + return spy.create(object); + } + + if (!object && !property) { + return spy.create(function () { }); + } + + if (types) { + var methodDesc = sinon.getPropertyDescriptor(object, property); + for (var i = 0; i < types.length; i++) { + methodDesc[types[i]] = spy.create(methodDesc[types[i]]); + } + return sinon.wrapMethod(object, property, methodDesc); + } + + return sinon.wrapMethod(object, property, spy.create(object[property])); + } + + function matchingFake(fakes, args, strict) { + if (!fakes) { + return undefined; + } + + for (var i = 0, l = fakes.length; i < l; i++) { + if (fakes[i].matches(args, strict)) { + return fakes[i]; + } + } + } + + function incrementCallCount() { + this.called = true; + this.callCount += 1; + this.notCalled = false; + this.calledOnce = this.callCount === 1; + this.calledTwice = this.callCount === 2; + this.calledThrice = this.callCount === 3; + } + + function createCallProperties() { + this.firstCall = this.getCall(0); + this.secondCall = this.getCall(1); + this.thirdCall = this.getCall(2); + this.lastCall = this.getCall(this.callCount - 1); + } + + var vars = "a,b,c,d,e,f,g,h,i,j,k,l"; + function createProxy(func, proxyLength) { + // Retain the function length: + var p; + if (proxyLength) { + eval("p = (function proxy(" + vars.substring(0, proxyLength * 2 - 1) + // eslint-disable-line no-eval + ") { return p.invoke(func, this, slice.call(arguments)); });"); + } else { + p = function proxy() { + return p.invoke(func, this, slice.call(arguments)); + }; + } + p.isSinonProxy = true; + return p; + } + + var uuid = 0; + + // Public API + var spyApi = { + reset: function () { + if (this.invoking) { + var err = new Error("Cannot reset Sinon function while invoking it. " + + "Move the call to .reset outside of the callback."); + err.name = "InvalidResetException"; + throw err; + } + + this.called = false; + this.notCalled = true; + this.calledOnce = false; + this.calledTwice = false; + this.calledThrice = false; + this.callCount = 0; + this.firstCall = null; + this.secondCall = null; + this.thirdCall = null; + this.lastCall = null; + this.args = []; + this.returnValues = []; + this.thisValues = []; + this.exceptions = []; + this.callIds = []; + this.stacks = []; + if (this.fakes) { + for (var i = 0; i < this.fakes.length; i++) { + this.fakes[i].reset(); + } + } + + return this; + }, + + create: function create(func, spyLength) { + var name; + + if (typeof func !== "function") { + func = function () { }; + } else { + name = sinon.functionName(func); + } + + if (!spyLength) { + spyLength = func.length; + } + + var proxy = createProxy(func, spyLength); + + sinon.extend(proxy, spy); + delete proxy.create; + sinon.extend(proxy, func); + + proxy.reset(); + proxy.prototype = func.prototype; + proxy.displayName = name || "spy"; + proxy.toString = sinon.functionToString; + proxy.instantiateFake = sinon.spy.create; + proxy.id = "spy#" + uuid++; + + return proxy; + }, + + invoke: function invoke(func, thisValue, args) { + var matching = matchingFake(this.fakes, args); + var exception, returnValue; + + incrementCallCount.call(this); + push.call(this.thisValues, thisValue); + push.call(this.args, args); + push.call(this.callIds, callId++); + + // Make call properties available from within the spied function: + createCallProperties.call(this); + + try { + this.invoking = true; + + if (matching) { + returnValue = matching.invoke(func, thisValue, args); + } else { + returnValue = (this.func || func).apply(thisValue, args); + } + + var thisCall = this.getCall(this.callCount - 1); + if (thisCall.calledWithNew() && typeof returnValue !== "object") { + returnValue = thisValue; + } + } catch (e) { + exception = e; + } finally { + delete this.invoking; + } + + push.call(this.exceptions, exception); + push.call(this.returnValues, returnValue); + push.call(this.stacks, new Error().stack); + + // Make return value and exception available in the calls: + createCallProperties.call(this); + + if (exception !== undefined) { + throw exception; + } + + return returnValue; + }, + + named: function named(name) { + this.displayName = name; + return this; + }, + + getCall: function getCall(i) { + if (i < 0 || i >= this.callCount) { + return null; + } + + return sinon.spyCall(this, this.thisValues[i], this.args[i], + this.returnValues[i], this.exceptions[i], + this.callIds[i], this.stacks[i]); + }, + + getCalls: function () { + var calls = []; + var i; + + for (i = 0; i < this.callCount; i++) { + calls.push(this.getCall(i)); + } + + return calls; + }, + + calledBefore: function calledBefore(spyFn) { + if (!this.called) { + return false; + } + + if (!spyFn.called) { + return true; + } + + return this.callIds[0] < spyFn.callIds[spyFn.callIds.length - 1]; + }, + + calledAfter: function calledAfter(spyFn) { + if (!this.called || !spyFn.called) { + return false; + } + + return this.callIds[this.callCount - 1] > spyFn.callIds[spyFn.callCount - 1]; + }, + + withArgs: function () { + var args = slice.call(arguments); + + if (this.fakes) { + var match = matchingFake(this.fakes, args, true); + + if (match) { + return match; + } + } else { + this.fakes = []; + } + + var original = this; + var fake = this.instantiateFake(); + fake.matchingAguments = args; + fake.parent = this; + push.call(this.fakes, fake); + + fake.withArgs = function () { + return original.withArgs.apply(original, arguments); + }; + + for (var i = 0; i < this.args.length; i++) { + if (fake.matches(this.args[i])) { + incrementCallCount.call(fake); + push.call(fake.thisValues, this.thisValues[i]); + push.call(fake.args, this.args[i]); + push.call(fake.returnValues, this.returnValues[i]); + push.call(fake.exceptions, this.exceptions[i]); + push.call(fake.callIds, this.callIds[i]); + } + } + createCallProperties.call(fake); + + return fake; + }, + + matches: function (args, strict) { + var margs = this.matchingAguments; + + if (margs.length <= args.length && + sinon.deepEqual(margs, args.slice(0, margs.length))) { + return !strict || margs.length === args.length; + } + }, + + printf: function (format) { + var spyInstance = this; + var args = slice.call(arguments, 1); + var formatter; + + return (format || "").replace(/%(.)/g, function (match, specifyer) { + formatter = spyApi.formatters[specifyer]; + + if (typeof formatter === "function") { + return formatter.call(null, spyInstance, args); + } else if (!isNaN(parseInt(specifyer, 10))) { + return sinon.format(args[specifyer - 1]); + } + + return "%" + specifyer; + }); + } + }; + + function delegateToCalls(method, matchAny, actual, notCalled) { + spyApi[method] = function () { + if (!this.called) { + if (notCalled) { + return notCalled.apply(this, arguments); + } + return false; + } + + var currentCall; + var matches = 0; + + for (var i = 0, l = this.callCount; i < l; i += 1) { + currentCall = this.getCall(i); + + if (currentCall[actual || method].apply(currentCall, arguments)) { + matches += 1; + + if (matchAny) { + return true; + } + } + } + + return matches === this.callCount; + }; + } + + delegateToCalls("calledOn", true); + delegateToCalls("alwaysCalledOn", false, "calledOn"); + delegateToCalls("calledWith", true); + delegateToCalls("calledWithMatch", true); + delegateToCalls("alwaysCalledWith", false, "calledWith"); + delegateToCalls("alwaysCalledWithMatch", false, "calledWithMatch"); + delegateToCalls("calledWithExactly", true); + delegateToCalls("alwaysCalledWithExactly", false, "calledWithExactly"); + delegateToCalls("neverCalledWith", false, "notCalledWith", function () { + return true; + }); + delegateToCalls("neverCalledWithMatch", false, "notCalledWithMatch", function () { + return true; + }); + delegateToCalls("threw", true); + delegateToCalls("alwaysThrew", false, "threw"); + delegateToCalls("returned", true); + delegateToCalls("alwaysReturned", false, "returned"); + delegateToCalls("calledWithNew", true); + delegateToCalls("alwaysCalledWithNew", false, "calledWithNew"); + delegateToCalls("callArg", false, "callArgWith", function () { + throw new Error(this.toString() + " cannot call arg since it was not yet invoked."); + }); + spyApi.callArgWith = spyApi.callArg; + delegateToCalls("callArgOn", false, "callArgOnWith", function () { + throw new Error(this.toString() + " cannot call arg since it was not yet invoked."); + }); + spyApi.callArgOnWith = spyApi.callArgOn; + delegateToCalls("yield", false, "yield", function () { + throw new Error(this.toString() + " cannot yield since it was not yet invoked."); + }); + // "invokeCallback" is an alias for "yield" since "yield" is invalid in strict mode. + spyApi.invokeCallback = spyApi.yield; + delegateToCalls("yieldOn", false, "yieldOn", function () { + throw new Error(this.toString() + " cannot yield since it was not yet invoked."); + }); + delegateToCalls("yieldTo", false, "yieldTo", function (property) { + throw new Error(this.toString() + " cannot yield to '" + property + + "' since it was not yet invoked."); + }); + delegateToCalls("yieldToOn", false, "yieldToOn", function (property) { + throw new Error(this.toString() + " cannot yield to '" + property + + "' since it was not yet invoked."); + }); + + spyApi.formatters = { + c: function (spyInstance) { + return sinon.timesInWords(spyInstance.callCount); + }, + + n: function (spyInstance) { + return spyInstance.toString(); + }, + + C: function (spyInstance) { + var calls = []; + + for (var i = 0, l = spyInstance.callCount; i < l; ++i) { + var stringifiedCall = " " + spyInstance.getCall(i).toString(); + if (/\n/.test(calls[i - 1])) { + stringifiedCall = "\n" + stringifiedCall; + } + push.call(calls, stringifiedCall); + } + + return calls.length > 0 ? "\n" + calls.join("\n") : ""; + }, + + t: function (spyInstance) { + var objects = []; + + for (var i = 0, l = spyInstance.callCount; i < l; ++i) { + push.call(objects, sinon.format(spyInstance.thisValues[i])); + } + + return objects.join(", "); + }, + + "*": function (spyInstance, args) { + var formatted = []; + + for (var i = 0, l = args.length; i < l; ++i) { + push.call(formatted, sinon.format(args[i])); + } + + return formatted.join(", "); + } + }; + + sinon.extend(spy, spyApi); + + spy.spyCall = sinon.spyCall; + sinon.spy = spy; + + return spy; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + var core = require("./util/core"); + require("./call"); + require("./extend"); + require("./times_in_words"); + require("./format"); + module.exports = makeApi(core); + } + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * @depend util/core.js + * @depend extend.js + */ +/** + * Stub behavior + * + * @author Christian Johansen (christian@cjohansen.no) + * @author Tim Fischbach (mail@timfischbach.de) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +(function (sinonGlobal) { + + var slice = Array.prototype.slice; + var join = Array.prototype.join; + var useLeftMostCallback = -1; + var useRightMostCallback = -2; + + var nextTick = (function () { + if (typeof process === "object" && typeof process.nextTick === "function") { + return process.nextTick; + } + + if (typeof setImmediate === "function") { + return setImmediate; + } + + return function (callback) { + setTimeout(callback, 0); + }; + })(); + + function throwsException(error, message) { + if (typeof error === "string") { + this.exception = new Error(message || ""); + this.exception.name = error; + } else if (!error) { + this.exception = new Error("Error"); + } else { + this.exception = error; + } + + return this; + } + + function getCallback(behavior, args) { + var callArgAt = behavior.callArgAt; + + if (callArgAt >= 0) { + return args[callArgAt]; + } + + var argumentList; + + if (callArgAt === useLeftMostCallback) { + argumentList = args; + } + + if (callArgAt === useRightMostCallback) { + argumentList = slice.call(args).reverse(); + } + + var callArgProp = behavior.callArgProp; + + for (var i = 0, l = argumentList.length; i < l; ++i) { + if (!callArgProp && typeof argumentList[i] === "function") { + return argumentList[i]; + } + + if (callArgProp && argumentList[i] && + typeof argumentList[i][callArgProp] === "function") { + return argumentList[i][callArgProp]; + } + } + + return null; + } + + function makeApi(sinon) { + function getCallbackError(behavior, func, args) { + if (behavior.callArgAt < 0) { + var msg; + + if (behavior.callArgProp) { + msg = sinon.functionName(behavior.stub) + + " expected to yield to '" + behavior.callArgProp + + "', but no object with such a property was passed."; + } else { + msg = sinon.functionName(behavior.stub) + + " expected to yield, but no callback was passed."; + } + + if (args.length > 0) { + msg += " Received [" + join.call(args, ", ") + "]"; + } + + return msg; + } + + return "argument at index " + behavior.callArgAt + " is not a function: " + func; + } + + function callCallback(behavior, args) { + if (typeof behavior.callArgAt === "number") { + var func = getCallback(behavior, args); + + if (typeof func !== "function") { + throw new TypeError(getCallbackError(behavior, func, args)); + } + + if (behavior.callbackAsync) { + nextTick(function () { + func.apply(behavior.callbackContext, behavior.callbackArguments); + }); + } else { + func.apply(behavior.callbackContext, behavior.callbackArguments); + } + } + } + + var proto = { + create: function create(stub) { + var behavior = sinon.extend({}, sinon.behavior); + delete behavior.create; + behavior.stub = stub; + + return behavior; + }, + + isPresent: function isPresent() { + return (typeof this.callArgAt === "number" || + this.exception || + typeof this.returnArgAt === "number" || + this.returnThis || + this.returnValueDefined); + }, + + invoke: function invoke(context, args) { + callCallback(this, args); + + if (this.exception) { + throw this.exception; + } else if (typeof this.returnArgAt === "number") { + return args[this.returnArgAt]; + } else if (this.returnThis) { + return context; + } + + return this.returnValue; + }, + + onCall: function onCall(index) { + return this.stub.onCall(index); + }, + + onFirstCall: function onFirstCall() { + return this.stub.onFirstCall(); + }, + + onSecondCall: function onSecondCall() { + return this.stub.onSecondCall(); + }, + + onThirdCall: function onThirdCall() { + return this.stub.onThirdCall(); + }, + + withArgs: function withArgs(/* arguments */) { + throw new Error( + "Defining a stub by invoking \"stub.onCall(...).withArgs(...)\" " + + "is not supported. Use \"stub.withArgs(...).onCall(...)\" " + + "to define sequential behavior for calls with certain arguments." + ); + }, + + callsArg: function callsArg(pos) { + if (typeof pos !== "number") { + throw new TypeError("argument index is not number"); + } + + this.callArgAt = pos; + this.callbackArguments = []; + this.callbackContext = undefined; + this.callArgProp = undefined; + this.callbackAsync = false; + + return this; + }, + + callsArgOn: function callsArgOn(pos, context) { + if (typeof pos !== "number") { + throw new TypeError("argument index is not number"); + } + if (typeof context !== "object") { + throw new TypeError("argument context is not an object"); + } + + this.callArgAt = pos; + this.callbackArguments = []; + this.callbackContext = context; + this.callArgProp = undefined; + this.callbackAsync = false; + + return this; + }, + + callsArgWith: function callsArgWith(pos) { + if (typeof pos !== "number") { + throw new TypeError("argument index is not number"); + } + + this.callArgAt = pos; + this.callbackArguments = slice.call(arguments, 1); + this.callbackContext = undefined; + this.callArgProp = undefined; + this.callbackAsync = false; + + return this; + }, + + callsArgOnWith: function callsArgWith(pos, context) { + if (typeof pos !== "number") { + throw new TypeError("argument index is not number"); + } + if (typeof context !== "object") { + throw new TypeError("argument context is not an object"); + } + + this.callArgAt = pos; + this.callbackArguments = slice.call(arguments, 2); + this.callbackContext = context; + this.callArgProp = undefined; + this.callbackAsync = false; + + return this; + }, + + yields: function () { + this.callArgAt = useLeftMostCallback; + this.callbackArguments = slice.call(arguments, 0); + this.callbackContext = undefined; + this.callArgProp = undefined; + this.callbackAsync = false; + + return this; + }, + + yieldsRight: function () { + this.callArgAt = useRightMostCallback; + this.callbackArguments = slice.call(arguments, 0); + this.callbackContext = undefined; + this.callArgProp = undefined; + this.callbackAsync = false; + + return this; + }, + + yieldsOn: function (context) { + if (typeof context !== "object") { + throw new TypeError("argument context is not an object"); + } + + this.callArgAt = useLeftMostCallback; + this.callbackArguments = slice.call(arguments, 1); + this.callbackContext = context; + this.callArgProp = undefined; + this.callbackAsync = false; + + return this; + }, + + yieldsTo: function (prop) { + this.callArgAt = useLeftMostCallback; + this.callbackArguments = slice.call(arguments, 1); + this.callbackContext = undefined; + this.callArgProp = prop; + this.callbackAsync = false; + + return this; + }, + + yieldsToOn: function (prop, context) { + if (typeof context !== "object") { + throw new TypeError("argument context is not an object"); + } + + this.callArgAt = useLeftMostCallback; + this.callbackArguments = slice.call(arguments, 2); + this.callbackContext = context; + this.callArgProp = prop; + this.callbackAsync = false; + + return this; + }, + + throws: throwsException, + throwsException: throwsException, + + returns: function returns(value) { + this.returnValue = value; + this.returnValueDefined = true; + this.exception = undefined; + + return this; + }, + + returnsArg: function returnsArg(pos) { + if (typeof pos !== "number") { + throw new TypeError("argument index is not number"); + } + + this.returnArgAt = pos; + + return this; + }, + + returnsThis: function returnsThis() { + this.returnThis = true; + + return this; + } + }; + + function createAsyncVersion(syncFnName) { + return function () { + var result = this[syncFnName].apply(this, arguments); + this.callbackAsync = true; + return result; + }; + } + + // create asynchronous versions of callsArg* and yields* methods + for (var method in proto) { + // need to avoid creating anotherasync versions of the newly added async methods + if (proto.hasOwnProperty(method) && method.match(/^(callsArg|yields)/) && !method.match(/Async/)) { + proto[method + "Async"] = createAsyncVersion(method); + } + } + + sinon.behavior = proto; + return proto; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + var sinon = require("./util/core"); + require("./extend"); + module.exports = makeApi(sinon); + } + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * @depend util/core.js + */ +(function (sinonGlobal) { + + function makeApi(sinon) { + function walkInternal(obj, iterator, context, originalObj, seen) { + var proto, prop; + + if (typeof Object.getOwnPropertyNames !== "function") { + // We explicitly want to enumerate through all of the prototype's properties + // in this case, therefore we deliberately leave out an own property check. + /* eslint-disable guard-for-in */ + for (prop in obj) { + iterator.call(context, obj[prop], prop, obj); + } + /* eslint-enable guard-for-in */ + + return; + } + + Object.getOwnPropertyNames(obj).forEach(function (k) { + if (!seen[k]) { + seen[k] = true; + var target = typeof Object.getOwnPropertyDescriptor(obj, k).get === "function" ? + originalObj : obj; + iterator.call(context, target[k], k, target); + } + }); + + proto = Object.getPrototypeOf(obj); + if (proto) { + walkInternal(proto, iterator, context, originalObj, seen); + } + } + + /* Public: walks the prototype chain of an object and iterates over every own property + * name encountered. The iterator is called in the same fashion that Array.prototype.forEach + * works, where it is passed the value, key, and own object as the 1st, 2nd, and 3rd positional + * argument, respectively. In cases where Object.getOwnPropertyNames is not available, walk will + * default to using a simple for..in loop. + * + * obj - The object to walk the prototype chain for. + * iterator - The function to be called on each pass of the walk. + * context - (Optional) When given, the iterator will be called with this object as the receiver. + */ + function walk(obj, iterator, context) { + return walkInternal(obj, iterator, context, obj, {}); + } + + sinon.walk = walk; + return sinon.walk; + } + + function loadDependencies(require, exports, module) { + var sinon = require("./util/core"); + module.exports = makeApi(sinon); + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * @depend util/core.js + * @depend extend.js + * @depend spy.js + * @depend behavior.js + * @depend walk.js + */ +/** + * Stub functions + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +(function (sinonGlobal) { + + function makeApi(sinon) { + function stub(object, property, func) { + if (!!func && typeof func !== "function" && typeof func !== "object") { + throw new TypeError("Custom stub should be a function or a property descriptor"); + } + + var wrapper; + + if (func) { + if (typeof func === "function") { + wrapper = sinon.spy && sinon.spy.create ? sinon.spy.create(func) : func; + } else { + wrapper = func; + if (sinon.spy && sinon.spy.create) { + var types = sinon.objectKeys(wrapper); + for (var i = 0; i < types.length; i++) { + wrapper[types[i]] = sinon.spy.create(wrapper[types[i]]); + } + } + } + } else { + var stubLength = 0; + if (typeof object === "object" && typeof object[property] === "function") { + stubLength = object[property].length; + } + wrapper = stub.create(stubLength); + } + + if (!object && typeof property === "undefined") { + return sinon.stub.create(); + } + + if (typeof property === "undefined" && typeof object === "object") { + sinon.walk(object || {}, function (value, prop, propOwner) { + // we don't want to stub things like toString(), valueOf(), etc. so we only stub if the object + // is not Object.prototype + if ( + propOwner !== Object.prototype && + prop !== "constructor" && + typeof sinon.getPropertyDescriptor(propOwner, prop).value === "function" + ) { + stub(object, prop); + } + }); + + return object; + } + + return sinon.wrapMethod(object, property, wrapper); + } + + + /*eslint-disable no-use-before-define*/ + function getParentBehaviour(stubInstance) { + return (stubInstance.parent && getCurrentBehavior(stubInstance.parent)); + } + + function getDefaultBehavior(stubInstance) { + return stubInstance.defaultBehavior || + getParentBehaviour(stubInstance) || + sinon.behavior.create(stubInstance); + } + + function getCurrentBehavior(stubInstance) { + var behavior = stubInstance.behaviors[stubInstance.callCount - 1]; + return behavior && behavior.isPresent() ? behavior : getDefaultBehavior(stubInstance); + } + /*eslint-enable no-use-before-define*/ + + var uuid = 0; + + var proto = { + create: function create(stubLength) { + var functionStub = function () { + return getCurrentBehavior(functionStub).invoke(this, arguments); + }; + + functionStub.id = "stub#" + uuid++; + var orig = functionStub; + functionStub = sinon.spy.create(functionStub, stubLength); + functionStub.func = orig; + + sinon.extend(functionStub, stub); + functionStub.instantiateFake = sinon.stub.create; + functionStub.displayName = "stub"; + functionStub.toString = sinon.functionToString; + + functionStub.defaultBehavior = null; + functionStub.behaviors = []; + + return functionStub; + }, + + resetBehavior: function () { + var i; + + this.defaultBehavior = null; + this.behaviors = []; + + delete this.returnValue; + delete this.returnArgAt; + this.returnThis = false; + + if (this.fakes) { + for (i = 0; i < this.fakes.length; i++) { + this.fakes[i].resetBehavior(); + } + } + }, + + onCall: function onCall(index) { + if (!this.behaviors[index]) { + this.behaviors[index] = sinon.behavior.create(this); + } + + return this.behaviors[index]; + }, + + onFirstCall: function onFirstCall() { + return this.onCall(0); + }, + + onSecondCall: function onSecondCall() { + return this.onCall(1); + }, + + onThirdCall: function onThirdCall() { + return this.onCall(2); + } + }; + + function createBehavior(behaviorMethod) { + return function () { + this.defaultBehavior = this.defaultBehavior || sinon.behavior.create(this); + this.defaultBehavior[behaviorMethod].apply(this.defaultBehavior, arguments); + return this; + }; + } + + for (var method in sinon.behavior) { + if (sinon.behavior.hasOwnProperty(method) && + !proto.hasOwnProperty(method) && + method !== "create" && + method !== "withArgs" && + method !== "invoke") { + proto[method] = createBehavior(method); + } + } + + sinon.extend(stub, proto); + sinon.stub = stub; + + return stub; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + var core = require("./util/core"); + require("./behavior"); + require("./spy"); + require("./extend"); + module.exports = makeApi(core); + } + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * @depend times_in_words.js + * @depend util/core.js + * @depend call.js + * @depend extend.js + * @depend match.js + * @depend spy.js + * @depend stub.js + * @depend format.js + */ +/** + * Mock functions. + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +(function (sinonGlobal) { + + function makeApi(sinon) { + var push = [].push; + var match = sinon.match; + + function mock(object) { + // if (typeof console !== undefined && console.warn) { + // console.warn("mock will be removed from Sinon.JS v2.0"); + // } + + if (!object) { + return sinon.expectation.create("Anonymous mock"); + } + + return mock.create(object); + } + + function each(collection, callback) { + if (!collection) { + return; + } + + for (var i = 0, l = collection.length; i < l; i += 1) { + callback(collection[i]); + } + } + + function arrayEquals(arr1, arr2, compareLength) { + if (compareLength && (arr1.length !== arr2.length)) { + return false; + } + + for (var i = 0, l = arr1.length; i < l; i++) { + if (!sinon.deepEqual(arr1[i], arr2[i])) { + return false; + } + } + return true; + } + + sinon.extend(mock, { + create: function create(object) { + if (!object) { + throw new TypeError("object is null"); + } + + var mockObject = sinon.extend({}, mock); + mockObject.object = object; + delete mockObject.create; + + return mockObject; + }, + + expects: function expects(method) { + if (!method) { + throw new TypeError("method is falsy"); + } + + if (!this.expectations) { + this.expectations = {}; + this.proxies = []; + } + + if (!this.expectations[method]) { + this.expectations[method] = []; + var mockObject = this; + + sinon.wrapMethod(this.object, method, function () { + return mockObject.invokeMethod(method, this, arguments); + }); + + push.call(this.proxies, method); + } + + var expectation = sinon.expectation.create(method); + push.call(this.expectations[method], expectation); + + return expectation; + }, + + restore: function restore() { + var object = this.object; + + each(this.proxies, function (proxy) { + if (typeof object[proxy].restore === "function") { + object[proxy].restore(); + } + }); + }, + + verify: function verify() { + var expectations = this.expectations || {}; + var messages = []; + var met = []; + + each(this.proxies, function (proxy) { + each(expectations[proxy], function (expectation) { + if (!expectation.met()) { + push.call(messages, expectation.toString()); + } else { + push.call(met, expectation.toString()); + } + }); + }); + + this.restore(); + + if (messages.length > 0) { + sinon.expectation.fail(messages.concat(met).join("\n")); + } else if (met.length > 0) { + sinon.expectation.pass(messages.concat(met).join("\n")); + } + + return true; + }, + + invokeMethod: function invokeMethod(method, thisValue, args) { + var expectations = this.expectations && this.expectations[method] ? this.expectations[method] : []; + var expectationsWithMatchingArgs = []; + var currentArgs = args || []; + var i, available; + + for (i = 0; i < expectations.length; i += 1) { + var expectedArgs = expectations[i].expectedArguments || []; + if (arrayEquals(expectedArgs, currentArgs, expectations[i].expectsExactArgCount)) { + expectationsWithMatchingArgs.push(expectations[i]); + } + } + + for (i = 0; i < expectationsWithMatchingArgs.length; i += 1) { + if (!expectationsWithMatchingArgs[i].met() && + expectationsWithMatchingArgs[i].allowsCall(thisValue, args)) { + return expectationsWithMatchingArgs[i].apply(thisValue, args); + } + } + + var messages = []; + var exhausted = 0; + + for (i = 0; i < expectationsWithMatchingArgs.length; i += 1) { + if (expectationsWithMatchingArgs[i].allowsCall(thisValue, args)) { + available = available || expectationsWithMatchingArgs[i]; + } else { + exhausted += 1; + } + } + + if (available && exhausted === 0) { + return available.apply(thisValue, args); + } + + for (i = 0; i < expectations.length; i += 1) { + push.call(messages, " " + expectations[i].toString()); + } + + messages.unshift("Unexpected call: " + sinon.spyCall.toString.call({ + proxy: method, + args: args + })); + + sinon.expectation.fail(messages.join("\n")); + } + }); + + var times = sinon.timesInWords; + var slice = Array.prototype.slice; + + function callCountInWords(callCount) { + if (callCount === 0) { + return "never called"; + } + + return "called " + times(callCount); + } + + function expectedCallCountInWords(expectation) { + var min = expectation.minCalls; + var max = expectation.maxCalls; + + if (typeof min === "number" && typeof max === "number") { + var str = times(min); + + if (min !== max) { + str = "at least " + str + " and at most " + times(max); + } + + return str; + } + + if (typeof min === "number") { + return "at least " + times(min); + } + + return "at most " + times(max); + } + + function receivedMinCalls(expectation) { + var hasMinLimit = typeof expectation.minCalls === "number"; + return !hasMinLimit || expectation.callCount >= expectation.minCalls; + } + + function receivedMaxCalls(expectation) { + if (typeof expectation.maxCalls !== "number") { + return false; + } + + return expectation.callCount === expectation.maxCalls; + } + + function verifyMatcher(possibleMatcher, arg) { + var isMatcher = match && match.isMatcher(possibleMatcher); + + return isMatcher && possibleMatcher.test(arg) || true; + } + + sinon.expectation = { + minCalls: 1, + maxCalls: 1, + + create: function create(methodName) { + var expectation = sinon.extend(sinon.stub.create(), sinon.expectation); + delete expectation.create; + expectation.method = methodName; + + return expectation; + }, + + invoke: function invoke(func, thisValue, args) { + this.verifyCallAllowed(thisValue, args); + + return sinon.spy.invoke.apply(this, arguments); + }, + + atLeast: function atLeast(num) { + if (typeof num !== "number") { + throw new TypeError("'" + num + "' is not number"); + } + + if (!this.limitsSet) { + this.maxCalls = null; + this.limitsSet = true; + } + + this.minCalls = num; + + return this; + }, + + atMost: function atMost(num) { + if (typeof num !== "number") { + throw new TypeError("'" + num + "' is not number"); + } + + if (!this.limitsSet) { + this.minCalls = null; + this.limitsSet = true; + } + + this.maxCalls = num; + + return this; + }, + + never: function never() { + return this.exactly(0); + }, + + once: function once() { + return this.exactly(1); + }, + + twice: function twice() { + return this.exactly(2); + }, + + thrice: function thrice() { + return this.exactly(3); + }, + + exactly: function exactly(num) { + if (typeof num !== "number") { + throw new TypeError("'" + num + "' is not a number"); + } + + this.atLeast(num); + return this.atMost(num); + }, + + met: function met() { + return !this.failed && receivedMinCalls(this); + }, + + verifyCallAllowed: function verifyCallAllowed(thisValue, args) { + if (receivedMaxCalls(this)) { + this.failed = true; + sinon.expectation.fail(this.method + " already called " + times(this.maxCalls)); + } + + if ("expectedThis" in this && this.expectedThis !== thisValue) { + sinon.expectation.fail(this.method + " called with " + thisValue + " as thisValue, expected " + + this.expectedThis); + } + + if (!("expectedArguments" in this)) { + return; + } + + if (!args) { + sinon.expectation.fail(this.method + " received no arguments, expected " + + sinon.format(this.expectedArguments)); + } + + if (args.length < this.expectedArguments.length) { + sinon.expectation.fail(this.method + " received too few arguments (" + sinon.format(args) + + "), expected " + sinon.format(this.expectedArguments)); + } + + if (this.expectsExactArgCount && + args.length !== this.expectedArguments.length) { + sinon.expectation.fail(this.method + " received too many arguments (" + sinon.format(args) + + "), expected " + sinon.format(this.expectedArguments)); + } + + for (var i = 0, l = this.expectedArguments.length; i < l; i += 1) { + + if (!verifyMatcher(this.expectedArguments[i], args[i])) { + sinon.expectation.fail(this.method + " received wrong arguments " + sinon.format(args) + + ", didn't match " + this.expectedArguments.toString()); + } + + if (!sinon.deepEqual(this.expectedArguments[i], args[i])) { + sinon.expectation.fail(this.method + " received wrong arguments " + sinon.format(args) + + ", expected " + sinon.format(this.expectedArguments)); + } + } + }, + + allowsCall: function allowsCall(thisValue, args) { + if (this.met() && receivedMaxCalls(this)) { + return false; + } + + if ("expectedThis" in this && this.expectedThis !== thisValue) { + return false; + } + + if (!("expectedArguments" in this)) { + return true; + } + + args = args || []; + + if (args.length < this.expectedArguments.length) { + return false; + } + + if (this.expectsExactArgCount && + args.length !== this.expectedArguments.length) { + return false; + } + + for (var i = 0, l = this.expectedArguments.length; i < l; i += 1) { + if (!verifyMatcher(this.expectedArguments[i], args[i])) { + return false; + } + + if (!sinon.deepEqual(this.expectedArguments[i], args[i])) { + return false; + } + } + + return true; + }, + + withArgs: function withArgs() { + this.expectedArguments = slice.call(arguments); + return this; + }, + + withExactArgs: function withExactArgs() { + this.withArgs.apply(this, arguments); + this.expectsExactArgCount = true; + return this; + }, + + on: function on(thisValue) { + this.expectedThis = thisValue; + return this; + }, + + toString: function () { + var args = (this.expectedArguments || []).slice(); + + if (!this.expectsExactArgCount) { + push.call(args, "[...]"); + } + + var callStr = sinon.spyCall.toString.call({ + proxy: this.method || "anonymous mock expectation", + args: args + }); + + var message = callStr.replace(", [...", "[, ...") + " " + + expectedCallCountInWords(this); + + if (this.met()) { + return "Expectation met: " + message; + } + + return "Expected " + message + " (" + + callCountInWords(this.callCount) + ")"; + }, + + verify: function verify() { + if (!this.met()) { + sinon.expectation.fail(this.toString()); + } else { + sinon.expectation.pass(this.toString()); + } + + return true; + }, + + pass: function pass(message) { + sinon.assert.pass(message); + }, + + fail: function fail(message) { + var exception = new Error(message); + exception.name = "ExpectationError"; + + throw exception; + } + }; + + sinon.mock = mock; + return mock; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + var sinon = require("./util/core"); + require("./times_in_words"); + require("./call"); + require("./extend"); + require("./match"); + require("./spy"); + require("./stub"); + require("./format"); + + module.exports = makeApi(sinon); + } + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * @depend util/core.js + * @depend spy.js + * @depend stub.js + * @depend mock.js + */ +/** + * Collections of stubs, spies and mocks. + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +(function (sinonGlobal) { + + var push = [].push; + var hasOwnProperty = Object.prototype.hasOwnProperty; + + function getFakes(fakeCollection) { + if (!fakeCollection.fakes) { + fakeCollection.fakes = []; + } + + return fakeCollection.fakes; + } + + function each(fakeCollection, method) { + var fakes = getFakes(fakeCollection); + + for (var i = 0, l = fakes.length; i < l; i += 1) { + if (typeof fakes[i][method] === "function") { + fakes[i][method](); + } + } + } + + function compact(fakeCollection) { + var fakes = getFakes(fakeCollection); + var i = 0; + while (i < fakes.length) { + fakes.splice(i, 1); + } + } + + function makeApi(sinon) { + var collection = { + verify: function resolve() { + each(this, "verify"); + }, + + restore: function restore() { + each(this, "restore"); + compact(this); + }, + + reset: function restore() { + each(this, "reset"); + }, + + verifyAndRestore: function verifyAndRestore() { + var exception; + + try { + this.verify(); + } catch (e) { + exception = e; + } + + this.restore(); + + if (exception) { + throw exception; + } + }, + + add: function add(fake) { + push.call(getFakes(this), fake); + return fake; + }, + + spy: function spy() { + return this.add(sinon.spy.apply(sinon, arguments)); + }, + + stub: function stub(object, property, value) { + if (property) { + var original = object[property]; + + if (typeof original !== "function") { + if (!hasOwnProperty.call(object, property)) { + throw new TypeError("Cannot stub non-existent own property " + property); + } + + object[property] = value; + + return this.add({ + restore: function () { + object[property] = original; + } + }); + } + } + if (!property && !!object && typeof object === "object") { + var stubbedObj = sinon.stub.apply(sinon, arguments); + + for (var prop in stubbedObj) { + if (typeof stubbedObj[prop] === "function") { + this.add(stubbedObj[prop]); + } + } + + return stubbedObj; + } + + return this.add(sinon.stub.apply(sinon, arguments)); + }, + + mock: function mock() { + return this.add(sinon.mock.apply(sinon, arguments)); + }, + + inject: function inject(obj) { + var col = this; + + obj.spy = function () { + return col.spy.apply(col, arguments); + }; + + obj.stub = function () { + return col.stub.apply(col, arguments); + }; + + obj.mock = function () { + return col.mock.apply(col, arguments); + }; + + return obj; + } + }; + + sinon.collection = collection; + return collection; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + var sinon = require("./util/core"); + require("./mock"); + require("./spy"); + require("./stub"); + module.exports = makeApi(sinon); + } + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * Fake timer API + * setTimeout + * setInterval + * clearTimeout + * clearInterval + * tick + * reset + * Date + * + * Inspired by jsUnitMockTimeOut from JsUnit + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +(function () { + + function makeApi(s, lol) { + /*global lolex */ + var llx = typeof lolex !== "undefined" ? lolex : lol; + + s.useFakeTimers = function () { + var now; + var methods = Array.prototype.slice.call(arguments); + + if (typeof methods[0] === "string") { + now = 0; + } else { + now = methods.shift(); + } + + var clock = llx.install(now || 0, methods); + clock.restore = clock.uninstall; + return clock; + }; + + s.clock = { + create: function (now) { + return llx.createClock(now); + } + }; + + s.timers = { + setTimeout: setTimeout, + clearTimeout: clearTimeout, + setImmediate: (typeof setImmediate !== "undefined" ? setImmediate : undefined), + clearImmediate: (typeof clearImmediate !== "undefined" ? clearImmediate : undefined), + setInterval: setInterval, + clearInterval: clearInterval, + Date: Date + }; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, epxorts, module, lolex) { + var core = require("./core"); + makeApi(core, lolex); + module.exports = core; + } + + if (isAMD) { + define(loadDependencies); + } else if (isNode) { + loadDependencies(require, module.exports, module, require("lolex")); + } else { + makeApi(sinon); // eslint-disable-line no-undef + } +}()); + +/** + * Minimal Event interface implementation + * + * Original implementation by Sven Fuchs: https://gist.github.com/995028 + * Modifications and tests by Christian Johansen. + * + * @author Sven Fuchs (svenfuchs@artweb-design.de) + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2011 Sven Fuchs, Christian Johansen + */ +if (typeof sinon === "undefined") { + this.sinon = {}; +} + +(function () { + + var push = [].push; + + function makeApi(sinon) { + sinon.Event = function Event(type, bubbles, cancelable, target) { + this.initEvent(type, bubbles, cancelable, target); + }; + + sinon.Event.prototype = { + initEvent: function (type, bubbles, cancelable, target) { + this.type = type; + this.bubbles = bubbles; + this.cancelable = cancelable; + this.target = target; + }, + + stopPropagation: function () {}, + + preventDefault: function () { + this.defaultPrevented = true; + } + }; + + sinon.ProgressEvent = function ProgressEvent(type, progressEventRaw, target) { + this.initEvent(type, false, false, target); + this.loaded = progressEventRaw.loaded || null; + this.total = progressEventRaw.total || null; + this.lengthComputable = !!progressEventRaw.total; + }; + + sinon.ProgressEvent.prototype = new sinon.Event(); + + sinon.ProgressEvent.prototype.constructor = sinon.ProgressEvent; + + sinon.CustomEvent = function CustomEvent(type, customData, target) { + this.initEvent(type, false, false, target); + this.detail = customData.detail || null; + }; + + sinon.CustomEvent.prototype = new sinon.Event(); + + sinon.CustomEvent.prototype.constructor = sinon.CustomEvent; + + sinon.EventTarget = { + addEventListener: function addEventListener(event, listener) { + this.eventListeners = this.eventListeners || {}; + this.eventListeners[event] = this.eventListeners[event] || []; + push.call(this.eventListeners[event], listener); + }, + + removeEventListener: function removeEventListener(event, listener) { + var listeners = this.eventListeners && this.eventListeners[event] || []; + + for (var i = 0, l = listeners.length; i < l; ++i) { + if (listeners[i] === listener) { + return listeners.splice(i, 1); + } + } + }, + + dispatchEvent: function dispatchEvent(event) { + var type = event.type; + var listeners = this.eventListeners && this.eventListeners[type] || []; + + for (var i = 0; i < listeners.length; i++) { + if (typeof listeners[i] === "function") { + listeners[i].call(this, event); + } else { + listeners[i].handleEvent(event); + } + } + + return !!event.defaultPrevented; + } + }; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require) { + var sinon = require("./core"); + makeApi(sinon); + } + + if (isAMD) { + define(loadDependencies); + } else if (isNode) { + loadDependencies(require); + } else { + makeApi(sinon); // eslint-disable-line no-undef + } +}()); + +/** + * @depend util/core.js + */ +/** + * Logs errors + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2014 Christian Johansen + */ +(function (sinonGlobal) { + + // cache a reference to setTimeout, so that our reference won't be stubbed out + // when using fake timers and errors will still get logged + // https://github.com/cjohansen/Sinon.JS/issues/381 + var realSetTimeout = setTimeout; + + function makeApi(sinon) { + + function log() {} + + function logError(label, err) { + var msg = label + " threw exception: "; + + function throwLoggedError() { + err.message = msg + err.message; + throw err; + } + + sinon.log(msg + "[" + err.name + "] " + err.message); + + if (err.stack) { + sinon.log(err.stack); + } + + if (logError.useImmediateExceptions) { + throwLoggedError(); + } else { + logError.setTimeout(throwLoggedError, 0); + } + } + + // When set to true, any errors logged will be thrown immediately; + // If set to false, the errors will be thrown in separate execution frame. + logError.useImmediateExceptions = false; + + // wrap realSetTimeout with something we can stub in tests + logError.setTimeout = function (func, timeout) { + realSetTimeout(func, timeout); + }; + + var exports = {}; + exports.log = sinon.log = log; + exports.logError = sinon.logError = logError; + + return exports; + } + + function loadDependencies(require, exports, module) { + var sinon = require("./util/core"); + module.exports = makeApi(sinon); + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * @depend core.js + * @depend ../extend.js + * @depend event.js + * @depend ../log_error.js + */ +/** + * Fake XDomainRequest object + */ + +/** + * Returns the global to prevent assigning values to 'this' when this is undefined. + * This can occur when files are interpreted by node in strict mode. + * @private + */ +function getGlobal() { + + return typeof window !== "undefined" ? window : global; +} + +if (typeof sinon === "undefined") { + if (typeof this === "undefined") { + getGlobal().sinon = {}; + } else { + this.sinon = {}; + } +} + +// wrapper for global +(function (global) { + + var xdr = { XDomainRequest: global.XDomainRequest }; + xdr.GlobalXDomainRequest = global.XDomainRequest; + xdr.supportsXDR = typeof xdr.GlobalXDomainRequest !== "undefined"; + xdr.workingXDR = xdr.supportsXDR ? xdr.GlobalXDomainRequest : false; + + function makeApi(sinon) { + sinon.xdr = xdr; + + function FakeXDomainRequest() { + this.readyState = FakeXDomainRequest.UNSENT; + this.requestBody = null; + this.requestHeaders = {}; + this.status = 0; + this.timeout = null; + + if (typeof FakeXDomainRequest.onCreate === "function") { + FakeXDomainRequest.onCreate(this); + } + } + + function verifyState(x) { + if (x.readyState !== FakeXDomainRequest.OPENED) { + throw new Error("INVALID_STATE_ERR"); + } + + if (x.sendFlag) { + throw new Error("INVALID_STATE_ERR"); + } + } + + function verifyRequestSent(x) { + if (x.readyState === FakeXDomainRequest.UNSENT) { + throw new Error("Request not sent"); + } + if (x.readyState === FakeXDomainRequest.DONE) { + throw new Error("Request done"); + } + } + + function verifyResponseBodyType(body) { + if (typeof body !== "string") { + var error = new Error("Attempted to respond to fake XDomainRequest with " + + body + ", which is not a string."); + error.name = "InvalidBodyException"; + throw error; + } + } + + sinon.extend(FakeXDomainRequest.prototype, sinon.EventTarget, { + open: function open(method, url) { + this.method = method; + this.url = url; + + this.responseText = null; + this.sendFlag = false; + + this.readyStateChange(FakeXDomainRequest.OPENED); + }, + + readyStateChange: function readyStateChange(state) { + this.readyState = state; + var eventName = ""; + switch (this.readyState) { + case FakeXDomainRequest.UNSENT: + break; + case FakeXDomainRequest.OPENED: + break; + case FakeXDomainRequest.LOADING: + if (this.sendFlag) { + //raise the progress event + eventName = "onprogress"; + } + break; + case FakeXDomainRequest.DONE: + if (this.isTimeout) { + eventName = "ontimeout"; + } else if (this.errorFlag || (this.status < 200 || this.status > 299)) { + eventName = "onerror"; + } else { + eventName = "onload"; + } + break; + } + + // raising event (if defined) + if (eventName) { + if (typeof this[eventName] === "function") { + try { + this[eventName](); + } catch (e) { + sinon.logError("Fake XHR " + eventName + " handler", e); + } + } + } + }, + + send: function send(data) { + verifyState(this); + + if (!/^(get|head)$/i.test(this.method)) { + this.requestBody = data; + } + this.requestHeaders["Content-Type"] = "text/plain;charset=utf-8"; + + this.errorFlag = false; + this.sendFlag = true; + this.readyStateChange(FakeXDomainRequest.OPENED); + + if (typeof this.onSend === "function") { + this.onSend(this); + } + }, + + abort: function abort() { + this.aborted = true; + this.responseText = null; + this.errorFlag = true; + + if (this.readyState > sinon.FakeXDomainRequest.UNSENT && this.sendFlag) { + this.readyStateChange(sinon.FakeXDomainRequest.DONE); + this.sendFlag = false; + } + }, + + setResponseBody: function setResponseBody(body) { + verifyRequestSent(this); + verifyResponseBodyType(body); + + var chunkSize = this.chunkSize || 10; + var index = 0; + this.responseText = ""; + + do { + this.readyStateChange(FakeXDomainRequest.LOADING); + this.responseText += body.substring(index, index + chunkSize); + index += chunkSize; + } while (index < body.length); + + this.readyStateChange(FakeXDomainRequest.DONE); + }, + + respond: function respond(status, contentType, body) { + // content-type ignored, since XDomainRequest does not carry this + // we keep the same syntax for respond(...) as for FakeXMLHttpRequest to ease + // test integration across browsers + this.status = typeof status === "number" ? status : 200; + this.setResponseBody(body || ""); + }, + + simulatetimeout: function simulatetimeout() { + this.status = 0; + this.isTimeout = true; + // Access to this should actually throw an error + this.responseText = undefined; + this.readyStateChange(FakeXDomainRequest.DONE); + } + }); + + sinon.extend(FakeXDomainRequest, { + UNSENT: 0, + OPENED: 1, + LOADING: 3, + DONE: 4 + }); + + sinon.useFakeXDomainRequest = function useFakeXDomainRequest() { + sinon.FakeXDomainRequest.restore = function restore(keepOnCreate) { + if (xdr.supportsXDR) { + global.XDomainRequest = xdr.GlobalXDomainRequest; + } + + delete sinon.FakeXDomainRequest.restore; + + if (keepOnCreate !== true) { + delete sinon.FakeXDomainRequest.onCreate; + } + }; + if (xdr.supportsXDR) { + global.XDomainRequest = sinon.FakeXDomainRequest; + } + return sinon.FakeXDomainRequest; + }; + + sinon.FakeXDomainRequest = FakeXDomainRequest; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + var sinon = require("./core"); + require("../extend"); + require("./event"); + require("../log_error"); + makeApi(sinon); + module.exports = sinon; + } + + if (isAMD) { + define(loadDependencies); + } else if (isNode) { + loadDependencies(require, module.exports, module); + } else { + makeApi(sinon); // eslint-disable-line no-undef + } +})(typeof global !== "undefined" ? global : self); + +/** + * @depend core.js + * @depend ../extend.js + * @depend event.js + * @depend ../log_error.js + */ +/** + * Fake XMLHttpRequest object + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +(function (sinonGlobal, global) { + + function getWorkingXHR(globalScope) { + var supportsXHR = typeof globalScope.XMLHttpRequest !== "undefined"; + if (supportsXHR) { + return globalScope.XMLHttpRequest; + } + + var supportsActiveX = typeof globalScope.ActiveXObject !== "undefined"; + if (supportsActiveX) { + return function () { + return new globalScope.ActiveXObject("MSXML2.XMLHTTP.3.0"); + }; + } + + return false; + } + + var supportsProgress = typeof ProgressEvent !== "undefined"; + var supportsCustomEvent = typeof CustomEvent !== "undefined"; + var supportsFormData = typeof FormData !== "undefined"; + var supportsArrayBuffer = typeof ArrayBuffer !== "undefined"; + var supportsBlob = typeof Blob === "function"; + var sinonXhr = { XMLHttpRequest: global.XMLHttpRequest }; + sinonXhr.GlobalXMLHttpRequest = global.XMLHttpRequest; + sinonXhr.GlobalActiveXObject = global.ActiveXObject; + sinonXhr.supportsActiveX = typeof sinonXhr.GlobalActiveXObject !== "undefined"; + sinonXhr.supportsXHR = typeof sinonXhr.GlobalXMLHttpRequest !== "undefined"; + sinonXhr.workingXHR = getWorkingXHR(global); + sinonXhr.supportsCORS = sinonXhr.supportsXHR && "withCredentials" in (new sinonXhr.GlobalXMLHttpRequest()); + + var unsafeHeaders = { + "Accept-Charset": true, + "Accept-Encoding": true, + Connection: true, + "Content-Length": true, + Cookie: true, + Cookie2: true, + "Content-Transfer-Encoding": true, + Date: true, + Expect: true, + Host: true, + "Keep-Alive": true, + Referer: true, + TE: true, + Trailer: true, + "Transfer-Encoding": true, + Upgrade: true, + "User-Agent": true, + Via: true + }; + + // An upload object is created for each + // FakeXMLHttpRequest and allows upload + // events to be simulated using uploadProgress + // and uploadError. + function UploadProgress() { + this.eventListeners = { + progress: [], + load: [], + abort: [], + error: [] + }; + } + + UploadProgress.prototype.addEventListener = function addEventListener(event, listener) { + this.eventListeners[event].push(listener); + }; + + UploadProgress.prototype.removeEventListener = function removeEventListener(event, listener) { + var listeners = this.eventListeners[event] || []; + + for (var i = 0, l = listeners.length; i < l; ++i) { + if (listeners[i] === listener) { + return listeners.splice(i, 1); + } + } + }; + + UploadProgress.prototype.dispatchEvent = function dispatchEvent(event) { + var listeners = this.eventListeners[event.type] || []; + + for (var i = 0, listener; (listener = listeners[i]) != null; i++) { + listener(event); + } + }; + + // Note that for FakeXMLHttpRequest to work pre ES5 + // we lose some of the alignment with the spec. + // To ensure as close a match as possible, + // set responseType before calling open, send or respond; + function FakeXMLHttpRequest() { + this.readyState = FakeXMLHttpRequest.UNSENT; + this.requestHeaders = {}; + this.requestBody = null; + this.status = 0; + this.statusText = ""; + this.upload = new UploadProgress(); + this.responseType = ""; + this.response = ""; + if (sinonXhr.supportsCORS) { + this.withCredentials = false; + } + + var xhr = this; + var events = ["loadstart", "load", "abort", "loadend"]; + + function addEventListener(eventName) { + xhr.addEventListener(eventName, function (event) { + var listener = xhr["on" + eventName]; + + if (listener && typeof listener === "function") { + listener.call(this, event); + } + }); + } + + for (var i = events.length - 1; i >= 0; i--) { + addEventListener(events[i]); + } + + if (typeof FakeXMLHttpRequest.onCreate === "function") { + FakeXMLHttpRequest.onCreate(this); + } + } + + function verifyState(xhr) { + if (xhr.readyState !== FakeXMLHttpRequest.OPENED) { + throw new Error("INVALID_STATE_ERR"); + } + + if (xhr.sendFlag) { + throw new Error("INVALID_STATE_ERR"); + } + } + + function getHeader(headers, header) { + header = header.toLowerCase(); + + for (var h in headers) { + if (h.toLowerCase() === header) { + return h; + } + } + + return null; + } + + // filtering to enable a white-list version of Sinon FakeXhr, + // where whitelisted requests are passed through to real XHR + function each(collection, callback) { + if (!collection) { + return; + } + + for (var i = 0, l = collection.length; i < l; i += 1) { + callback(collection[i]); + } + } + function some(collection, callback) { + for (var index = 0; index < collection.length; index++) { + if (callback(collection[index]) === true) { + return true; + } + } + return false; + } + // largest arity in XHR is 5 - XHR#open + var apply = function (obj, method, args) { + switch (args.length) { + case 0: return obj[method](); + case 1: return obj[method](args[0]); + case 2: return obj[method](args[0], args[1]); + case 3: return obj[method](args[0], args[1], args[2]); + case 4: return obj[method](args[0], args[1], args[2], args[3]); + case 5: return obj[method](args[0], args[1], args[2], args[3], args[4]); + } + }; + + FakeXMLHttpRequest.filters = []; + FakeXMLHttpRequest.addFilter = function addFilter(fn) { + this.filters.push(fn); + }; + var IE6Re = /MSIE 6/; + FakeXMLHttpRequest.defake = function defake(fakeXhr, xhrArgs) { + var xhr = new sinonXhr.workingXHR(); // eslint-disable-line new-cap + + each([ + "open", + "setRequestHeader", + "send", + "abort", + "getResponseHeader", + "getAllResponseHeaders", + "addEventListener", + "overrideMimeType", + "removeEventListener" + ], function (method) { + fakeXhr[method] = function () { + return apply(xhr, method, arguments); + }; + }); + + var copyAttrs = function (args) { + each(args, function (attr) { + try { + fakeXhr[attr] = xhr[attr]; + } catch (e) { + if (!IE6Re.test(navigator.userAgent)) { + throw e; + } + } + }); + }; + + var stateChange = function stateChange() { + fakeXhr.readyState = xhr.readyState; + if (xhr.readyState >= FakeXMLHttpRequest.HEADERS_RECEIVED) { + copyAttrs(["status", "statusText"]); + } + if (xhr.readyState >= FakeXMLHttpRequest.LOADING) { + copyAttrs(["responseText", "response"]); + } + if (xhr.readyState === FakeXMLHttpRequest.DONE) { + copyAttrs(["responseXML"]); + } + if (fakeXhr.onreadystatechange) { + fakeXhr.onreadystatechange.call(fakeXhr, { target: fakeXhr }); + } + }; + + if (xhr.addEventListener) { + for (var event in fakeXhr.eventListeners) { + if (fakeXhr.eventListeners.hasOwnProperty(event)) { + + /*eslint-disable no-loop-func*/ + each(fakeXhr.eventListeners[event], function (handler) { + xhr.addEventListener(event, handler); + }); + /*eslint-enable no-loop-func*/ + } + } + xhr.addEventListener("readystatechange", stateChange); + } else { + xhr.onreadystatechange = stateChange; + } + apply(xhr, "open", xhrArgs); + }; + FakeXMLHttpRequest.useFilters = false; + + function verifyRequestOpened(xhr) { + if (xhr.readyState !== FakeXMLHttpRequest.OPENED) { + throw new Error("INVALID_STATE_ERR - " + xhr.readyState); + } + } + + function verifyRequestSent(xhr) { + if (xhr.readyState === FakeXMLHttpRequest.DONE) { + throw new Error("Request done"); + } + } + + function verifyHeadersReceived(xhr) { + if (xhr.async && xhr.readyState !== FakeXMLHttpRequest.HEADERS_RECEIVED) { + throw new Error("No headers received"); + } + } + + function verifyResponseBodyType(body) { + if (typeof body !== "string") { + var error = new Error("Attempted to respond to fake XMLHttpRequest with " + + body + ", which is not a string."); + error.name = "InvalidBodyException"; + throw error; + } + } + + function convertToArrayBuffer(body) { + var buffer = new ArrayBuffer(body.length); + var view = new Uint8Array(buffer); + for (var i = 0; i < body.length; i++) { + var charCode = body.charCodeAt(i); + if (charCode >= 256) { + throw new TypeError("arraybuffer or blob responseTypes require binary string, " + + "invalid character " + body[i] + " found."); + } + view[i] = charCode; + } + return buffer; + } + + function isXmlContentType(contentType) { + return !contentType || /(text\/xml)|(application\/xml)|(\+xml)/.test(contentType); + } + + function convertResponseBody(responseType, contentType, body) { + if (responseType === "" || responseType === "text") { + return body; + } else if (supportsArrayBuffer && responseType === "arraybuffer") { + return convertToArrayBuffer(body); + } else if (responseType === "json") { + try { + return JSON.parse(body); + } catch (e) { + // Return parsing failure as null + return null; + } + } else if (supportsBlob && responseType === "blob") { + var blobOptions = {}; + if (contentType) { + blobOptions.type = contentType; + } + return new Blob([convertToArrayBuffer(body)], blobOptions); + } else if (responseType === "document") { + if (isXmlContentType(contentType)) { + return FakeXMLHttpRequest.parseXML(body); + } + return null; + } + throw new Error("Invalid responseType " + responseType); + } + + function clearResponse(xhr) { + if (xhr.responseType === "" || xhr.responseType === "text") { + xhr.response = xhr.responseText = ""; + } else { + xhr.response = xhr.responseText = null; + } + xhr.responseXML = null; + } + + FakeXMLHttpRequest.parseXML = function parseXML(text) { + // Treat empty string as parsing failure + if (text !== "") { + try { + if (typeof DOMParser !== "undefined") { + var parser = new DOMParser(); + return parser.parseFromString(text, "text/xml"); + } + var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM"); + xmlDoc.async = "false"; + xmlDoc.loadXML(text); + return xmlDoc; + } catch (e) { + // Unable to parse XML - no biggie + } + } + + return null; + }; + + FakeXMLHttpRequest.statusCodes = { + 100: "Continue", + 101: "Switching Protocols", + 200: "OK", + 201: "Created", + 202: "Accepted", + 203: "Non-Authoritative Information", + 204: "No Content", + 205: "Reset Content", + 206: "Partial Content", + 207: "Multi-Status", + 300: "Multiple Choice", + 301: "Moved Permanently", + 302: "Found", + 303: "See Other", + 304: "Not Modified", + 305: "Use Proxy", + 307: "Temporary Redirect", + 400: "Bad Request", + 401: "Unauthorized", + 402: "Payment Required", + 403: "Forbidden", + 404: "Not Found", + 405: "Method Not Allowed", + 406: "Not Acceptable", + 407: "Proxy Authentication Required", + 408: "Request Timeout", + 409: "Conflict", + 410: "Gone", + 411: "Length Required", + 412: "Precondition Failed", + 413: "Request Entity Too Large", + 414: "Request-URI Too Long", + 415: "Unsupported Media Type", + 416: "Requested Range Not Satisfiable", + 417: "Expectation Failed", + 422: "Unprocessable Entity", + 500: "Internal Server Error", + 501: "Not Implemented", + 502: "Bad Gateway", + 503: "Service Unavailable", + 504: "Gateway Timeout", + 505: "HTTP Version Not Supported" + }; + + function makeApi(sinon) { + sinon.xhr = sinonXhr; + + sinon.extend(FakeXMLHttpRequest.prototype, sinon.EventTarget, { + async: true, + + open: function open(method, url, async, username, password) { + this.method = method; + this.url = url; + this.async = typeof async === "boolean" ? async : true; + this.username = username; + this.password = password; + clearResponse(this); + this.requestHeaders = {}; + this.sendFlag = false; + + if (FakeXMLHttpRequest.useFilters === true) { + var xhrArgs = arguments; + var defake = some(FakeXMLHttpRequest.filters, function (filter) { + return filter.apply(this, xhrArgs); + }); + if (defake) { + return FakeXMLHttpRequest.defake(this, arguments); + } + } + this.readyStateChange(FakeXMLHttpRequest.OPENED); + }, + + readyStateChange: function readyStateChange(state) { + this.readyState = state; + + var readyStateChangeEvent = new sinon.Event("readystatechange", false, false, this); + + if (typeof this.onreadystatechange === "function") { + try { + this.onreadystatechange(readyStateChangeEvent); + } catch (e) { + sinon.logError("Fake XHR onreadystatechange handler", e); + } + } + + switch (this.readyState) { + case FakeXMLHttpRequest.DONE: + if (supportsProgress) { + this.upload.dispatchEvent(new sinon.ProgressEvent("progress", {loaded: 100, total: 100})); + this.dispatchEvent(new sinon.ProgressEvent("progress", {loaded: 100, total: 100})); + } + this.upload.dispatchEvent(new sinon.Event("load", false, false, this)); + this.dispatchEvent(new sinon.Event("load", false, false, this)); + this.dispatchEvent(new sinon.Event("loadend", false, false, this)); + break; + } + + this.dispatchEvent(readyStateChangeEvent); + }, + + setRequestHeader: function setRequestHeader(header, value) { + verifyState(this); + + if (unsafeHeaders[header] || /^(Sec-|Proxy-)/.test(header)) { + throw new Error("Refused to set unsafe header \"" + header + "\""); + } + + if (this.requestHeaders[header]) { + this.requestHeaders[header] += "," + value; + } else { + this.requestHeaders[header] = value; + } + }, + + // Helps testing + setResponseHeaders: function setResponseHeaders(headers) { + verifyRequestOpened(this); + this.responseHeaders = {}; + + for (var header in headers) { + if (headers.hasOwnProperty(header)) { + this.responseHeaders[header] = headers[header]; + } + } + + if (this.async) { + this.readyStateChange(FakeXMLHttpRequest.HEADERS_RECEIVED); + } else { + this.readyState = FakeXMLHttpRequest.HEADERS_RECEIVED; + } + }, + + // Currently treats ALL data as a DOMString (i.e. no Document) + send: function send(data) { + verifyState(this); + + if (!/^(get|head)$/i.test(this.method)) { + var contentType = getHeader(this.requestHeaders, "Content-Type"); + if (this.requestHeaders[contentType]) { + var value = this.requestHeaders[contentType].split(";"); + this.requestHeaders[contentType] = value[0] + ";charset=utf-8"; + } else if (supportsFormData && !(data instanceof FormData)) { + this.requestHeaders["Content-Type"] = "text/plain;charset=utf-8"; + } + + this.requestBody = data; + } + + this.errorFlag = false; + this.sendFlag = this.async; + clearResponse(this); + this.readyStateChange(FakeXMLHttpRequest.OPENED); + + if (typeof this.onSend === "function") { + this.onSend(this); + } + + this.dispatchEvent(new sinon.Event("loadstart", false, false, this)); + }, + + abort: function abort() { + this.aborted = true; + clearResponse(this); + this.errorFlag = true; + this.requestHeaders = {}; + this.responseHeaders = {}; + + if (this.readyState > FakeXMLHttpRequest.UNSENT && this.sendFlag) { + this.readyStateChange(FakeXMLHttpRequest.DONE); + this.sendFlag = false; + } + + this.readyState = FakeXMLHttpRequest.UNSENT; + + this.dispatchEvent(new sinon.Event("abort", false, false, this)); + + this.upload.dispatchEvent(new sinon.Event("abort", false, false, this)); + + if (typeof this.onerror === "function") { + this.onerror(); + } + }, + + getResponseHeader: function getResponseHeader(header) { + if (this.readyState < FakeXMLHttpRequest.HEADERS_RECEIVED) { + return null; + } + + if (/^Set-Cookie2?$/i.test(header)) { + return null; + } + + header = getHeader(this.responseHeaders, header); + + return this.responseHeaders[header] || null; + }, + + getAllResponseHeaders: function getAllResponseHeaders() { + if (this.readyState < FakeXMLHttpRequest.HEADERS_RECEIVED) { + return ""; + } + + var headers = ""; + + for (var header in this.responseHeaders) { + if (this.responseHeaders.hasOwnProperty(header) && + !/^Set-Cookie2?$/i.test(header)) { + headers += header + ": " + this.responseHeaders[header] + "\r\n"; + } + } + + return headers; + }, + + setResponseBody: function setResponseBody(body) { + verifyRequestSent(this); + verifyHeadersReceived(this); + verifyResponseBodyType(body); + var contentType = this.getResponseHeader("Content-Type"); + + var isTextResponse = this.responseType === "" || this.responseType === "text"; + clearResponse(this); + if (this.async) { + var chunkSize = this.chunkSize || 10; + var index = 0; + + do { + this.readyStateChange(FakeXMLHttpRequest.LOADING); + + if (isTextResponse) { + this.responseText = this.response += body.substring(index, index + chunkSize); + } + index += chunkSize; + } while (index < body.length); + } + + this.response = convertResponseBody(this.responseType, contentType, body); + if (isTextResponse) { + this.responseText = this.response; + } + + if (this.responseType === "document") { + this.responseXML = this.response; + } else if (this.responseType === "" && isXmlContentType(contentType)) { + this.responseXML = FakeXMLHttpRequest.parseXML(this.responseText); + } + this.readyStateChange(FakeXMLHttpRequest.DONE); + }, + + respond: function respond(status, headers, body) { + this.status = typeof status === "number" ? status : 200; + this.statusText = FakeXMLHttpRequest.statusCodes[this.status]; + this.setResponseHeaders(headers || {}); + this.setResponseBody(body || ""); + }, + + uploadProgress: function uploadProgress(progressEventRaw) { + if (supportsProgress) { + this.upload.dispatchEvent(new sinon.ProgressEvent("progress", progressEventRaw)); + } + }, + + downloadProgress: function downloadProgress(progressEventRaw) { + if (supportsProgress) { + this.dispatchEvent(new sinon.ProgressEvent("progress", progressEventRaw)); + } + }, + + uploadError: function uploadError(error) { + if (supportsCustomEvent) { + this.upload.dispatchEvent(new sinon.CustomEvent("error", {detail: error})); + } + } + }); + + sinon.extend(FakeXMLHttpRequest, { + UNSENT: 0, + OPENED: 1, + HEADERS_RECEIVED: 2, + LOADING: 3, + DONE: 4 + }); + + sinon.useFakeXMLHttpRequest = function () { + FakeXMLHttpRequest.restore = function restore(keepOnCreate) { + if (sinonXhr.supportsXHR) { + global.XMLHttpRequest = sinonXhr.GlobalXMLHttpRequest; + } + + if (sinonXhr.supportsActiveX) { + global.ActiveXObject = sinonXhr.GlobalActiveXObject; + } + + delete FakeXMLHttpRequest.restore; + + if (keepOnCreate !== true) { + delete FakeXMLHttpRequest.onCreate; + } + }; + if (sinonXhr.supportsXHR) { + global.XMLHttpRequest = FakeXMLHttpRequest; + } + + if (sinonXhr.supportsActiveX) { + global.ActiveXObject = function ActiveXObject(objId) { + if (objId === "Microsoft.XMLHTTP" || /^Msxml2\.XMLHTTP/i.test(objId)) { + + return new FakeXMLHttpRequest(); + } + + return new sinonXhr.GlobalActiveXObject(objId); + }; + } + + return FakeXMLHttpRequest; + }; + + sinon.FakeXMLHttpRequest = FakeXMLHttpRequest; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + var sinon = require("./core"); + require("../extend"); + require("./event"); + require("../log_error"); + makeApi(sinon); + module.exports = sinon; + } + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon, // eslint-disable-line no-undef + typeof global !== "undefined" ? global : self +)); + +/** + * @depend fake_xdomain_request.js + * @depend fake_xml_http_request.js + * @depend ../format.js + * @depend ../log_error.js + */ +/** + * The Sinon "server" mimics a web server that receives requests from + * sinon.FakeXMLHttpRequest and provides an API to respond to those requests, + * both synchronously and asynchronously. To respond synchronuously, canned + * answers have to be provided upfront. + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +(function () { + + var push = [].push; + + function responseArray(handler) { + var response = handler; + + if (Object.prototype.toString.call(handler) !== "[object Array]") { + response = [200, {}, handler]; + } + + if (typeof response[2] !== "string") { + throw new TypeError("Fake server response body should be string, but was " + + typeof response[2]); + } + + return response; + } + + var wloc = typeof window !== "undefined" ? window.location : {}; + var rCurrLoc = new RegExp("^" + wloc.protocol + "//" + wloc.host); + + function matchOne(response, reqMethod, reqUrl) { + var rmeth = response.method; + var matchMethod = !rmeth || rmeth.toLowerCase() === reqMethod.toLowerCase(); + var url = response.url; + var matchUrl = !url || url === reqUrl || (typeof url.test === "function" && url.test(reqUrl)); + + return matchMethod && matchUrl; + } + + function match(response, request) { + var requestUrl = request.url; + + if (!/^https?:\/\//.test(requestUrl) || rCurrLoc.test(requestUrl)) { + requestUrl = requestUrl.replace(rCurrLoc, ""); + } + + if (matchOne(response, this.getHTTPMethod(request), requestUrl)) { + if (typeof response.response === "function") { + var ru = response.url; + var args = [request].concat(ru && typeof ru.exec === "function" ? ru.exec(requestUrl).slice(1) : []); + return response.response.apply(response, args); + } + + return true; + } + + return false; + } + + function makeApi(sinon) { + sinon.fakeServer = { + create: function (config) { + var server = sinon.create(this); + server.configure(config); + if (!sinon.xhr.supportsCORS) { + this.xhr = sinon.useFakeXDomainRequest(); + } else { + this.xhr = sinon.useFakeXMLHttpRequest(); + } + server.requests = []; + + this.xhr.onCreate = function (xhrObj) { + server.addRequest(xhrObj); + }; + + return server; + }, + configure: function (config) { + var whitelist = { + "autoRespond": true, + "autoRespondAfter": true, + "respondImmediately": true, + "fakeHTTPMethods": true + }; + var setting; + + config = config || {}; + for (setting in config) { + if (whitelist.hasOwnProperty(setting) && config.hasOwnProperty(setting)) { + this[setting] = config[setting]; + } + } + }, + addRequest: function addRequest(xhrObj) { + var server = this; + push.call(this.requests, xhrObj); + + xhrObj.onSend = function () { + server.handleRequest(this); + + if (server.respondImmediately) { + server.respond(); + } else if (server.autoRespond && !server.responding) { + setTimeout(function () { + server.responding = false; + server.respond(); + }, server.autoRespondAfter || 10); + + server.responding = true; + } + }; + }, + + getHTTPMethod: function getHTTPMethod(request) { + if (this.fakeHTTPMethods && /post/i.test(request.method)) { + var matches = (request.requestBody || "").match(/_method=([^\b;]+)/); + return matches ? matches[1] : request.method; + } + + return request.method; + }, + + handleRequest: function handleRequest(xhr) { + if (xhr.async) { + if (!this.queue) { + this.queue = []; + } + + push.call(this.queue, xhr); + } else { + this.processRequest(xhr); + } + }, + + log: function log(response, request) { + var str; + + str = "Request:\n" + sinon.format(request) + "\n\n"; + str += "Response:\n" + sinon.format(response) + "\n\n"; + + sinon.log(str); + }, + + respondWith: function respondWith(method, url, body) { + if (arguments.length === 1 && typeof method !== "function") { + this.response = responseArray(method); + return; + } + + if (!this.responses) { + this.responses = []; + } + + if (arguments.length === 1) { + body = method; + url = method = null; + } + + if (arguments.length === 2) { + body = url; + url = method; + method = null; + } + + push.call(this.responses, { + method: method, + url: url, + response: typeof body === "function" ? body : responseArray(body) + }); + }, + + respond: function respond() { + if (arguments.length > 0) { + this.respondWith.apply(this, arguments); + } + + var queue = this.queue || []; + var requests = queue.splice(0, queue.length); + + for (var i = 0; i < requests.length; i++) { + this.processRequest(requests[i]); + } + }, + + processRequest: function processRequest(request) { + try { + if (request.aborted) { + return; + } + + var response = this.response || [404, {}, ""]; + + if (this.responses) { + for (var l = this.responses.length, i = l - 1; i >= 0; i--) { + if (match.call(this, this.responses[i], request)) { + response = this.responses[i].response; + break; + } + } + } + + if (request.readyState !== 4) { + this.log(response, request); + + request.respond(response[0], response[1], response[2]); + } + } catch (e) { + sinon.logError("Fake server request processing", e); + } + }, + + restore: function restore() { + return this.xhr.restore && this.xhr.restore.apply(this.xhr, arguments); + } + }; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + var sinon = require("./core"); + require("./fake_xdomain_request"); + require("./fake_xml_http_request"); + require("../format"); + makeApi(sinon); + module.exports = sinon; + } + + if (isAMD) { + define(loadDependencies); + } else if (isNode) { + loadDependencies(require, module.exports, module); + } else { + makeApi(sinon); // eslint-disable-line no-undef + } +}()); + +/** + * @depend fake_server.js + * @depend fake_timers.js + */ +/** + * Add-on for sinon.fakeServer that automatically handles a fake timer along with + * the FakeXMLHttpRequest. The direct inspiration for this add-on is jQuery + * 1.3.x, which does not use xhr object's onreadystatehandler at all - instead, + * it polls the object for completion with setInterval. Dispite the direct + * motivation, there is nothing jQuery-specific in this file, so it can be used + * in any environment where the ajax implementation depends on setInterval or + * setTimeout. + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +(function () { + + function makeApi(sinon) { + function Server() {} + Server.prototype = sinon.fakeServer; + + sinon.fakeServerWithClock = new Server(); + + sinon.fakeServerWithClock.addRequest = function addRequest(xhr) { + if (xhr.async) { + if (typeof setTimeout.clock === "object") { + this.clock = setTimeout.clock; + } else { + this.clock = sinon.useFakeTimers(); + this.resetClock = true; + } + + if (!this.longestTimeout) { + var clockSetTimeout = this.clock.setTimeout; + var clockSetInterval = this.clock.setInterval; + var server = this; + + this.clock.setTimeout = function (fn, timeout) { + server.longestTimeout = Math.max(timeout, server.longestTimeout || 0); + + return clockSetTimeout.apply(this, arguments); + }; + + this.clock.setInterval = function (fn, timeout) { + server.longestTimeout = Math.max(timeout, server.longestTimeout || 0); + + return clockSetInterval.apply(this, arguments); + }; + } + } + + return sinon.fakeServer.addRequest.call(this, xhr); + }; + + sinon.fakeServerWithClock.respond = function respond() { + var returnVal = sinon.fakeServer.respond.apply(this, arguments); + + if (this.clock) { + this.clock.tick(this.longestTimeout || 0); + this.longestTimeout = 0; + + if (this.resetClock) { + this.clock.restore(); + this.resetClock = false; + } + } + + return returnVal; + }; + + sinon.fakeServerWithClock.restore = function restore() { + if (this.clock) { + this.clock.restore(); + } + + return sinon.fakeServer.restore.apply(this, arguments); + }; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require) { + var sinon = require("./core"); + require("./fake_server"); + require("./fake_timers"); + makeApi(sinon); + } + + if (isAMD) { + define(loadDependencies); + } else if (isNode) { + loadDependencies(require); + } else { + makeApi(sinon); // eslint-disable-line no-undef + } +}()); + +/** + * @depend util/core.js + * @depend extend.js + * @depend collection.js + * @depend util/fake_timers.js + * @depend util/fake_server_with_clock.js + */ +/** + * Manages fake collections as well as fake utilities such as Sinon's + * timers and fake XHR implementation in one convenient object. + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +(function (sinonGlobal) { + + function makeApi(sinon) { + var push = [].push; + + function exposeValue(sandbox, config, key, value) { + if (!value) { + return; + } + + if (config.injectInto && !(key in config.injectInto)) { + config.injectInto[key] = value; + sandbox.injectedKeys.push(key); + } else { + push.call(sandbox.args, value); + } + } + + function prepareSandboxFromConfig(config) { + var sandbox = sinon.create(sinon.sandbox); + + if (config.useFakeServer) { + if (typeof config.useFakeServer === "object") { + sandbox.serverPrototype = config.useFakeServer; + } + + sandbox.useFakeServer(); + } + + if (config.useFakeTimers) { + if (typeof config.useFakeTimers === "object") { + sandbox.useFakeTimers.apply(sandbox, config.useFakeTimers); + } else { + sandbox.useFakeTimers(); + } + } + + return sandbox; + } + + sinon.sandbox = sinon.extend(sinon.create(sinon.collection), { + useFakeTimers: function useFakeTimers() { + this.clock = sinon.useFakeTimers.apply(sinon, arguments); + + return this.add(this.clock); + }, + + serverPrototype: sinon.fakeServer, + + useFakeServer: function useFakeServer() { + var proto = this.serverPrototype || sinon.fakeServer; + + if (!proto || !proto.create) { + return null; + } + + this.server = proto.create(); + return this.add(this.server); + }, + + inject: function (obj) { + sinon.collection.inject.call(this, obj); + + if (this.clock) { + obj.clock = this.clock; + } + + if (this.server) { + obj.server = this.server; + obj.requests = this.server.requests; + } + + obj.match = sinon.match; + + return obj; + }, + + restore: function () { + sinon.collection.restore.apply(this, arguments); + this.restoreContext(); + }, + + restoreContext: function () { + if (this.injectedKeys) { + for (var i = 0, j = this.injectedKeys.length; i < j; i++) { + delete this.injectInto[this.injectedKeys[i]]; + } + this.injectedKeys = []; + } + }, + + create: function (config) { + if (!config) { + return sinon.create(sinon.sandbox); + } + + var sandbox = prepareSandboxFromConfig(config); + sandbox.args = sandbox.args || []; + sandbox.injectedKeys = []; + sandbox.injectInto = config.injectInto; + var prop, + value; + var exposed = sandbox.inject({}); + + if (config.properties) { + for (var i = 0, l = config.properties.length; i < l; i++) { + prop = config.properties[i]; + value = exposed[prop] || prop === "sandbox" && sandbox; + exposeValue(sandbox, config, prop, value); + } + } else { + exposeValue(sandbox, config, "sandbox", value); + } + + return sandbox; + }, + + match: sinon.match + }); + + sinon.sandbox.useFakeXMLHttpRequest = sinon.sandbox.useFakeServer; + + return sinon.sandbox; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + var sinon = require("./util/core"); + require("./extend"); + require("./util/fake_server_with_clock"); + require("./util/fake_timers"); + require("./collection"); + module.exports = makeApi(sinon); + } + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * @depend util/core.js + * @depend sandbox.js + */ +/** + * Test function, sandboxes fakes + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +(function (sinonGlobal) { + + function makeApi(sinon) { + var slice = Array.prototype.slice; + + function test(callback) { + var type = typeof callback; + + if (type !== "function") { + throw new TypeError("sinon.test needs to wrap a test function, got " + type); + } + + function sinonSandboxedTest() { + var config = sinon.getConfig(sinon.config); + config.injectInto = config.injectIntoThis && this || config.injectInto; + var sandbox = sinon.sandbox.create(config); + var args = slice.call(arguments); + var oldDone = args.length && args[args.length - 1]; + var exception, result; + + if (typeof oldDone === "function") { + args[args.length - 1] = function sinonDone(res) { + if (res) { + sandbox.restore(); + } else { + sandbox.verifyAndRestore(); + } + oldDone(res); + }; + } + + try { + result = callback.apply(this, args.concat(sandbox.args)); + } catch (e) { + exception = e; + } + + if (typeof oldDone !== "function") { + if (typeof exception !== "undefined") { + sandbox.restore(); + throw exception; + } else { + sandbox.verifyAndRestore(); + } + } + + return result; + } + + if (callback.length) { + return function sinonAsyncSandboxedTest(done) { // eslint-disable-line no-unused-vars + return sinonSandboxedTest.apply(this, arguments); + }; + } + + return sinonSandboxedTest; + } + + test.config = { + injectIntoThis: true, + injectInto: null, + properties: ["spy", "stub", "mock", "clock", "server", "requests"], + useFakeTimers: true, + useFakeServer: true + }; + + sinon.test = test; + return test; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + var core = require("./util/core"); + require("./sandbox"); + module.exports = makeApi(core); + } + + if (isAMD) { + define(loadDependencies); + } else if (isNode) { + loadDependencies(require, module.exports, module); + } else if (sinonGlobal) { + makeApi(sinonGlobal); + } +}(typeof sinon === "object" && sinon || null)); // eslint-disable-line no-undef + +/** + * @depend util/core.js + * @depend test.js + */ +/** + * Test case, sandboxes all test functions + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +(function (sinonGlobal) { + + function createTest(property, setUp, tearDown) { + return function () { + if (setUp) { + setUp.apply(this, arguments); + } + + var exception, result; + + try { + result = property.apply(this, arguments); + } catch (e) { + exception = e; + } + + if (tearDown) { + tearDown.apply(this, arguments); + } + + if (exception) { + throw exception; + } + + return result; + }; + } + + function makeApi(sinon) { + function testCase(tests, prefix) { + if (!tests || typeof tests !== "object") { + throw new TypeError("sinon.testCase needs an object with test functions"); + } + + prefix = prefix || "test"; + var rPrefix = new RegExp("^" + prefix); + var methods = {}; + var setUp = tests.setUp; + var tearDown = tests.tearDown; + var testName, + property, + method; + + for (testName in tests) { + if (tests.hasOwnProperty(testName) && !/^(setUp|tearDown)$/.test(testName)) { + property = tests[testName]; + + if (typeof property === "function" && rPrefix.test(testName)) { + method = property; + + if (setUp || tearDown) { + method = createTest(property, setUp, tearDown); + } + + methods[testName] = sinon.test(method); + } else { + methods[testName] = tests[testName]; + } + } + } + + return methods; + } + + sinon.testCase = testCase; + return testCase; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + var core = require("./util/core"); + require("./test"); + module.exports = makeApi(core); + } + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon // eslint-disable-line no-undef +)); + +/** + * @depend times_in_words.js + * @depend util/core.js + * @depend match.js + * @depend format.js + */ +/** + * Assertions matching the test spy retrieval interface. + * + * @author Christian Johansen (christian@cjohansen.no) + * @license BSD + * + * Copyright (c) 2010-2013 Christian Johansen + */ +(function (sinonGlobal, global) { + + var slice = Array.prototype.slice; + + function makeApi(sinon) { + var assert; + + function verifyIsStub() { + var method; + + for (var i = 0, l = arguments.length; i < l; ++i) { + method = arguments[i]; + + if (!method) { + assert.fail("fake is not a spy"); + } + + if (method.proxy && method.proxy.isSinonProxy) { + verifyIsStub(method.proxy); + } else { + if (typeof method !== "function") { + assert.fail(method + " is not a function"); + } + + if (typeof method.getCall !== "function") { + assert.fail(method + " is not stubbed"); + } + } + + } + } + + function failAssertion(object, msg) { + object = object || global; + var failMethod = object.fail || assert.fail; + failMethod.call(object, msg); + } + + function mirrorPropAsAssertion(name, method, message) { + if (arguments.length === 2) { + message = method; + method = name; + } + + assert[name] = function (fake) { + verifyIsStub(fake); + + var args = slice.call(arguments, 1); + var failed = false; + + if (typeof method === "function") { + failed = !method(fake); + } else { + failed = typeof fake[method] === "function" ? + !fake[method].apply(fake, args) : !fake[method]; + } + + if (failed) { + failAssertion(this, (fake.printf || fake.proxy.printf).apply(fake, [message].concat(args))); + } else { + assert.pass(name); + } + }; + } + + function exposedName(prefix, prop) { + return !prefix || /^fail/.test(prop) ? prop : + prefix + prop.slice(0, 1).toUpperCase() + prop.slice(1); + } + + assert = { + failException: "AssertError", + + fail: function fail(message) { + var error = new Error(message); + error.name = this.failException || assert.failException; + + throw error; + }, + + pass: function pass() {}, + + callOrder: function assertCallOrder() { + verifyIsStub.apply(null, arguments); + var expected = ""; + var actual = ""; + + if (!sinon.calledInOrder(arguments)) { + try { + expected = [].join.call(arguments, ", "); + var calls = slice.call(arguments); + var i = calls.length; + while (i) { + if (!calls[--i].called) { + calls.splice(i, 1); + } + } + actual = sinon.orderByFirstCall(calls).join(", "); + } catch (e) { + // If this fails, we'll just fall back to the blank string + } + + failAssertion(this, "expected " + expected + " to be " + + "called in order but were called as " + actual); + } else { + assert.pass("callOrder"); + } + }, + + callCount: function assertCallCount(method, count) { + verifyIsStub(method); + + if (method.callCount !== count) { + var msg = "expected %n to be called " + sinon.timesInWords(count) + + " but was called %c%C"; + failAssertion(this, method.printf(msg)); + } else { + assert.pass("callCount"); + } + }, + + expose: function expose(target, options) { + if (!target) { + throw new TypeError("target is null or undefined"); + } + + var o = options || {}; + var prefix = typeof o.prefix === "undefined" && "assert" || o.prefix; + var includeFail = typeof o.includeFail === "undefined" || !!o.includeFail; + + for (var method in this) { + if (method !== "expose" && (includeFail || !/^(fail)/.test(method))) { + target[exposedName(prefix, method)] = this[method]; + } + } + + return target; + }, + + match: function match(actual, expectation) { + var matcher = sinon.match(expectation); + if (matcher.test(actual)) { + assert.pass("match"); + } else { + var formatted = [ + "expected value to match", + " expected = " + sinon.format(expectation), + " actual = " + sinon.format(actual) + ]; + + failAssertion(this, formatted.join("\n")); + } + } + }; + + mirrorPropAsAssertion("called", "expected %n to have been called at least once but was never called"); + mirrorPropAsAssertion("notCalled", function (spy) { + return !spy.called; + }, "expected %n to not have been called but was called %c%C"); + mirrorPropAsAssertion("calledOnce", "expected %n to be called once but was called %c%C"); + mirrorPropAsAssertion("calledTwice", "expected %n to be called twice but was called %c%C"); + mirrorPropAsAssertion("calledThrice", "expected %n to be called thrice but was called %c%C"); + mirrorPropAsAssertion("calledOn", "expected %n to be called with %1 as this but was called with %t"); + mirrorPropAsAssertion( + "alwaysCalledOn", + "expected %n to always be called with %1 as this but was called with %t" + ); + mirrorPropAsAssertion("calledWithNew", "expected %n to be called with new"); + mirrorPropAsAssertion("alwaysCalledWithNew", "expected %n to always be called with new"); + mirrorPropAsAssertion("calledWith", "expected %n to be called with arguments %*%C"); + mirrorPropAsAssertion("calledWithMatch", "expected %n to be called with match %*%C"); + mirrorPropAsAssertion("alwaysCalledWith", "expected %n to always be called with arguments %*%C"); + mirrorPropAsAssertion("alwaysCalledWithMatch", "expected %n to always be called with match %*%C"); + mirrorPropAsAssertion("calledWithExactly", "expected %n to be called with exact arguments %*%C"); + mirrorPropAsAssertion("alwaysCalledWithExactly", "expected %n to always be called with exact arguments %*%C"); + mirrorPropAsAssertion("neverCalledWith", "expected %n to never be called with arguments %*%C"); + mirrorPropAsAssertion("neverCalledWithMatch", "expected %n to never be called with match %*%C"); + mirrorPropAsAssertion("threw", "%n did not throw exception%C"); + mirrorPropAsAssertion("alwaysThrew", "%n did not always throw exception%C"); + + sinon.assert = assert; + return assert; + } + + var isNode = typeof module !== "undefined" && module.exports && typeof require === "function"; + var isAMD = typeof define === "function" && typeof define.amd === "object" && define.amd; + + function loadDependencies(require, exports, module) { + var sinon = require("./util/core"); + require("./match"); + require("./format"); + module.exports = makeApi(sinon); + } + + if (isAMD) { + define(loadDependencies); + return; + } + + if (isNode) { + loadDependencies(require, module.exports, module); + return; + } + + if (sinonGlobal) { + makeApi(sinonGlobal); + } +}( + typeof sinon === "object" && sinon, // eslint-disable-line no-undef + typeof global !== "undefined" ? global : self +)); + + return sinon; +})); diff --git a/libraries/foundation-6/test/javascript/util/core.js b/libraries/foundation-6/test/javascript/util/core.js new file mode 100755 index 00000000..b2cba9aa --- /dev/null +++ b/libraries/foundation-6/test/javascript/util/core.js @@ -0,0 +1,83 @@ +describe('Foundation core', function() { + it('exists on the window', function() { + (window.Foundation).should.be.an('object'); + }); + + it('is a jQuery prototype function', function() { + ($.fn.foundation).should.to.be.a('function'); + }); + + describe('rtl()', function() { + it('detects the text direction on the document', function() { + (Foundation.rtl()).should.be.false; + $('html').attr('dir', 'rtl'); + + (Foundation.rtl()).should.be.true; + $('html').attr('dir', 'ltr'); + }); + }); + + describe('plugin()', function() { + afterEach(function() { + delete Foundation._plugins['plugin']; + delete Foundation.Plugin; + }); + + it('adds Foundation plugins', function() { + function Plugin() {} + Foundation.plugin(Plugin, 'Plugin'); + + (Foundation._plugins['plugin']).should.be.a('function'); + (Foundation.Plugin).should.be.a('function'); + }); + + it('uses the name of the Plugin class/function if one is not provided', function() { + function Plugin() {} + Foundation.plugin(Plugin); + + (Foundation._plugins['plugin']).should.be.a('function'); + (Foundation.Plugin).should.be.a('function'); + }); + }); + + describe('registerPlugin()', function() { + it('registers a new instance of a plugin'); + }); + + describe('unregisterPlugin()', function() { + it('un-registers a plugin being destroyed'); + }); + + xdescribe('reInit()', function() { + + }); + + describe('GetYoDigits()', function() { + it('generates a random ID matching a given length', function() { + var id = Foundation.GetYoDigits(6); + + id.should.be.a('string'); + id.should.have.lengthOf(6); + }); + + it('can append a namespace to the number', function() { + var id = Foundation.GetYoDigits(6, 'plugin'); + + id.should.be.a('string'); + id.should.have.lengthOf(6 + '-plugin'.length); + id.should.contain('-plugin'); + }); + }); + + describe('reflow()', function() { + }); + + describe('getFnName()', function() { + }); + + describe('transitionEnd()', function() { + }); + + describe('throttle()', function() { + }); +}); diff --git a/libraries/foundation-6/test/sass/_breakpoint.scss b/libraries/foundation-6/test/sass/_breakpoint.scss new file mode 100755 index 00000000..d013ac47 --- /dev/null +++ b/libraries/foundation-6/test/sass/_breakpoint.scss @@ -0,0 +1,160 @@ +@import "true"; + +@import '../../scss/util/unit'; +@import '../../scss/util/breakpoint'; + +@include test-module('Breakpoint') { + + @include test('Breakpoint (Named to Em) [function]') { + $test: breakpoint(medium); + $expect: '(min-width: 40em)'; + + @include assert-equal($test, $expect, + 'Converts a named breakpoint to an em value'); + } + + @include test('Breakpoint (Rem/Px to Em) [function]') { + $expect: '(min-width: 1em)'; + + @include assert-equal(breakpoint(16px), $expect, + 'Converts a pixel breakpoint to em'); + @include assert-equal(breakpoint(1rem), $expect, + 'Converts a rem breakpoint to em'); + } + + @include test('Breakpoint (Only Range) [function]') { + $test: breakpoint(medium only); + $expect: '(min-width: 40em) and (max-width: 63.9375em)'; + + $test-lowest: breakpoint(small only); + $expect-lowest: '(max-width: 39.9375em)'; + + $test-highest: breakpoint(xxlarge only); + $expect-highest: '(min-width: 90em)'; + + @include assert-equal($test, $expect, + 'Creates a min/max-width range out of a named breakpoint'); + + @include assert-equal($test-lowest, $expect-lowest, + 'Creates a max-width range if the breakpoint is the lowest'); + + @include assert-equal($test-highest, $expect-highest, + 'Creates a min-width range if the breakpoint is the highest'); + } + + @include test('Breakpoint (Named Down Range) [function]') { + $test: breakpoint(medium down); + $expect: '(max-width: 63.9375em)'; + + @include assert-equal($test, $expect, + 'Creates a down range out of a medium breakpoint'); + + $test-lowest: breakpoint(small down); + $expect-lowest: '(max-width: 39.9375em)'; + + @include assert-equal($test-lowest, $expect-lowest, + 'Creates a down range out of a small breakpoint'); + + $test-highest: breakpoint(xxlarge down); + $expect-highest: ''; + + @include assert-equal($test-highest, $expect-highest, + 'Skips media query creation for xxlarge down'); + } + + @include test('Breakpoint (Value Down Range) [function]') { + $expect: '(max-width: 1em)'; + + @include assert-equal(breakpoint(16px down), $expect, + 'Creates a down range out of a pixel value'); + @include assert-equal(breakpoint(1rem down), $expect, + 'Creates a down range out of a rem value'); + @include assert-equal(breakpoint(1em down), $expect, + 'Creates a down range out of an em value'); + } + + @include test('Breakpoint (Empty String) [function]') { + $expect: ''; + + @include assert-equal(breakpoint(small up), $expect, + 'Returns an empty string for the value small up'); + @include assert-equal(breakpoint(0 down), $expect, + 'Returns an empty string for the value 0 down'); + @include assert-equal(breakpoint(0 up), $expect, + 'Returns an empty string for the value 0 up'); + } + + @include test('Breakpoint (Orientation/Retina) [function]') { + @include assert-equal(breakpoint(landscape), '(orientation: landscape)', + 'Creates special media query for landscape'); + @include assert-equal(breakpoint(portrait), '(orientation: portrait)', + 'Creates special media query for portrait'); + @include assert-equal(breakpoint(retina), '(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)', + 'Creates special media query for retina'); + } + + @include test('Breakpoint (Unknown Value) [function]') { + @include assert-equal(breakpoint(xxxxlarge), '', 'Returns an empty string for non-existant media queries'); + } + + @include test('Map Serialize [function]') { + $input: ( + small: 1em, + medium: 2em, + large: 3em, + ); + $test: -zf-bp-serialize($input); + $expect: 'small=1em&medium=2em&large=3em'; + + @include assert-equal($test, $expect, + 'Converts a Sass map into a string'); + } + + @include test('Map Next [function]') { + $input: ( + one: 'One', + two: 'Two', + three: 'Three', + ); + $test_next: -zf-map-next($input, two); + $expect_next: map-get($input, three); + + @include assert-equal($test_next, $expect_next, + 'Returns the next value in a map'); + + $test_last: -zf-map-next($input, three); + $expect_last: null; + + @include assert-equal($test_last, $expect_last, + 'Returns null if the key is last in the map'); + + $test_null: -zf-map-next($input, four); + $expect_null: null; + + @include assert-equal($test_null, $expect_null, + 'Returns null if the key is not in the map'); + } + + @include test('Get Breakpoint Value [function]') { + $config: ( + small: 0, + large: 1, + ); + $test_kittens: -zf-get-bp-val($config, kittens); + $expect_kittens: null; + + @include assert-equal($test_kittens, $expect_kittens, + 'Given a non-existant breakpoint name, return null'); + + $test_match: -zf-get-bp-val($config, large); + $expect_match: 1; + + @include assert-equal($test_match, $expect_match, + 'Given a matching breakpoint, returns the exact value'); + @include assert-equal(-zf-get-bp-val($config, medium), 0, + 'Given a nearby breakpoint, returns the next lowest value'); + @include assert-equal(-zf-get-bp-val($config, xlarge), 1, + 'Given a nearby breakpoint, returns the next lowest value'); + } + +} diff --git a/libraries/foundation-6/test/sass/_color.scss b/libraries/foundation-6/test/sass/_color.scss new file mode 100755 index 00000000..3ae970bf --- /dev/null +++ b/libraries/foundation-6/test/sass/_color.scss @@ -0,0 +1,47 @@ +@import "true"; + +@import '../../scss/global'; +@import '../../scss/util/color'; + +@include test-module('Color') { + + @include test('Foreground (Black) [function]') { + $test: foreground($white); + $expect: $black; + + @include assert-equal($test, $expect, + 'Returns black if the input color is light'); + } + + @include test('Foreground (White) [function]') { + $test: foreground($black); + $expect: $white; + + @include assert-equal($test, $expect, + 'Returns white if the input color is dark'); + } + + @include test('Smart Scale (Darken) [function]') { + $color: $white; + $scale: 5%; + $threshold: 60%; + + $test: smart-scale($color, $scale, $threshold); + $expect: scale-color($color, $lightness: -$scale); + + @include assert-equal($test, $expect, + 'Darkens a light color'); + } + + @include test('Smart Scale (Lighten) [function]') { + $color: $black; + $scale: 5%; + $threshold: 60%; + + $test: smart-scale($color, $scale, $threshold); + $expect: scale-color($color, $lightness: $scale); + + @include assert-equal($test, $expect, + 'Lightens a dark color'); + } +} diff --git a/libraries/foundation-6/test/sass/_components.scss b/libraries/foundation-6/test/sass/_components.scss new file mode 100755 index 00000000..9d93d5a2 --- /dev/null +++ b/libraries/foundation-6/test/sass/_components.scss @@ -0,0 +1,41 @@ +@import "true"; + +@import '../../scss/global'; +@import '../../scss/components/flex-video'; +@import '../../scss/grid/grid'; + +@include test-module('Components') { + + @include test('Flex Video [function]') { + $test: flex-video(3 by 4); + $expect: 4 / 3 * 100%; + + @include assert-equal($test, $expect, + 'Creates a percentage value from a ratio'); + } + + @include test('Grid Column [function]') { + @include assert-equal(grid-column(6), 50%, + 'Creates a column width from a column count'); + @include assert-equal(grid-column(0.5), 50%, + 'Creates a column width from a decimal value'); + @include assert-equal(grid-column(50%), 50%, + 'Creates a column width from a percentage value'); + } + + @include test('Flex Grid Column [function]') { + @include assert-equal(flex-grid-column(), 1 1 0px, + 'Creates an expanding flex property when passed no value'); + @include assert-equal(flex-grid-column(shrink), 0 0 auto, + 'Creates a shrinking flex property when passed shrink'); + @include assert-equal(flex-grid-column(6), 0 0 50%, + 'Creates a fixed flex property from a column count'); + @include assert-equal(flex-grid-column(0.5), 0 0 50%, + 'Creates a fixed flex property from a decimal value'); + @include assert-equal(flex-grid-column(50%), 0 0 50%, + 'Creates a fixed flex property from a percentage value'); + @include assert-equal(flex-grid-column(1 of 2), 0 0 50%, + 'Creates a fixed flex property from an x of y value'); + } + +} diff --git a/libraries/foundation-6/test/sass/_selector.scss b/libraries/foundation-6/test/sass/_selector.scss new file mode 100755 index 00000000..077fa3bf --- /dev/null +++ b/libraries/foundation-6/test/sass/_selector.scss @@ -0,0 +1,17 @@ +@import "true"; + +@import '../../scss/util/selector'; + +@include test-module('Selector') { + + @include test('Selector [function]') { + $test: #{text-inputs(text password)}; + $expect: "[type='text'], [type='password']"; + + //@debug $test; + + @include assert-equal($test, $expect, + 'Creates a selector out of a list of text input types'); + } + +} diff --git a/libraries/foundation-6/test/sass/_unit.scss b/libraries/foundation-6/test/sass/_unit.scss new file mode 100755 index 00000000..dc66b969 --- /dev/null +++ b/libraries/foundation-6/test/sass/_unit.scss @@ -0,0 +1,50 @@ +@import "true"; + +@import '../../scss/util/unit'; + +@include test-module('Units') { + + // Strip Units + @include test('Strip Units [function]') { + $expect: 20; + + @include assert-equal(strip-unit(20px), $expect, + 'Strips the unit from a number'); + @include assert-equal(strip-unit(20), $expect, + 'Returns the same number when given a unitless value'); + } + + // Convert To Rem + @include test('Convert To Rem [function]') { + $expect: 2rem; + + @include assert-equal(-zf-to-rem(32, 16), $expect, + 'Converts a unit to the equivalent in rems'); + @include assert-equal(-zf-to-rem(2rem, 16), $expect, + 'Keeps rem values the same'); + } + + // Rem Calculator + @include test('Rem Calculator [function]') { + $test: rem-calc((8 16 32 64), 16); + $expect: 0.5rem 1rem 2rem 4rem; + + @include assert-equal($test, $expect, + 'Converts an arbitrary number of values into rem equivalents'); + } + + // Breakpoint to Em + @include test('Breakpoint To Em [function]') { + $expect: 1em; + + @include assert-equal(-zf-bp-to-em(16), $expect, + 'Converts a unitless value to em'); + @include assert-equal(-zf-bp-to-em(16px), $expect, + 'Converts a pixel value to em'); + @include assert-equal(-zf-bp-to-em(1rem), $expect, + 'Converts a rem value to em'); + @include assert-equal(-zf-bp-to-em(1em), $expect, + 'Converts an em value to em'); + } + +} diff --git a/libraries/foundation-6/test/sass/_value.scss b/libraries/foundation-6/test/sass/_value.scss new file mode 100755 index 00000000..7b30179e --- /dev/null +++ b/libraries/foundation-6/test/sass/_value.scss @@ -0,0 +1,118 @@ +@import "true"; + +@import '../../scss/util/unit'; +@import '../../scss/util/value'; + +@include test-module('Value') { + + @include test('Value (Not Falsey) [function]') { + $boolean: has-value(true); + $number: has-value(1px); + $color: has-value(#000); + $list: has-value(1px solid black); + $description: 'Returns true if the value is not falsey'; + + @include assert-equal($boolean, true, $description); + @include assert-equal($number, true, $description); + @include assert-equal($color, true, $description); + @include assert-equal($list, true, $description); + } + + @include test('Value (Falsey) [function]') { + $zero: has-value(0px); + $null: has-value(null); + $none: has-value(none); + $empty: has-value(()); + $description: 'Returns false if the value is falsey'; + + @include assert-equal($zero, false, $description); + @include assert-equal($null, false, $description); + @include assert-equal($none, false, $description); + @include assert-equal($empty, false, $description); + } + + @include test('Get Side [function]') { + $valueOne: 1rem; + $testOne: ( + get-side($valueOne, top), + get-side($valueOne, right), + get-side($valueOne, bottom), + get-side($valueOne, left), + ); + $expectOne: (1rem, 1rem, 1rem, 1rem,); + + @include assert-equal($testOne, $expectOne, + 'Returns correct sides when given one side value'); + + $valueTwo: 1rem 2rem; + $testTwo: ( + get-side($valueTwo, top), + get-side($valueTwo, right), + get-side($valueTwo, bottom), + get-side($valueTwo, left), + ); + $expectTwo: (1rem, 2rem, 1rem, 2rem,); + + @include assert-equal($testTwo, $expectTwo, + 'Returns correct sides when given two side values'); + + $valueThree: 1rem 2rem 3rem; + $testThree: ( + get-side($valueThree, top), + get-side($valueThree, right), + get-side($valueThree, bottom), + get-side($valueThree, left), + ); + $expectThree: (1rem, 2rem, 3rem, 2rem,); + + @include assert-equal($testThree, $expectThree, + 'Returns correct sides when given three side values'); + + $valueFour: 1rem 2rem 3rem 4rem; + $testFour: ( + get-side($valueFour, top), + get-side($valueFour, right), + get-side($valueFour, bottom), + get-side($valueFour, left), + ); + $expectFour: (1rem, 2rem, 3rem, 4rem,); + + @include assert-equal($testFour, $expectFour, + 'Returns correct sides when given four side values'); + } + + @include test('Get Border Value [function]') { + $value: 10px dashed green; + $width: get-border-value($value, width); + $style: get-border-value($value, style); + $color: get-border-value($value, color); + $description: 'Returns the right value of a border property'; + + @include assert-equal($width, 10px, $description); + @include assert-equal($style, dashed, $description); + @include assert-equal($color, green, $description); + + $defaultWidth: get-border-value(solid black, width); + $defaultStyle: get-border-value(10px black, style); + $defaultColor: get-border-value(10px solid, color); + $defaultDescription: 'Returns a default value if a property is missing'; + + @include assert-equal($defaultWidth, 0, $defaultDescription); + @include assert-equal($defaultStyle, solid, $defaultDescription); + @include assert-equal($defaultColor, black, $defaultDescription); + } + + @include test('Map Deep Get [function]') { + $map: ( + one: ( + two: 'three', + ), + ); + $expect: 'three'; + + @include assert-equal(map-deep-get($map, one, two), $expect, + 'Gets a value from a nested map'); + } + + // TODO: Add spec for pow() +} diff --git a/libraries/foundation-6/test/sass/test_sass.js b/libraries/foundation-6/test/sass/test_sass.js new file mode 100755 index 00000000..38d0e5d9 --- /dev/null +++ b/libraries/foundation-6/test/sass/test_sass.js @@ -0,0 +1,18 @@ +var path = require('path'); +var sassTrue = require('sass-true'); + +// Test Files +var breakpointFile = path.join(__dirname, '_breakpoint.scss'); +var colorFile = path.join(__dirname, '_color.scss'); +var selectorFile = path.join(__dirname, '_selector.scss'); +var unitFile = path.join(__dirname, '_unit.scss'); +var valueFile = path.join(__dirname, '_value.scss'); +var componentsFile = path.join(__dirname, '_components.scss'); + +// Run Tests +sassTrue.runSass({file: breakpointFile}, describe, it); +sassTrue.runSass({file: colorFile}, describe, it); +sassTrue.runSass({file: selectorFile}, describe, it); +sassTrue.runSass({file: unitFile}, describe, it); +sassTrue.runSass({file: valueFile}, describe, it); +sassTrue.runSass({file: componentsFile}, describe, it); \ No newline at end of file diff --git a/libraries/foundation-6/test/visual/_template.html b/libraries/foundation-6/test/visual/_template.html new file mode 100755 index 00000000..6c7912ab --- /dev/null +++ b/libraries/foundation-6/test/visual/_template.html @@ -0,0 +1,22 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../motion-ui/dist/motion-ui.css" rel="stylesheet" /> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <p>Use this template to create a new test page.</p> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/abide/abide-radio.html b/libraries/foundation-6/test/visual/abide/abide-radio.html new file mode 100755 index 00000000..56debd8b --- /dev/null +++ b/libraries/foundation-6/test/visual/abide/abide-radio.html @@ -0,0 +1,79 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Abide Radio Buttons</h1> + + <p>This form has required radio buttons. If you try to submit without picking one, it + should show an error. When you then pick one, the error should clear and let you submit.</p> + <form id="form" data-abide novalidate> + <div class="alert callout hide" data-abide-error> + <p>This form has errors.</p> + </div> + <fieldset> + <legend>Fieldset Label</legend> + <input required type="radio" name="example1" value="yes" id="example1Yes" /> + <label for="example1Yes">Yes</label> + <input required type="radio" name="example1" value="no" id="example1No" /> + <label for="example1No">No</label> + </fieldset> + <button class="button" type="submit">Submit</button> + <button class="button" type="reset">Reset</button> + </form> + + <hr> + + <p>This form has <strong>one</strong> required radio button. If you try to submit without picking one, it + should show an error. When you then pick one, the error should clear and let you submit.</p> + <form id="form" data-abide novalidate> + <div class="alert callout hide" data-abide-error> + <p>This form has errors.</p> + </div> + <fieldset> + <legend>Fieldset Label</legend> + <input type="radio" name="example3" value="yes" id="example3Yes" /> + <label for="example3Yes">Yes</label> + <input required type="radio" name="example3" value="no" id="example3No" /> + <label for="example3No">No</label> + <input type="radio" name="example3" value="maybe" id="example3Maybe" /> + <label for="example3Maybe">Maybe</label> + </fieldset> + <button class="button" type="submit">Submit</button> + <button class="button" type="reset">Reset</button> + </form> + + <hr> + + <p>This form has optional radio buttons. It should let you submit with or without picking one.</p> + <form id="form" data-abide novalidate> + <div class="alert callout hide" data-abide-error> + <p>This form has errors.</p> + </div> + <fieldset> + <legend>Fieldset Label</legend> + <input type="radio" name="example2" value="yes" id="example2Yes" /> + <label for="example2Yes">Yes</label> + <input type="radio" name="example2" value="no" id="example2No" /> + <label for="example2No">No</label> + </fieldset> + <button class="button" type="submit">Submit</button> + <button class="button" type="reset">Reset</button> + </form> + + <hr> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/abide/hidden_and_ignored_fields.html b/libraries/foundation-6/test/visual/abide/hidden_and_ignored_fields.html new file mode 100755 index 00000000..5c9bf34a --- /dev/null +++ b/libraries/foundation-6/test/visual/abide/hidden_and_ignored_fields.html @@ -0,0 +1,51 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Abide: Hidden and Ignored Fields</h1> + <div class="callout"> + <p>This form has a hidden field and a required text field.</p> + <p>Errors should be displayed properly.</p> + + <form data-abide novalidate> + <input required type="text" placeholder="Required - try submitting without a value"> + <span class='form-error'>This field is required</span> + <input type="hidden" value="foo"> + <button type="submit" class="button">Submit</button> + <button type="reset" class="button">Reset</button> + </form> + </div> + <div class="callout"> + <p>This form has a required text field and an ignored field that is ignored after page load.</p> + <p>The ignored field should be ignored.</p> + <form data-abide novalidate> + <div class="row column"> + <input required type="text" placeholder="Required"> + <span class='form-error'>This field is required</span> + </div> + <div class="row column"> + <input required id="ignoreAfter" type="text" placeholder="Ignored"> + <span class='form-error'>You should never see this error!</span> + </div> + <button type="submit" class="button">Submit</button> + <button type="reset" class="button">Reset</button> + </form> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + Foundation.Abide.defaults.patterns['customPattern'] = /^\w{4,16}$/; + $(document).foundation(); + $("#ignoreAfter").attr("data-abide-ignore", true); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/abide/text.html b/libraries/foundation-6/test/visual/abide/text.html new file mode 100755 index 00000000..cad1fdd6 --- /dev/null +++ b/libraries/foundation-6/test/visual/abide/text.html @@ -0,0 +1,115 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Abide: Text Fields</h1> + + <p>This form has one required text field and one optional text field.</p> + + <form data-abide novalidate> + <input required type="text" placeholder="Required"> + <input type="text" placeholder="Not required"> + <button type="submit" class="button">Submit</button> + <button type="reset" class="button">Reset</button> + </form> + + <hr> + + <p>This form has valid and invalid inputs for other text input types. (In browsers that support color pickers, you won't see a text field, but a color selection button instead.)</p> + + <form data-abide novalidate> + <fieldset> + <legend>color</legend> + <input type="color" required value="#ffffff"> + <input type="color" required value="wefwf89"> + </fieldset> + + <fieldset> + <legend>date</legend> + <input type="date" required value="1970-01-31"> + <input type="date" required value="dwepdw9449tbv"> + </fieldset> + + <fieldset> + <legend>datetime</legend> + <input type="datetime" required value="1970-01-31T05:30:00Z"> + <input type="datetime" required> + </fieldset> + + <fieldset> + <legend>email</legend> + <input type="email" required value="foundation@zurb.com"> + <input type="email" required value="notanemail.lol"> + </fieldset> + + <fieldset> + <legend>month</legend> + <input type="month" required value="2016-01"> + <input type="month" required value="10293"> + </fieldset> + + <fieldset> + <legend>number</legend> + <input type="number" required value="1"> + <input type="number" required value="lol"> + </fieldset> + + <fieldset> + <legend>search</legend> + <input type="search" required> + </fieldset> + + <fieldset> + <legend>tel</legend> + <input type="tel" required value="3175554848"> + <input type="tel" required value="lol"> + </fieldset> + + <fieldset> + <legend>time</legend> + <input type="time" required value="05:30:00"> + <input type="time" required value="x:du:dwef"> + </fieldset> + + <fieldset> + <legend>url</legend> + <input type="url" required value="http://foundation.zurb.com"> + <input type="url" required value="foundation@zurb.com"> + </fieldset> + + <fieldset> + <legend>week</legend> + <input type="week" required value="2016-W01"> + <input type="week" required value="101223"> + </fieldset> + + <button type="submit" class="button">Submit</button> + <button type="reset" class="button">Reset</button> + </form> + + <hr> + + <p>This field uses a custom pattern. The field is valid if the input is between 4 and 16 characters long.</p> + + <form data-abide novalidate> + <input required type="text" pattern="customPattern"> + <button type="submit" class="button">Submit</button> + <button type="reset" class="button">Reset</button> + </form> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + Foundation.Abide.defaults.patterns['customPattern'] = /^\w{4,16}$/; + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/accordion-menu/keyboard.html b/libraries/foundation-6/test/visual/accordion-menu/keyboard.html new file mode 100755 index 00000000..cc7b7add --- /dev/null +++ b/libraries/foundation-6/test/visual/accordion-menu/keyboard.html @@ -0,0 +1,39 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Accordion Menu: Keyboard Control</h1> + + <ul> + <li>The Tab and down arrow keys should navigate down the menu, including open sub-menus.</li> + <li>Shift-tab and up arrow keys should navigate up the menu, including open sub-menus.</li> + <li>When focused on a parent menu, the space bar and Enter key should open or close the menu.</li> + <li>When focused on a link item, the space bar and Center key should navigate to the link.</li> + </ul> + + <ul class="vertical menu" data-accordion-menu> + <li> + <a href="#">Item 1</a> + <ul class="menu vertical nested"> + <li><a href="google.com">External link</a></li> + <li><a href="#">Item 1B</a></li> + </ul> + </li> + <li><a href="#">Item 2</a></li> + </ul> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/accordion/focus.html b/libraries/foundation-6/test/visual/accordion/focus.html new file mode 100755 index 00000000..dce57aeb --- /dev/null +++ b/libraries/foundation-6/test/visual/accordion/focus.html @@ -0,0 +1,73 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Accordion: Focus Management</h1> + + <p>This is a stock accordion. The tab key will cycle through accordion panes without opening/closing. The up/down arrow keys will cycle through accordion panes, opening the one you move to, and closing the one you move away from.</p> + + <ul class="accordion" data-accordion role="tablist"> + <li class="accordion-item is-active"> + <a href="#panel-1-1" role="tab" class="accordion-title" id="panel-1-1-heading" aria-controls="panel-1-1">Accordion Panel One</a> + <div id="panel-1-1" class="accordion-content" role="tabpanel" data-tab-content aria-labelledby="panel-1-1-heading"> + <p>Panel one content goes here: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam pharetra sodales nulla, eu consequat quam fringilla sed. Suspendisse potenti. Nam ac condimentum mi. Quisque enim arcu, dapibus nec congue nec, luctus non est.</p> + </div> + </li> + + <li class="accordion-item"> + <a href="#panel-1-2" role="tab" class="accordion-title" id="panel-1-2-heading" aria-controls="panel-1-2">Accordion Panel Two</a> + <div id="panel-1-2" class="accordion-content" role="tabpanel" data-tab-content aria-labelledby="panel-1-2-heading"> + <p>Panele two content goes here: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam pharetra sodales nulla, eu consequat quam fringilla sed. Suspendisse potenti. Nam ac condimentum mi. Quisque enim arcu, dapibus nec congue nec, luctus non est.</p> + </div> + </li> + + <li class="accordion-item"> + <a href="#panel-1-3" role="tab" class="accordion-title" id="panel-1-3-heading" aria-controls="panel-1-3">Accordion Panel Three</a> + <div id="panel-1-3" class="accordion-content" role="tabpanel" data-tab-content aria-labelledby="panel-1-3-heading"> + <p>Panel three content goes here: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam pharetra sodales nulla, eu consequat quam fringilla sed. Suspendisse potenti. Nam ac condimentum mi. Quisque enim arcu, dapibus nec congue nec, luctus non est.</p> + </div> + </li> + </ul> + + <hr> + + <p>This is an accordion with multiExpand set to "true". Using the up/down arrow keys will cycle between accordion titles <em>without opening/closing them</em>, and pressing space will open or close a pane.</p> + + <ul class="accordion" data-accordion role="tablist" data-multi-expand="true"> + <li class="accordion-item is-active"> + <a href="#panel-1-1" role="tab" class="accordion-title" id="panel-1-1-heading" aria-controls="panel-1-1">Accordion Panel One</a> + <div id="panel-1-1" class="accordion-content" role="tabpanel" data-tab-content aria-labelledby="panel-1-1-heading"> + <p>Panel one content goes here: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam pharetra sodales nulla, eu consequat quam fringilla sed. Suspendisse potenti. Nam ac condimentum mi. Quisque enim arcu, dapibus nec congue nec, luctus non est.</p> + </div> + </li> + + <li class="accordion-item"> + <a href="#panel-1-2" role="tab" class="accordion-title" id="panel-1-2-heading" aria-controls="panel-1-2">Accordion Panel Two</a> + <div id="panel-1-2" class="accordion-content" role="tabpanel" data-tab-content aria-labelledby="panel-1-2-heading"> + <p>Panele two content goes here: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam pharetra sodales nulla, eu consequat quam fringilla sed. Suspendisse potenti. Nam ac condimentum mi. Quisque enim arcu, dapibus nec congue nec, luctus non est.</p> + </div> + </li> + + <li class="accordion-item"> + <a href="#panel-1-3" role="tab" class="accordion-title" id="panel-1-3-heading" aria-controls="panel-1-3">Accordion Panel Three</a> + <div id="panel-1-3" class="accordion-content" role="tabpanel" data-tab-content aria-labelledby="panel-1-3-heading"> + <p>Panel three content goes here: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam pharetra sodales nulla, eu consequat quam fringilla sed. Suspendisse potenti. Nam ac condimentum mi. Quisque enim arcu, dapibus nec congue nec, luctus non est.</p> + </div> + </li> + </ul> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/accordion/item-attributes.html b/libraries/foundation-6/test/visual/accordion/item-attributes.html new file mode 100755 index 00000000..72259977 --- /dev/null +++ b/libraries/foundation-6/test/visual/accordion/item-attributes.html @@ -0,0 +1,80 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Accordion: Item Attributes</h1> + + <p>Accordion items can be defined as <code><li></code>s, or by having the attribute <code>data-accordion-item</code>.</p> + + <hr> + + <p>This accordion uses list items and has no attribute.</p> + + <ul class="accordion" data-accordion> + <li class="accordion-item is-active"> + <a href="#" class="accordion-title">Accordion 1</a> + <div class="accordion-content" data-tab-content> + Item + </div> + </li> + <li class="accordion-item"> + <a href="#" class="accordion-title">Accordion 2</a> + <div class="accordion-content" data-tab-content> + Item + </div> + </li> + </ul> + + <hr> + + <p>This accordion uses generic tags with an attribute.</p> + + <div class="accordion" data-accordion> + <div class="accordion-item is-active" data-accordion-item> + <a href="#" class="accordion-title">Accordion 1</a> + <div class="accordion-content" data-tab-content> + Item + </div> + </div> + <div class="accordion-item" data-accordion-item> + <a href="#" class="accordion-title">Accordion 2</a> + <div class="accordion-content" data-tab-content> + Item + </div> + </div> + </div> + + <hr> + + <p>This accordion mixes both methods.</p> + + <div class="accordion" data-accordion> + <li class="accordion-item is-active"> + <a href="#" class="accordion-title">Accordion 1</a> + <div class="accordion-content" data-tab-content> + Item + </div> + </li> + <div class="accordion-item" data-accordion-item> + <a href="#" class="accordion-title">Accordion 2</a> + <div class="accordion-content" data-tab-content> + Item + </div> + </div> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/accordion/nested.html b/libraries/foundation-6/test/visual/accordion/nested.html new file mode 100755 index 00000000..55a4d2af --- /dev/null +++ b/libraries/foundation-6/test/visual/accordion/nested.html @@ -0,0 +1,68 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + <style> + .accordion-title[aria-expanded="true"] { + border-top: 1px solid dodgerblue; + } + + .accordion-title[aria-selected="true"] { + border-bottom: 1px solid red; + } + </style> +</head> +<body> + <div class="row column"> + <h1>Accordion: Nesting</h1> + + <p>These are nested accordions.</p> + + <ul> + <li>A title with <code>aria-expanded="true"</code> has a blue border.</li> + <li>A title with <code>aria-selected="true"</code> has a red border.</li> + <li>An open item should have <strong>both borders</strong>.</li> + <li>Manipulating one accordion shouldn't affect the other.</li> + </ul> + + <ul class="accordion" data-accordion> + <li class="accordion-item is-active" data-accordion-item> + <a href="#" class="accordion-title">Accordion 1</a> + <div class="accordion-content" data-tab-content> + <p>Base Accordion</p> + <ul class="accordion" data-accordion data-multi-expand="true" data-allow-all-closed="true"> + <li class="accordion-item is-active" data-accordion-item> + <a href="#" class="accordion-title">Accordion 1</a> + <div class="accordion-content" data-tab-content> + Nested Accordion + </div> + </li> + <li class="accordion-item" data-accordion-item> + <a href="#" class="accordion-title">Accordion 1</a> + <div class="accordion-content" data-tab-content> + Nested Accordion + </div> + </li> + </ul> + </div> + </li> + <li class="accordion-item" data-accordion-item> + <a href="#" class="accordion-title">Accordion 1</a> + <div class="accordion-content" data-tab-content> + <p>Base Accordion</p> + </div> + </li> + </ul> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> +</body> +</html> diff --git a/libraries/foundation-6/test/visual/drilldown/drilldown-menu-parent-link.html b/libraries/foundation-6/test/visual/drilldown/drilldown-menu-parent-link.html new file mode 100755 index 00000000..b1f885f4 --- /dev/null +++ b/libraries/foundation-6/test/visual/drilldown/drilldown-menu-parent-link.html @@ -0,0 +1,67 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + <style> + .is-submenu-parent-item { + background: #eee; + } + </style> + </head> + <body> + <div class="medium-6 row column"> + <p>Parent links should be added to the top of their sub-menu as a link.</p> + + <ul class="vertical menu" data-drilldown data-parent-link="true"> + <li> + <a href="http://foundation.zurb.com/develop/getting-started.html">Develop</a> + <ul class="vertical menu"> + <li><a href="http://foundation.zurb.com/sites.html">Foundation for Sites</a></li> + <li><a href="http://foundation.zurb.com/emails.html">Foundation for Email</a></li> + <li><a href="http://foundation.zurb.com/apps.html">Foundation for Apps</a></li> + <li><a href="http://foundation.zurb.com/templates.html">HTML Templates</a></li> + <li><a href="http://foundation.zurb.com/sites/resources.html">Resources</a></li> + <li><a href="http://foundation.zurb.com/develop/building-blocks.html">Building Blocks</a></li> + <li><a href="http://foundation.zurb.com/develop/yeti-launch.html">Yeti Launch</a></li> + <li><a href="http://foundation.zurb.com/develop/contribute.html">Contribute</a></li> + </ul> + </li> + <li><a href="#">Item</a></li> + <li> + <a href="http://foundation.zurb.com/develop/getting-started.html">Top level Item</a> + <ul class="vertical menu"> + <li><a href="http://foundation.zurb.com/sites.html">Foundation for Sites</a></li> + <li><a href="http://foundation.zurb.com/emails.html">Foundation for Email</a></li> + <li><a href="http://foundation.zurb.com/apps.html">Foundation for Apps</a></li> + <li> + <a href="http://foundation.zurb.com/support/support.html">2nd level Item</a> + <ul class="vertical menu"> + <li><a href="http://foundation.zurb.com/sites.html">Foundation for Sites</a></li> + <li><a href="http://foundation.zurb.com/emails.html">Foundation for Email</a></li> + <li><a href="http://foundation.zurb.com/apps.html">Foundation for Apps</a></li> + <li> + <a href="http://foundation.zurb.com/support/premium-support.html">3rd level Item</a> + <ul class="vertical menu"> + <li><a href="http://foundation.zurb.com/sites.html">Foundation for Sites</a></li> + <li><a href="http://foundation.zurb.com/emails.html">Foundation for Email</a></li> + <li><a href="http://foundation.zurb.com/apps.html">Foundation for Apps</a></li> + </ul> + </li> + </ul> + </li> + </ul> + </li> + </ul> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/drilldown/long-drilldown-menu.html b/libraries/foundation-6/test/visual/drilldown/long-drilldown-menu.html new file mode 100755 index 00000000..70b0326a --- /dev/null +++ b/libraries/foundation-6/test/visual/drilldown/long-drilldown-menu.html @@ -0,0 +1,50 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + <style> + .is-drilldown-submenu { + background: #eee; + } + </style> + </head> + <body> + <div class="medium-6 row column"> + <p>Submenus should not be cut off at the bottom.</p> + + <ul class="vertical menu" data-drilldown> + <li> + <a href="#">Item</a> + <ul class="vertical menu"> + <li><a href="#">Item</a></li> + <li><a href="#">Item</a></li> + <li><a href="#">Item</a></li> + <li><a href="#">Item</a></li> + <li><a href="#">Item</a></li> + <li><a href="#">Item</a></li> + <li><a href="#">Item</a></li> + <li><a href="#">Item</a></li> + <li><a href="#">Item</a></li> + <li><a href="#">Item</a></li> + <li><a href="#">Item</a></li> + <li><a href="#">Item</a></li> + <li><a href="#">Item</a></li> + <li><a href="#">Item</a></li> + <li><a href="#">Item</a></li> + </ul> + </li> + <li><a href="#">Item</a></li> + </ul> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/dropdown-menu/basic-dropdown-menu-rtl.html b/libraries/foundation-6/test/visual/dropdown-menu/basic-dropdown-menu-rtl.html new file mode 100755 index 00000000..3f548c4d --- /dev/null +++ b/libraries/foundation-6/test/visual/dropdown-menu/basic-dropdown-menu-rtl.html @@ -0,0 +1,52 @@ +<html dir="rtl"> + +<head> + <link href="http://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css" rel="stylesheet"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <link href="../assets/css/foundation-rtl.css" rel="stylesheet" /> + + <style> + + + </style> +</head> + +<body> + + <h1>Dropdown Menu: RTL</h1> + + <p>First-level dropdowns should anchor to the bottom-right of the parent item.</p> + + <p>Second-level dropdowns should anchor to the top-left of the parent item.</p> + + <ul class="dropdown menu" data-dropdown-menu> + <li> + <a href="#">Item 1</a> + <ul class="menu"> + <li><a href="#">Item 1A</a></li> + <!-- ... --> + </ul> + </li> + <li><a href="#">Item 2</a></li> + <li><a href="#">Item 3</a></li> + <li><a href="#">Item 4</a> + <ul class="menu"> + <li><a href="#">Item 4A</a></li> + <li><a href="#">Item 4B</a> + <ul class="menu"> + <li><a href="#">Item 4BA</a></li> + </ul> + </li> + <li><a href="#">Item 4C</a></li> + </ul> + </li> + </ul> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> +</body> +</html> diff --git a/libraries/foundation-6/test/visual/dropdown-menu/right-aligned-dropdown-menu.html b/libraries/foundation-6/test/visual/dropdown-menu/right-aligned-dropdown-menu.html new file mode 100755 index 00000000..f00bd659 --- /dev/null +++ b/libraries/foundation-6/test/visual/dropdown-menu/right-aligned-dropdown-menu.html @@ -0,0 +1,135 @@ +<html> + +<head> + <link href="http://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css" rel="stylesheet"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <link href="../assets/css/foundation.css" rel="stylesheet" /> + + <style> + + + </style> +</head> + +<body> + + <h1>Dropdown Menu: Right aligned</h1> + <p>This dropdown menu is aligned right using <code>.top-bar-right</code> class.</p> + <div class="title-bar" data-responsive-toggle="main-menu" data-hide-for="medium"> + <button class="menu-icon" type="button" data-toggle></button> + <div class="title-bar-title">Menu</div> + </div> + + <div class="top-bar" id="main-menu"> + <div class="top-bar-left"> + <ul class="dropdown menu" data-dropdown-menu> + <li class="menu-text"><strong>Site Title</strong></li> + </ul> + </div> + <div class="top-bar-right"> + <ul class="menu vertical medium-horizontal" data-responsive-menu="drilldown medium-dropdown"> + <li> + <a>Item 1</a> + <ul class="menu"> + <li><a href="#Item-1A">Item 1A</a></li> + <li> + <a href="#Item-1B">Item 1B</a> + <ul class="menu"> + <li><a href="#Item-1Bi">Item 1B i</a></li> + <li><a href="#Item-1Bii">Item 1B ii</a></li> + <li> + <a href="#Item-1Biii">Item 1B iii</a> + <ul class="menu"> + <li><a href="#Item-1Biiialpha">Item 1B iii alpha</a></li> + <li><a href="#Item-1Biiiomega">Item 1B iii omega</a></li> + </ul> + </li> + <li> + <a href="#Item-1Biv">Item 1B iv</a> + <ul class="menu"> + <li><a href="#Item-1Bivalpha">Item 1B iv alpha</a></li> + </ul> + </li> + </ul> + </li> + <li><a href="#Item-1C">Item 1C</a></li> + </ul> + </li> + <li> + <a href="#Item-2">Item 2</a> + <ul class="menu"> + <li><a href="#Item-2A">Item 2A</a></li> + <li><a href="#Item-2B">Item 2B</a></li> + </ul> + </li> + <li><a href="#Item-3">Item 3</a></li> + <li><a href="#Item-4">Item 4</a></li> + + </ul> + </div> + </div> + + <p>This dropdown menu is positioned right just by the content before it.</p> + <div class="title-bar" data-responsive-toggle="main-menu" data-hide-for="medium"> + <button class="menu-icon" type="button" data-toggle></button> + <div class="title-bar-title">Menu</div> + </div> + + <div class="top-bar" id="main-menu"> + <div class="top-bar-left"> + <ul class="dropdown menu" data-dropdown-menu> + <li class="menu-text"><strong>Site Title</strong></li> + <li class="menu-text">Some long text to push the menu.</li> + <li class="menu-text">You might need to resize the window so that the menu just fits in this line...</li> + </ul> + </div> + <div class=""> + <ul class="menu vertical medium-horizontal" data-responsive-menu="drilldown medium-dropdown"> + <li> + <a>Item 1</a> + <ul class="menu"> + <li><a href="#Item-1A">Item 1A</a></li> + <li> + <a href="#Item-1B">Item 1B</a> + <ul class="menu"> + <li><a href="#Item-1Bi">Item 1B i</a></li> + <li><a href="#Item-1Bii">Item 1B ii</a></li> + <li> + <a href="#Item-1Biii">Item 1B iii</a> + <ul class="menu"> + <li><a href="#Item-1Biiialpha">Item 1B iii alpha</a></li> + <li><a href="#Item-1Biiiomega">Item 1B iii omega</a></li> + </ul> + </li> + <li> + <a href="#Item-1Biv">Item 1B iv</a> + <ul class="menu"> + <li><a href="#Item-1Bivalpha">Item 1B iv alpha</a></li> + </ul> + </li> + </ul> + </li> + <li><a href="#Item-1C">Item 1C</a></li> + </ul> + </li> + <li> + <a href="#Item-2">Item 2</a> + <ul class="menu"> + <li><a href="#Item-2A">Item 2A</a></li> + <li><a href="#Item-2B">Item 2B</a></li> + </ul> + </li> + <li><a href="#Item-3">Item 3</a></li> + <li><a href="#Item-4">Item 4</a></li> + </ul> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> +</body> +</html> diff --git a/libraries/foundation-6/test/visual/dropdown-menu/submenu-mouse-reenter.html b/libraries/foundation-6/test/visual/dropdown-menu/submenu-mouse-reenter.html new file mode 100755 index 00000000..36b47089 --- /dev/null +++ b/libraries/foundation-6/test/visual/dropdown-menu/submenu-mouse-reenter.html @@ -0,0 +1,59 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <div class="callout">Move the Mouse on Item 1 -> Item 1B -> Item 1B iii -> Submenu, then leave the Pane and quick reenter it before it close. Pane should stay open</div> + <ul class="dropdown menu" data-dropdown-menu> + <li> + <a>Item 1</a> + <ul class="menu"> + <li><a href="#">Item 1A</a></li> + <li> + <a href="#">Item 1B</a> + <ul class="menu"> + <li><a href="#">Item 1B i</a></li> + <li><a href="#">Item 1B ii</a></li> + <li> + <a href="#">Item 1B iii</a> + <ul class="menu"> + <li><a href="#">Item 1B iii alpha</a></li> + <li><a href="#">Item 1B iii omega</a></li> + </ul> + </li> + <li> + <a href="#">Item 1B iv</a> + <ul class="menu"> + <li><a href="#">Item 1B iv alpha</a></li> + </ul> + </li> + </ul> + </li> + <li><a href="#">Item 1C</a></li> + </ul> + </li> + <li> + <a href="#">Item 2</a> + <ul class="menu"> + <li><a href="#">Item 2A</a></li> + <li><a href="#">Item 2B</a></li> + </ul> + </li> + <li><a href="#">Item 3</a></li> + <li><a href="#">Item 4</a></li> + </ul> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/dropdown/basic-dropdown-rtl.html b/libraries/foundation-6/test/visual/dropdown/basic-dropdown-rtl.html new file mode 100755 index 00000000..60d793e1 --- /dev/null +++ b/libraries/foundation-6/test/visual/dropdown/basic-dropdown-rtl.html @@ -0,0 +1,50 @@ +<html dir="rtl"> + +<head> + <link href="http://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css" rel="stylesheet"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <link href="../assets/css/foundation-rtl.css" rel="stylesheet" /> + + <style> + + + </style> +</head> + +<body> + <h1>Dropdown: RTL</h1> + + <p>Bottom aligned:</p> + + <button class="button" type="button" data-toggle="example-dropdown">Toggle Dropdown</button> + <div class="dropdown-pane" id="example-dropdown" data-dropdown data-auto-focus="true"> + <p>This is a dropdown.</p> + </div> + + + <button class="button" type="button" data-toggle="example-dropdown-1">Hoverable Dropdown</button> + <div class="dropdown-pane" id="example-dropdown-1" data-dropdown data-hover="true" data-hover-pane="true"> + <p>This is a dropdown.</p> + </div> + + <p>Top aligned:</p> + + <button class="button" type="button" data-toggle="example-dropdown-2">Toggle Dropdown</button> + <div class="dropdown-pane top" id="example-dropdown-2" data-dropdown data-auto-focus="true"> + <p>This is a dropdown.</p> + </div> + + + <button class="button" type="button" data-toggle="example-dropdown-3">Hoverable Dropdown</button> + <div class="dropdown-pane top" id="example-dropdown-3" data-dropdown data-hover="true" data-hover-pane="true"> + <p>This is a dropdown.</p> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> +</body> +</html> diff --git a/libraries/foundation-6/test/visual/dropdown/close-on-click.html b/libraries/foundation-6/test/visual/dropdown/close-on-click.html new file mode 100755 index 00000000..8da04688 --- /dev/null +++ b/libraries/foundation-6/test/visual/dropdown/close-on-click.html @@ -0,0 +1,37 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Dropdown: closeOnClick option</h1> + + <p>This dropdown will only close if you click the button again.</p> + + <button class="dropdown button" type="button" data-toggle="dropdown1">Toggle Dropdown</button> + <div id="dropdown1" class="dropdown-pane" data-dropdown> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Expedita mollitia veritatis dicta aspernatur vel reiciendis, fugit. Similique delectus laboriosam aperiam, unde debitis at minus hic rerum repudiandae, officiis iusto deleniti!</p> + </div> + + <hr> + + <p>This dropdown will close if you click anywhere outside of it.</p> + + <button class="dropdown button" type="button" data-toggle="dropdown2">Toggle Dropdown</button> + <div id="dropdown2" class="dropdown-pane" data-dropdown data-close-on-click="true"> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Expedita mollitia veritatis dicta aspernatur vel reiciendis, fugit. Similique delectus laboriosam aperiam, unde debitis at minus hic rerum repudiandae, officiis iusto deleniti!</p> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/dropdown/in-top-bar.html b/libraries/foundation-6/test/visual/dropdown/in-top-bar.html new file mode 100755 index 00000000..2470fe47 --- /dev/null +++ b/libraries/foundation-6/test/visual/dropdown/in-top-bar.html @@ -0,0 +1,55 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Dropdown: Inside Top Bar</h1> + + <p>Text fields inside of a top bar should not be super long.</p> + + <div class="top-bar"> + <div class="top-bar-left"> + <ul class="dropdown menu" data-dropdown-menu> + <li class="menu-text">Site Title</li> + </ul> + </div> + <div class="top-bar-right"> + <ul class="menu"> + <li> + <button class="button" type="button" data-toggle="example-dropdown">Toggle Dropdown</button> + <div class="dropdown-pane" id="example-dropdown" data-dropdown data-auto-focus="true"> + Example form in a dropdown. + <form> + <div class="row"> + <div class="medium-6 columns"> + <label>Name + <input type="text" placeholder="Kirk, James T."> + </label> + </div> + <div class="medium-6 columns"> + <label>Rank + <input type="text" placeholder="Captain"> + </label> + </div> + </div> + </form> + </div> + </li> + </ul> + </div> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/dropdown/long.html b/libraries/foundation-6/test/visual/dropdown/long.html new file mode 100755 index 00000000..458b218e --- /dev/null +++ b/libraries/foundation-6/test/visual/dropdown/long.html @@ -0,0 +1,51 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Dropdown: Long Content</h1> + + <p>This dropdown should not go full-width, even if its contents are higher than the width of the window.</p> + + <button class="button" type="button" data-toggle="example-dropdown">Toggle Dropdown</button> + <div class="dropdown-pane" id="example-dropdown" data-dropdown data-auto-focus="true"> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + <p>This is a dropdown.</p> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/equalizer/equalizer-events.html b/libraries/foundation-6/test/visual/equalizer/equalizer-events.html new file mode 100755 index 00000000..48e22608 --- /dev/null +++ b/libraries/foundation-6/test/visual/equalizer/equalizer-events.html @@ -0,0 +1,88 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h4>I Fire preequalized and postequalized on medium-up and also after _pauseEvents</h4> + </div> + <div class="row" data-equalizer data-equalize-on-stack="false" data-equalize-on="medium" id="equalizer1"> + <div class="small-12 medium-3 columns"> + <div class="callout"> + <div class="callout" data-equalizer-watch>Test</div> + </div> + </div> + <div class="small-12 medium-3 columns"> + <div class="callout"> + <div class="callout" data-equalizer-watch>Test</div> + </div> + </div> + <div class="small-12 medium-3 columns"> + <div class="callout"> + <div class="callout" data-equalizer-watch>Test</div> + </div> + </div> + <div class="small-12 medium-3 columns"> + <div class="callout"> + <div class="callout" data-equalizer-watch>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fuga officia iste ut distinctio magni accusantium, optio ipsa at cupiditate sequi!</div> + </div> + </div> + </div> + <div class="row column"> + <h4>I Fire preequalized, preequalizedrow, postequalizedrow, postequalized, resizeme</h4> + </div> + <div class="row" data-equalizer data-equalize-by-row="true" id="equalizer2"> + <div class="small-12 medium-6 columns"> + <div class="callout"> + <div class="callout" data-equalizer-watch>Test</div> + </div> + </div> + <div class="small-12 medium-6 columns"> + <div class="callout"> + <div class="callout" data-equalizer-watch>Test</div> + </div> + </div> + <div class="small-12 medium-6 columns"> + <div class="callout"> + <div class="callout" data-equalizer-watch>Test</div> + </div> + </div> + <div class="small-12 medium-6 columns"> + <div class="callout"> + <div class="callout" data-equalizer-watch>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Libero dolore inventore quibusdam deleniti a ipsa laborum, illo, soluta quas velit?</div> + </div> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $('[data-equalizer]').on('preequalized.zf.equalizer',function(e){ + console.log($(this).attr('id')+' '+e.type); + }); + + $('[data-equalizer]').on('preequalizedrow.zf.equalizer',function(e){ + console.log($(this).attr('id')+' '+e.type); + }); + + $('[data-equalizer]').on('postequalizedrow.zf.equalizer',function(e){ + console.log($(this).attr('id')+' '+e.type); + }); + + $('[data-equalizer]').on('postequalized.zf.equalizer',function(e){ + console.log($(this).attr('id')+' '+e.type); + }); + + $('[data-equalizer]').on('resizeme.zf.trigger',function(e){ + console.log($(this).attr('id')+' '+e.type); + }); + + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/flex-grid/column-row.html b/libraries/foundation-6/test/visual/flex-grid/column-row.html new file mode 100755 index 00000000..2ff657e0 --- /dev/null +++ b/libraries/foundation-6/test/visual/flex-grid/column-row.html @@ -0,0 +1,26 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation-flex.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <style>.row.column {border: 1px solid #333;}</style> + <h1>Flex Grid: Column Row</h1> + + <p>This text is inside a combined column/row.</p> + + <p>An element with the classes <code>.row</code> and <code>.column</code> should have <code>display: block</code> and not <code>display: flex</code>, so the elements inside flow normally.</p> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/flex-grid/nesting.html b/libraries/foundation-6/test/visual/flex-grid/nesting.html new file mode 100755 index 00000000..e5992db2 --- /dev/null +++ b/libraries/foundation-6/test/visual/flex-grid/nesting.html @@ -0,0 +1,44 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation-flex.css" rel="stylesheet" /> + <style> + .test-1 { + border: 1px solid #333; + } + + .test-2 { + background: #ccc; + } + </style> + </head> + <body> + <div class="row"> + <div class="column"> + <h1>Flex Grid: Nesting</h1> + + <p>These are two nested grids. They should both fill the width of the window.</p> + </div> + </div> + + <div class="row expanded test-1"> + <div class="column"> + <div class="row test-2"> + <div class="column"> + <p>This is a grid.</p> + </div> + </div> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/flex-grid/unstack-block-grid.html b/libraries/foundation-6/test/visual/flex-grid/unstack-block-grid.html new file mode 100755 index 00000000..dfcf9134 --- /dev/null +++ b/libraries/foundation-6/test/visual/flex-grid/unstack-block-grid.html @@ -0,0 +1,49 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation-flex.css" rel="stylesheet" /> + <style> + .column .column { + background: #eee; + } + .column .column .column { + background: #ddd; + } + </style> + </head> + <body> + <div class="row"> + <div class="column"> + <h1>Flex Grid: Unstack and Block Grid</h1> + + <p>The top-level row has the class <code>.medium-unstack</code>, which means child columns stack on small, and sit side-by-side on medium screens and up.</p> + + <p>The nested row has the class <code>.up-3</code>, which means its columns are 33% width no matter the screen size.</p> + + <p>These two features should not interact. The two top-level columns always stack on small, and the three nested columns always stay the exact same percentage width.</p> + + <div class="row medium-unstack"> + <div class="column"> + <strong>Column One</strong> + <div class="row up-3"> + <div class="column">Block Grid Column One</div> + <div class="column">Block Grid Column Two</div> + <div class="column">Block Grid Column Three</div> + </div> + </div> + <div class="column"><strong>Column Two</strong></div> + </div> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/grid/nesting.html b/libraries/foundation-6/test/visual/grid/nesting.html new file mode 100755 index 00000000..9bf55881 --- /dev/null +++ b/libraries/foundation-6/test/visual/grid/nesting.html @@ -0,0 +1,44 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + <style> + .test-1 { + background: red; + } + + .test-2 { + background: #ccc; + } + </style> + </head> + <body> + <div class="row"> + <div class="column"> + <h1>Flex Grid: Nesting</h1> + + <p>These are two nested grids. They should both fill the width of the window.</p> + </div> + </div> + + <div class="row expanded test-1"> + <div class="column"> + <div class="row expanded test-2"> + <div class="column"> + <p>This is a grid.</p> + </div> + </div> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/orbit/touch.html b/libraries/foundation-6/test/visual/orbit/touch.html new file mode 100755 index 00000000..aabe82a7 --- /dev/null +++ b/libraries/foundation-6/test/visual/orbit/touch.html @@ -0,0 +1,63 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + <style> + .orbit-slide { + padding: 1rem; + } + </style> + </head> + <body> + <div class="row column"> + <h1>Orbit: Touch Support</h1> + + <p>Swiping left and right should change the current slide. Swiping up and down to scroll the page should not be disrupted.</p> + + <p>This content is here to make the page longer. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid facere architecto fugit voluptates, inventore est cum nihil vel dicta assumenda, illum. Ipsum non saepe similique repellat, enim blanditiis fuga eveniet.</p> + + <div class="orbit" role="region" aria-label="Favorite Space Pictures" data-orbit data-use-m-u-i="false"> + <ul class="orbit-container"> + <button class="orbit-previous"><span class="show-for-sr">Previous Slide</span>◀︎</button> + <button class="orbit-next"><span class="show-for-sr">Next Slide</span>▶︎</button> + <li class="is-active orbit-slide" style="background: #eee;"> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam minima amet cupiditate pariatur doloribus, quo repudiandae facere odio ipsam laborum nihil, voluptate itaque perspiciatis dolorem aut nostrum! Autem, exercitationem, nesciunt!</p> + </li> + <li class="orbit-slide" style="background: #ddd;"> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam minima amet cupiditate pariatur doloribus, quo repudiandae facere odio ipsam laborum nihil, voluptate itaque perspiciatis dolorem aut nostrum! Autem, exercitationem, nesciunt!</p> + </li> + <li class="orbit-slide" style="background: #ccc;"> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam minima amet cupiditate pariatur doloribus, quo repudiandae facere odio ipsam laborum nihil, voluptate itaque perspiciatis dolorem aut nostrum! Autem, exercitationem, nesciunt!</p> + </li> + <li class="orbit-slide" style="background: #999;"> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam minima amet cupiditate pariatur doloribus, quo repudiandae facere odio ipsam laborum nihil, voluptate itaque perspiciatis dolorem aut nostrum! Autem, exercitationem, nesciunt!</p> + </li> + </ul> + <nav class="orbit-bullets"> + <button class="is-active" data-slide="0"><span class="show-for-sr">First slide details.</span><span class="show-for-sr">Current Slide</span></button> + <button data-slide="1"><span class="show-for-sr">Second slide details.</span></button> + <button data-slide="2"><span class="show-for-sr">Third slide details.</span></button> + <button data-slide="3"><span class="show-for-sr">Fourth slide details.</span></button> + </nav> + </div> + + <p>This content is here to make the page longer. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid facere architecto fugit voluptates, inventore est cum nihil vel dicta assumenda, illum. Ipsum non saepe similique repellat, enim blanditiis fuga eveniet.</p> + + <p>This content is here to make the page longer. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid facere architecto fugit voluptates, inventore est cum nihil vel dicta assumenda, illum. Ipsum non saepe similique repellat, enim blanditiis fuga eveniet.</p> + + <p>This content is here to make the page longer. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid facere architecto fugit voluptates, inventore est cum nihil vel dicta assumenda, illum. Ipsum non saepe similique repellat, enim blanditiis fuga eveniet.</p> + + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/responsive-menu/dropdown-on-right-middle.html b/libraries/foundation-6/test/visual/responsive-menu/dropdown-on-right-middle.html new file mode 100755 index 00000000..ff5304f8 --- /dev/null +++ b/libraries/foundation-6/test/visual/responsive-menu/dropdown-on-right-middle.html @@ -0,0 +1,115 @@ +<html> + +<head> + <link href="http://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css" rel="stylesheet"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <link href="../assets/css/foundation.css" rel="stylesheet" /> + + <style> + + + </style> +</head> + +<body> + <div class="title-bar" data-responsive-toggle="main-menu" data-hide-for="medium"> + <button class="menu-icon" type="button" data-toggle></button> + <div class="title-bar-title">Menu</div> + </div> + + <div class="top-bar" id="main-menu"> + <div class="top-bar-left"> + <ul class="menu vertical medium-horizontal" data-responsive-menu="drilldown medium-dropdown"> + <li class="has-submenu"> + <a href="#">One</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li> + <a href="#">Three</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + </ul> + </li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </div> + <div class="top-bar-right"> + <ul class="menu vertical medium-horizontal" data-responsive-menu="drilldown medium-dropdown"> + <li class="has-submenu"> + <a href="#">One</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li> + <a href="#">Three</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + </ul> + </li> + <li class="has-submenu opens-left"> + <a href="#">Broken?</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li> + <a href="#">Three</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + </ul> + </li> + <li class="has-submenu"> + <a href="#">Two</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li> + <a href="#">Three</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + </ul> + </li> + <li><a href="#">Three</a></li> + </ul> + </div> + </div> + + <p>Hover on Broken</p> + <p>Dropdown should open towards left and not off screen.</p> + + <ul> + <li>The dropdowns should open underneath the parent element.</li> + <li>On the right side, the dropdown's right side should be aligned to the right of the parent element.</li> + <li>On the left side, the dropdown's left side should be aligned to the left of the parent element.</li> + <li>On the right side, submenu dropdowns should be aligned to left-top of the parent element and open toward the middle.</li> + <li>On the left side, submenu dropdowns should be aligned to right-top of the parent element and open toward the middle.</li> + <li>Dropdown parent element arrows should point down.</li> + <br> + <li>On mobile, the arrows to access submenu should be at the left of the dropdown.</li> + </ul> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> +</body> +</html> diff --git a/libraries/foundation-6/test/visual/responsive-menu/re-init.html b/libraries/foundation-6/test/visual/responsive-menu/re-init.html new file mode 100755 index 00000000..6e3a4069 --- /dev/null +++ b/libraries/foundation-6/test/visual/responsive-menu/re-init.html @@ -0,0 +1,57 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Responsive Menu: reInit</h1> + + <ul id="menu" class="vertical menu" data-responsive-menu="drilldown medium-dropdown" style="width: 300px;"> + <li> + <a href="#">Item 1</a> + <ul class="vertical menu"> + <li> + <a href="#">Item 1A</a> + <ul class="vertical menu"> + <li><a href="#">Item 1A</a></li> + <li><a href="#">Item 1B</a></li> + <li><a href="#">Item 1C</a></li> + <li><a href="#">Item 1D</a></li> + <li><a href="#">Item 1E</a></li> + </ul> + </li> + <li><a href="#">Item 1B</a></li> + </ul> + </li> + <li> + <a href="#">Item 2</a> + <ul class="vertical menu"> + <li><a href="#">Item 2A</a></li> + <li><a href="#">Item 2B</a></li> + </ul> + </li> + <li> + <a href="#">Item 3</a> + <ul class="vertical menu"> + <li><a href="#">Item 3A</a></li> + <li><a href="#">Item 3B</a></li> + </ul> + </li> + </ul> + <p>This test is verifying that if you init a responsive menu twice, it still works (there was a bug around that). This is done in the setup, so if the menu is working at all, this is a pass. + </p> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + $('#menu').foundation('_init'); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/responsive-menu/responsive-menu-left-dropdown.html b/libraries/foundation-6/test/visual/responsive-menu/responsive-menu-left-dropdown.html new file mode 100755 index 00000000..1ec3c6da --- /dev/null +++ b/libraries/foundation-6/test/visual/responsive-menu/responsive-menu-left-dropdown.html @@ -0,0 +1,84 @@ +<html> + +<head> + <link href="http://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css" rel="stylesheet"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <link href="../assets/css/foundation.css" rel="stylesheet" /> + + <style> + + + </style> +</head> + +<body> + <div class="title-bar" data-responsive-toggle="main-menu" data-hide-for="medium"> + <button class="menu-icon" type="button" data-toggle></button> + <div class="title-bar-title">Menu</div> + </div> + + <div class="top-bar" id="main-menu"> + <div class="top-bar-left"> + + <ul class="menu vertical medium-horizontal" data-responsive-menu="drilldown medium-dropdown"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li class="has-submenu"> + <a href="#">Three</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li> + <a href="#">Three</a> + <ul class="submenu menu vertical align-left" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li> + <a href="#">Three</a> + <ul class="submenu menu vertical align-left" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li> + <a href="#">Three</a> + <ul class="submenu menu vertical align-left" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + </ul> + </li> + </ul> + </ul> + </li> + </ul> + </li> + </ul> + + </div> + <div class="top-bar-right"> + + </div> + </div> + + <p>Horizontal menu on medium and up. Multiple dropdowns on the far right and left of the viewport. Drilldowns on small screens.</p> + + <ul> + <li>The dropdowns should open underneath the parent element.</li> + <li>On the right side, the dropdown's right side should be aligned to the right of the parent element.</li> + <li>On the left side, the dropdown's left side should be aligned to the left of the parent element.</li> + <li>On the right side, submenu dropdowns should be aligned to left-top of the parent element and open toward the middle.</li> + <li>On the left side, submenu dropdowns should be aligned to right-top of the parent element and open toward the middle.</li> + <li>Dropdown parent element arrows should point down.</li> + <br> + <li>On mobile, the arrows to access submenu should be at the left of the dropdown.</li> + </ul> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> +</body> +</html> diff --git a/libraries/foundation-6/test/visual/responsive-menu/responsive-menu-right-dropdown.html b/libraries/foundation-6/test/visual/responsive-menu/responsive-menu-right-dropdown.html new file mode 100755 index 00000000..e060bfd0 --- /dev/null +++ b/libraries/foundation-6/test/visual/responsive-menu/responsive-menu-right-dropdown.html @@ -0,0 +1,85 @@ +<html> + +<head> + <link href="http://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css" rel="stylesheet"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <link href="../assets/css/foundation.css" rel="stylesheet" /> + + <style> + + + </style> +</head> + +<body> + <div class="title-bar" data-responsive-toggle="main-menu" data-hide-for="medium"> + <button class="menu-icon" type="button" data-toggle></button> + <div class="title-bar-title">Menu</div> + </div> + + <div class="top-bar" id="main-menu"> + <div class="top-bar-left"> + <ul class="menu vertical medium-horizontal" data-responsive-menu="drilldown medium-dropdown"> + <li class="has-submenu"> + <a href="#">One</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li> + <a href="#">Three</a> + <ul class="submenu menu vertical align-left" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + </ul> + </li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </div> + <div class="top-bar-right"> + <ul class="menu vertical medium-horizontal" data-responsive-menu="drilldown medium-dropdown"> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li class="has-submenu"> + <a href="#">Three</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li> + <a href="#">Three</a> + <ul class="submenu menu vertical align-left" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + </ul> + </li> + </ul> + </div> + </div> + + <p>Horizontal menu on medium and up. Multiple dropdowns on the far right and left of the viewport. Drilldowns on small screens.</p> + + <ul> + <li>The dropdowns should open underneath the parent element.</li> + <li>On the right side, the dropdown's right side should be aligned to the right of the parent element.</li> + <li>On the left side, the dropdown's left side should be aligned to the left of the parent element.</li> + <li>On the right side, submenu dropdowns should be aligned to left-top of the parent element and open toward the middle.</li> + <li>On the left side, submenu dropdowns should be aligned to right-top of the parent element and open toward the middle.</li> + <li>Dropdown parent element arrows should point down.</li> + <br> + <li>On mobile, the arrows to access submenu should be at the left of the dropdown.</li> + </ul> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> +</body> +</html> diff --git a/libraries/foundation-6/test/visual/responsive-menu/responsive-menu.html b/libraries/foundation-6/test/visual/responsive-menu/responsive-menu.html new file mode 100755 index 00000000..5184d86a --- /dev/null +++ b/libraries/foundation-6/test/visual/responsive-menu/responsive-menu.html @@ -0,0 +1,54 @@ +<html> + +<head> + <link href="http://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css" rel="stylesheet"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <link href="../assets/css/foundation.css" rel="stylesheet" /> + + <style> + + .top-bar { + padding: 75px 0; + } + + </style> +</head> + +<body> + <div class="title-bar" data-responsive-toggle="main-menu" data-hide-for="medium"> + <button class="menu-icon" type="button" data-toggle></button> + <div class="title-bar-title">Menu</div> + </div> + + <div class="top-bar" id="main-menu"> + <div class="top-bar-left"> + <ul class="dropdown menu" data-dropdown-menu> + <li class="menu-text"><strong>Site Title</strong></li> + </ul> + </div> + <div class="top-bar-right"> + <ul class="menu vertical medium-horizontal" data-responsive-menu="drilldown medium-dropdown"> + <li class="has-submenu"> + <a href="#">One</a> + <ul class="submenu menu vertical" data-submenu> + <li><a href="#">One</a></li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </li> + <li><a href="#">Two</a></li> + <li><a href="#">Three</a></li> + </ul> + </div> + </div> + <p> + Dropdown should show up right under the LI, even if the bar has a bunch of padding. + </p> + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> +</body> +</html> diff --git a/libraries/foundation-6/test/visual/responsive-menu/various-menu-options-flex.html b/libraries/foundation-6/test/visual/responsive-menu/various-menu-options-flex.html new file mode 100755 index 00000000..1fc44e3a --- /dev/null +++ b/libraries/foundation-6/test/visual/responsive-menu/various-menu-options-flex.html @@ -0,0 +1,146 @@ +<html> + + <head> + <link href="http://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css" rel="stylesheet"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <link href="../assets/css/foundation-flex.css" rel="stylesheet" /> + + <style> + + + </style> + </head> + + <body> + <div class="row"> + <div class="large-12 columns"> + + <h2>Responsive Menu:</h2> + + <div class="title-bar" data-responsive-toggle="main-nav" data-hide-for="medium"> + <button class="menu-icon" type="button" data-toggle></button> + <div class="title-bar-title">Menu</div> + </div> + + <div id="main-nav"> + <ul class="menu vertical medium-horizontal" data-responsive-menu="accordion medium-dropdown" > + <li> + <a href="#">Home</a> + </li> + <li> + <a href="#">About Us</a> + <ul class="menu"> + <li> + <a href="#">What we do</a> + </li> + <li> + <a href="#">Why we do it</a> + </li> + </ul> + </li> + <li> + <a href="#">Our Services</a> + <ul class="menu"> + <li> + <a href="#">Service A</a> + </li> + <li> + <a href="#">Service B</a> + </li> + <li> + <a href="#">Service B</a> + </li> + </ul> + </li> + <li> + <a href="#">Contact</a> + </li> + </ul> + </div> + + <hr> + + <h2>Accordion Menu:</h2> + + <ul class="menu vertical" data-accordion-menu> + <li> + <a href="#">Home</a> + </li> + <li> + <a href="#">About Us</a> + <ul class="menu"> + <li> + <a href="#">What we do</a> + </li> + <li> + <a href="#">Why we do it</a> + </li> + </ul> + </li> + <li> + <a href="#">Our Services</a> + <ul class="menu"> + <li> + <a href="#">Service A</a> + </li> + <li> + <a href="#">Service B</a> + </li> + <li> + <a href="#">Service B</a> + </li> + </ul> + </li> + <li> + <a href="#">Contact</a> + </li> + </ul> + + <hr> + + <h2>Dropdown Menu:</h2> + + <ul class="menu dropdown" data-dropdown-menu> + <li> + <a href="#">Home</a> + </li> + <li> + <a href="#">About Us</a> + <ul class="menu"> + <li> + <a href="#">What we do</a> + </li> + <li> + <a href="#">Why we do it</a> + </li> + </ul> + </li> + <li> + <a href="#">Our Services</a> + <ul class="menu"> + <li> + <a href="#">Service A</a> + </li> + <li> + <a href="#">Service B</a> + </li> + <li> + <a href="#">Service B</a> + </li> + </ul> + </li> + <li> + <a href="#">Contact</a> + </li> + </ul> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/responsive-menu/various-menu-options.html b/libraries/foundation-6/test/visual/responsive-menu/various-menu-options.html new file mode 100755 index 00000000..3e4373c4 --- /dev/null +++ b/libraries/foundation-6/test/visual/responsive-menu/various-menu-options.html @@ -0,0 +1,146 @@ +<html> + + <head> + <link href="http://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css" rel="stylesheet"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <link href="../assets/css/foundation.css" rel="stylesheet" /> + + <style> + + + </style> + </head> + + <body> + <div class="row"> + <div class="large-12 columns"> + + <h2>Responsive Menu:</h2> + + <div class="title-bar" data-responsive-toggle="main-nav" data-hide-for="medium"> + <button class="menu-icon" type="button" data-toggle></button> + <div class="title-bar-title">Menu</div> + </div> + + <div id="main-nav"> + <ul class="menu vertical medium-horizontal" data-responsive-menu="accordion medium-dropdown" > + <li> + <a href="#">Home</a> + </li> + <li> + <a href="#">About Us</a> + <ul class="menu"> + <li> + <a href="#">What we do</a> + </li> + <li> + <a href="#">Why we do it</a> + </li> + </ul> + </li> + <li> + <a href="#">Our Services</a> + <ul class="menu"> + <li> + <a href="#">Service A</a> + </li> + <li> + <a href="#">Service B</a> + </li> + <li> + <a href="#">Service B</a> + </li> + </ul> + </li> + <li> + <a href="#">Contact</a> + </li> + </ul> + </div> + + <hr> + + <h2>Accordion Menu:</h2> + + <ul class="menu vertical" data-accordion-menu> + <li> + <a href="#">Home</a> + </li> + <li> + <a href="#">About Us</a> + <ul class="menu"> + <li> + <a href="#">What we do</a> + </li> + <li> + <a href="#">Why we do it</a> + </li> + </ul> + </li> + <li> + <a href="#">Our Services</a> + <ul class="menu"> + <li> + <a href="#">Service A</a> + </li> + <li> + <a href="#">Service B</a> + </li> + <li> + <a href="#">Service B</a> + </li> + </ul> + </li> + <li> + <a href="#">Contact</a> + </li> + </ul> + + <hr> + + <h2>Dropdown Menu:</h2> + + <ul class="menu dropdown" data-dropdown-menu> + <li> + <a href="#">Home</a> + </li> + <li> + <a href="#">About Us</a> + <ul class="menu"> + <li> + <a href="#">What we do</a> + </li> + <li> + <a href="#">Why we do it</a> + </li> + </ul> + </li> + <li> + <a href="#">Our Services</a> + <ul class="menu"> + <li> + <a href="#">Service A</a> + </li> + <li> + <a href="#">Service B</a> + </li> + <li> + <a href="#">Service B</a> + </li> + </ul> + </li> + <li> + <a href="#">Contact</a> + </li> + </ul> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/reveal/basic.html b/libraries/foundation-6/test/visual/reveal/basic.html new file mode 100755 index 00000000..317a30ed --- /dev/null +++ b/libraries/foundation-6/test/visual/reveal/basic.html @@ -0,0 +1,83 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../motion-ui/dist/motion-ui.css" rel="stylesheet" /> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Reveal</h1> + + <section> + <h2>Basics</h2> + <p>A modal should open in the center of the page when either of these links are clicked.</p> + <p><a data-open="exampleModal1">Open Trigger</a></p> + <p><a data-toggle="exampleModal1">Toggle Trigger</a></p> + + <div class="reveal" id="exampleModal1" data-reveal> + <p>Clicking any of these triggers should close the modal.</p> + <p>Clicking on the overlay should close the modal.</p> + <p><a data-toggle="exampleModal1">Toggle Trigger</a></p> + <p><a data-close>Implicit Close Trigger</a></p> + <p><a data-close="exampleModal1">Explicit Close Trigger</a></p> + </div> + </section> + + <section> + <h2>Nested</h2> + <p>Clicking this link should open the initial modal.</p> + <p><a data-open="exampleModal2">Open first modal</a></p> + + <div class="reveal" id="exampleModal2" data-reveal> + <p>Clicking this link should replace this modal with a new one.</p> + <p><a data-open="exampleModal3">Open second modal</a></p> + </div> + + <div class="reveal" id="exampleModal3" data-reveal> + <p>Clicking this link should close this modal, but not go back to the first one.</p> + <p><a data-close>Close modal</a></p> + </div> + </section> + + <section> + <h2>With Offsets</h2> + <p>Clicking this link should open a reveal with offset 50, 50 from top/left</p> + <p><a data-open="exampleModal4">Open offset modal</a></p> + <div class="reveal" id="exampleModal4" data-reveal data-v-offset="50" data-h-offset="50"> + <p>Am I in the top left?</p> + <p><a data-close>Close modal</a></p> + </div> + </section> + + <section> + <h2>Slower fade in</h2> + <p>Clicking this link should open a reveal fading in slow</p> + <p><a data-open="exampleModal5">Open offset modal</a></p> + <div class="reveal slow" id="exampleModal5" data-reveal data-animation-in="fade-in"> + <p>Did I open slower? Did the overlay also open slow?</p> + <p><a data-close>Close modal</a></p> + </div> + </section> + + <section> + <h2>Faster fade in</h2> + <p>Clicking this link should open a reveal fading in fast</p> + <p><a data-open="exampleModal6">Open offset modal</a></p> + <div class="reveal fast" id="exampleModal6" data-reveal data-animation-in="fade-in"> + <p>Did I open faster? Did the overlay also open fast?</p> + <p><a data-close>Close modal</a></p> + </div> + </section> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/reveal/full-reveal.html b/libraries/foundation-6/test/visual/reveal/full-reveal.html new file mode 100755 index 00000000..b7cced5d --- /dev/null +++ b/libraries/foundation-6/test/visual/reveal/full-reveal.html @@ -0,0 +1,50 @@ +<!doctype html> +<html lang="en" class="no-js"> +<head> + <meta charset="UTF-8"> + <title>Foundation for Sites Testing</title> + <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> + <link href="../assets/css/foundation.css" rel="stylesheet" /> +</head> +<body> + + <a href="#" data-toggle="contact-modal">Open testcase from http://foundation.zurb.com/forum/posts/38459-f6-reveal-modal-suggestions</a> + <p>When the reveal is open, it should scroll but body no</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <p>Scroll</p> + <div class="full reveal" id="contact-modal" data-reveal> + <p>OH I'M SO FUUUUL</p> + <img src="http://placekitten.com/1920/1280" alt="Intropsective Cage"> + <button class="close-button" data-close aria-label="Close reveal" type="button"> + <span aria-hidden="true">×</span> + </button> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> +</body> +</html> diff --git a/libraries/foundation-6/test/visual/reveal/long-page-with-add-this.html b/libraries/foundation-6/test/visual/reveal/long-page-with-add-this.html new file mode 100755 index 00000000..7f829229 --- /dev/null +++ b/libraries/foundation-6/test/visual/reveal/long-page-with-add-this.html @@ -0,0 +1,50 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <h1>Page with Scrollbar</h1> + <p><a data-open="exampleModal1">Click me for a modal</a></p> + <p>Reveal modal should open in middle of browser window</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <div class="reveal" id="exampleModal1" data-reveal> + <h1>Awesome. I Have It.</h1> + <p class="lead">Your couch. It is mine.</p> + <p>I'm a cool paragraph that lives inside of an even cooler modal. Wins!</p> + <button class="close-button" data-close aria-label="Close modal" type="button"> + <span aria-hidden="true">×</span> + </button> + </div> + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <!-- Go to www.addthis.com/dashboard to customize your tools --> + <script type="text/javascript" src="http://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-56cc8409b0b49c6f"></script> + + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/reveal/long-page.html b/libraries/foundation-6/test/visual/reveal/long-page.html new file mode 100755 index 00000000..afe3502e --- /dev/null +++ b/libraries/foundation-6/test/visual/reveal/long-page.html @@ -0,0 +1,47 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <h1>Page with Scrollbar</h1> + <p><a data-open="exampleModal1">Click me for a modal</a></p> + <p>Reveal modal should open in middle of browser window</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> + <div class="reveal" id="exampleModal1" data-reveal> + <h1>Awesome. I Have It.</h1> + <p class="lead">Your couch. It is mine.</p> + <p>I'm a cool paragraph that lives inside of an even cooler modal. Wins!</p> + <button class="close-button" data-close aria-label="Close modal" type="button"> + <span aria-hidden="true">×</span> + </button> + </div> + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/reveal/reveal-callout.html b/libraries/foundation-6/test/visual/reveal/reveal-callout.html new file mode 100755 index 00000000..c6bba947 --- /dev/null +++ b/libraries/foundation-6/test/visual/reveal/reveal-callout.html @@ -0,0 +1,44 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Reveal</h1> + + <section> + <h2>Callout inside Reveal</h2> + <p>Test if a callout inside a Reveal can be closed without closing the Reveal aswell.</p> + <div class="reveal" id="exampleModal1" data-reveal> + <h2>Closeable callout in reveal bug</h2> + <p>When you close the callout, the reveal is closed too, which shouldn't!</p> + + <div class="callout alert" data-closable> + <p>Close me now!</p> + <button class="close-button" aria-label="Dismiss alert" type="button" data-close> + <span aria-hidden="true">×</span> + </button> + </div> + + <button class="close-button" data-close aria-label="Close reveal" type="button"> + <span aria-hidden="true">×</span> + </button> + </div> + + <p><a data-open="exampleModal1">Click me for a modal</a></p> + </section> + + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/reveal/reveal-test-data-options.html b/libraries/foundation-6/test/visual/reveal/reveal-test-data-options.html new file mode 100755 index 00000000..663b1944 --- /dev/null +++ b/libraries/foundation-6/test/visual/reveal/reveal-test-data-options.html @@ -0,0 +1,66 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + +<p><a data-open="exampleModal1">Modal at the top of screen</a></p> + +<div class="reveal" id="exampleModal1" data-reveal data-v-offset="0"> + <h1>Awesome. I Have It.</h1> + <p class="lead">Your couch. It is mine.</p> + <p>I'm a cool paragraph that lives inside of an even cooler modal. Wins!</p> + <button class="close-button" data-close aria-label="Close modal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> + +<p><a data-open="exampleModal2">Modal 600px from top</a></p> + +<div class="reveal" id="exampleModal2" data-reveal data-v-offset="600"> + <h1>Awesome. I Have It.</h1> + <p class="lead">Your couch. It is mine.</p> + <p>I'm a cool paragraph that lives inside of an even cooler modal. Wins!</p> + <button class="close-button" data-close aria-label="Close modal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> + + +<p><a data-open="exampleModal3">Modal 600px from side</a></p> + +<div class="reveal" id="exampleModal3" data-reveal data-h-offset="600"> + <h1>Awesome. I Have It.</h1> + <p class="lead">Your couch. It is mine.</p> + <p>I'm a cool paragraph that lives inside of an even cooler modal. Wins!</p> + <button class="close-button" data-close aria-label="Close modal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> + +<p><a data-open="exampleModal4">Modal closes by hitting esc</a></p> + +<div class="reveal" id="exampleModal4" data-reveal data-close-on-esc="true"> + <h1>Awesome. I Have It.</h1> + <p class="lead">Your couch. It is mine.</p> + <p>I'm a cool paragraph that lives inside of an even cooler modal. Wins!</p> + <button class="close-button" data-close aria-label="Close modal" type="button"> + <span aria-hidden="true">×</span> + </button> +</div> + + + + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/reveal/tall.html b/libraries/foundation-6/test/visual/reveal/tall.html new file mode 100755 index 00000000..75917c32 --- /dev/null +++ b/libraries/foundation-6/test/visual/reveal/tall.html @@ -0,0 +1,63 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + <style> + .close-button.fixed { + position: fixed; + color: #fff; + } + </style> + </head> + <body> + <div class="row column"> + <h1>Reveal: Tall Modal</h1> + + <p>This tall modal scrolls within the the modal overlay.</p> + + <p><a data-toggle="exampleModal1">Toggle Trigger</a></p> + + <div class="reveal" id="exampleModal1" data-reveal> + <button class="close-button" aria-label="Close alert" type="button" data-close> + <span aria-hidden="true">×</span> + </button> + + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad alias commodi minus repellat atque optio sit soluta assumenda labore inventore corporis non laboriosam veniam nisi, ut, obcaecati dolorum. Incidunt, pariatur. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet reiciendis in maiores aliquid repellendus vero recusandae corporis ipsam, id placeat suscipit laboriosam, necessitatibus et neque ducimus. Harum quis sequi, expedita. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut quam perspiciatis harum, cum. Esse maxime repellendus illum voluptate, quae voluptates quibusdam rem ab quasi perspiciatis. Numquam porro alias cumque saepe!</p> + + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad alias commodi minus repellat atque optio sit soluta assumenda labore inventore corporis non laboriosam veniam nisi, ut, obcaecati dolorum. Incidunt, pariatur. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet reiciendis in maiores aliquid repellendus vero recusandae corporis ipsam, id placeat suscipit laboriosam, necessitatibus et neque ducimus. Harum quis sequi, expedita. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut quam perspiciatis harum, cum. Esse maxime repellendus illum voluptate, quae voluptates quibusdam rem ab quasi perspiciatis. Numquam porro alias cumque saepe!</p> + + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad alias commodi minus repellat atque optio sit soluta assumenda labore inventore corporis non laboriosam veniam nisi, ut, obcaecati dolorum. Incidunt, pariatur. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet reiciendis in maiores aliquid repellendus vero recusandae corporis ipsam, id placeat suscipit laboriosam, necessitatibus et neque ducimus. Harum quis sequi, expedita. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut quam perspiciatis harum, cum. Esse maxime repellendus illum voluptate, quae voluptates quibusdam rem ab quasi perspiciatis. Numquam porro alias cumque saepe!</p> + + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad alias commodi minus repellat atque optio sit soluta assumenda labore inventore corporis non laboriosam veniam nisi, ut, obcaecati dolorum. Incidunt, pariatur. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet reiciendis in maiores aliquid repellendus vero recusandae corporis ipsam, id placeat suscipit laboriosam, necessitatibus et neque ducimus. Harum quis sequi, expedita. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut quam perspiciatis harum, cum. Esse maxime repellendus illum voluptate, quae voluptates quibusdam rem ab quasi perspiciatis. Numquam porro alias cumque saepe!</p> + </div> + + <p>This tall modal has a fixed-position close button, that sits over the overlay.</p> + + <p><a data-toggle="exampleModal2">Toggle Trigger</a></p> + + <div class="reveal" id="exampleModal2" data-reveal> + <button class="close-button fixed" aria-label="Close alert" type="button" data-close> + <span aria-hidden="true">×</span> + </button> + + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad alias commodi minus repellat atque optio sit soluta assumenda labore inventore corporis non laboriosam veniam nisi, ut, obcaecati dolorum. Incidunt, pariatur. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet reiciendis in maiores aliquid repellendus vero recusandae corporis ipsam, id placeat suscipit laboriosam, necessitatibus et neque ducimus. Harum quis sequi, expedita. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut quam perspiciatis harum, cum. Esse maxime repellendus illum voluptate, quae voluptates quibusdam rem ab quasi perspiciatis. Numquam porro alias cumque saepe!</p> + + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad alias commodi minus repellat atque optio sit soluta assumenda labore inventore corporis non laboriosam veniam nisi, ut, obcaecati dolorum. Incidunt, pariatur. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet reiciendis in maiores aliquid repellendus vero recusandae corporis ipsam, id placeat suscipit laboriosam, necessitatibus et neque ducimus. Harum quis sequi, expedita. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut quam perspiciatis harum, cum. Esse maxime repellendus illum voluptate, quae voluptates quibusdam rem ab quasi perspiciatis. Numquam porro alias cumque saepe!</p> + + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad alias commodi minus repellat atque optio sit soluta assumenda labore inventore corporis non laboriosam veniam nisi, ut, obcaecati dolorum. Incidunt, pariatur. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet reiciendis in maiores aliquid repellendus vero recusandae corporis ipsam, id placeat suscipit laboriosam, necessitatibus et neque ducimus. Harum quis sequi, expedita. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut quam perspiciatis harum, cum. Esse maxime repellendus illum voluptate, quae voluptates quibusdam rem ab quasi perspiciatis. Numquam porro alias cumque saepe!</p> + + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad alias commodi minus repellat atque optio sit soluta assumenda labore inventore corporis non laboriosam veniam nisi, ut, obcaecati dolorum. Incidunt, pariatur. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet reiciendis in maiores aliquid repellendus vero recusandae corporis ipsam, id placeat suscipit laboriosam, necessitatibus et neque ducimus. Harum quis sequi, expedita. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut quam perspiciatis harum, cum. Esse maxime repellendus illum voluptate, quae voluptates quibusdam rem ab quasi perspiciatis. Numquam porro alias cumque saepe!</p> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/slider/nonzero-start.html b/libraries/foundation-6/test/visual/slider/nonzero-start.html new file mode 100755 index 00000000..73c1c22f --- /dev/null +++ b/libraries/foundation-6/test/visual/slider/nonzero-start.html @@ -0,0 +1,45 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Slider: Non-zero Start Value</h1> + + <p>Slider should be at left, since the initialStart is 50 and the scale is 50-100. (top: broken, bottom: expected)</p> + + <div class="slider" id="slider1" data-slider + data-initial-start="50" + data-start="50" data-end="100"> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span> + <span class="slider-fill" data-slider-fill></span> + <input type="hidden"> + </div> + + <hr> + + <p>Slider should cover 100%, since the initialStart is 50 and the scale is 50-100 (top: broken, bottom: expected)</p> + <div class="slider" id="slider2" data-slider + data-double-sided + data-initial-start="50" data-initial-end="100" + data-start="50" data-end="100"> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span> + <span class="slider-fill" data-slider-fill></span> + <span class="slider-handle" data-slider-handle role="slider" tabindex="1"></span> + <input type="hidden"> + <input type="hidden"> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/sticky/accordions-with-anchors.html b/libraries/foundation-6/test/visual/sticky/accordions-with-anchors.html new file mode 100755 index 00000000..82283d66 --- /dev/null +++ b/libraries/foundation-6/test/visual/sticky/accordions-with-anchors.html @@ -0,0 +1,182 @@ +<!doctype html> +<html lang="en" class="no-js"> +<head> + <meta charset="UTF-8"> + <title>Foundation for Sites Testing</title> + <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + + <style> + + .container { + background-color: rgba(255,0,0,0.7); + + } + + .fail { + color: red; + font-weight: bold; + text-transform: uppercase; + } + + .foo { + height: 35rem; + color: white; + } + + .megafoo { + height:50rem; + color: white; + } + + .bar { + color: white; + } + + .foo h1 { + float: right; + } + + .foo:nth-child(odd), .bar:nth-child(odd), .megafoo:nth-child(odd) { + background-color: lightgreen; + } + + .foo:nth-child(even), .bar:nth-child(even), .megafoo:nth-child(even) { + background-color: lightblue; + } + + .test-container { + background-color: darkgrey; + } + + </style> + +</head> +<body> + + <div class="row"> + <div class="small-12 medium-8 medium-centered columns"> + <h1 class="text-center">Sticky Accordions with Anchors</h1> + <hr> + <h2>Look For:</h2> + <ul> + <li><span class="fail">Currently failing</span> Accordion should unstick in the correct place when it reaches its anchor points.</li> + <li><span class="fail">Currently failing</span> Sticky should not be effected by height changes to the accordion that are introduced by switching active accordion item.</li> + <li><span class="fail">Currently failing</span> You should not see the red background color of the sticky container after scrolling, expanding/collapsing accordion items, or sticking/unsticking the accordion.</li> + </ul> + + </div> + </div> + + <div class="row test-container"> + + <div class="small-12 medium-6 columns"> + <div id="foo1" class="foo"> + <h1>#foo1</h1> + </div> + <div id="foo2" class="foo"> + <div class="row"> + <div class="small-12 medium-8 columns"> + <div class="container" data-sticky-container> + <div class="sticky" data-sticky data-sticky-on="small" data-margin-top="0" data-anchor="foo2" style="width:100%"> + <ul class="accordion" data-accordion> + <li class="accordion-item is-active" data-accordion-item> + <a href="#" class="accordion-title">Test Accordion #2</a> + <div class="accordion-content" data-tab-content > + <p>I should stick to the top and bottom of my anchor #foo2</p> + <p>I am a descendant of #foo2</p> + </div> + </li> + <li class="accordion-item" data-accordion-item> + <a href="#" class="accordion-title">Expand & Collapse Me</a> + <div class="accordion-content" data-tab-content> + <textarea></textarea> + <textarea></textarea> + <button class="button">I do nothing!</button> + </div> + </li> + <li class="accordion-item" data-accordion-item> + <a href="#" class="accordion-title">Expand & Collapse Me</a> + <div class="accordion-content" data-tab-content> + Pick a date! + <input type="date"> + </div> + </li> + </ul> + </div> + </div> + </div> + <div class="small-12 medium-4 columns"> + <h1>#foo2</h1> + </div> + </div> + </div> + <div id="foo3" class="foo"> + <h1>#foo3</h1> + </div> + + <div id="foo4" class="foo"> + <h1>#foo4</h1> + + </div> + <div id="foo5" class="foo"> + <h1>#foo5</h1> + </div> + <div id="foo6" class="foo"> + <h1>#foo6</h1> + </div> + <div id="foo7" class="foo"> + <h1>#foo7</h1> + </div> + <div id="foo8" class="foo"> + <h1>#foo8</h1> + </div> + <div id="foo9" class="foo"> + <h1>#foo9</h1> + </div> + <div id="foo10" class="foo"> + <h1>#foo10</h1> + </div> + </div> + + <div class="small-12 medium-6 columns"> + + <div class="container" data-sticky-container> + <div class="sticky" data-sticky-on="small" data-sticky data-margin-top="0" data-anchor="foo1" style="width:100%"> + <ul class="accordion" data-accordion> + <li class="accordion-item is-active" data-accordion-item> + <a href="#" class="accordion-title">Test Accordion #1</a> + <div class="accordion-content" data-tab-content > + <p>I should stick to the top and bottom of my anchor #foo1</p> + </div> + </li> + <li class="accordion-item" data-accordion-item> + <a href="#" class="accordion-title">Expand & Collapse Me</a> + <div class="accordion-content" data-tab-content> + <textarea></textarea> + <textarea></textarea> + <button class="button">I do nothing!</button> + </div> + </li> + <li class="accordion-item" data-accordion-item> + <a href="#" class="accordion-title">Expand & Collapse Me</a> + <div class="accordion-content" data-tab-content> + Pick a date! + <input type="date"> + </div> + </li> + </ul> + </div> + </div> + + </div> + + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> +</body> +</html> \ No newline at end of file diff --git a/libraries/foundation-6/test/visual/sticky/anchors-with-callouts.html b/libraries/foundation-6/test/visual/sticky/anchors-with-callouts.html new file mode 100755 index 00000000..257dfa3a --- /dev/null +++ b/libraries/foundation-6/test/visual/sticky/anchors-with-callouts.html @@ -0,0 +1,197 @@ +<!doctype html> +<html lang="en" class="no-js"> +<head> + <meta charset="UTF-8"> + <title>Foundation for Sites Testing</title> + <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + <style> + body { + background-color: darkgrey; + } + + .container { + background-color: rgba(255,0,0,0.7); + + } + + .foo { + height: 30rem; + color: white; + } + + .megafoo { + height:50rem; + color: white; + } + + .bar { + color: white; + } + + .foo h1 { + display: inline-block; + float: right; + } + + .foo:nth-child(odd), .bar:nth-child(odd), .megafoo:nth-child(odd) { + background-color: lightgreen; + } + + .foo:nth-child(even), .bar:nth-child(even), .megafoo:nth-child(even) { + background-color: lightblue; + } + + </style> + +</head> +<body> + + <div class="row"> + + <div class="small-12 medium-2 columns"> + <div class="container" data-sticky-container> + <div class="callout sticky" data-sticky-on="small" data-sticky data-margin-top="0" data-anchor="foo1"> + <h5>Test 1</h5> + <p>I should stick to the top and bottom of #foo1. I'm not a child of any #foo's.</p> + <a href="http://foundation.zurb.com/sites/docs/stick.html" class="small button">Go to Sticky Docs</a> + </div> + </div> + </div> + + <div class="small-12 medium-7 columns"> + <div id="foo1" class="foo"> + <h1>#foo1</h1> + </div> + <div id="foo2" class="foo"> + <h1>#foo2</h1> + <div class="container" data-sticky-container> + <div class="callout sticky" data-sticky-on="small" data-sticky data-margin-top="0" data-anchor="foo2"> + <h5>Test 2</h5> + <p>I should stick to the top and bottom of #foo2.<br/>I'm also a child of #foo2</p> + <a href="http://foundation.zurb.com/sites/docs/stick.html" class="small button">Go to Sticky Docs</a> + </div> + </div> + </div> + <div id="foo3" class="foo"> + <h1>#foo3</h1> + + </div> + <div id="foo4" class="foo"> + <h1>#foo4</h1> + <div class="container" data-sticky-container> + <div class="callout sticky" data-sticky-on="small" data-sticky data-margin-top="0" data-top-anchor="foo4" data-btm-anchor="foo6"> + <h5>Test 3</h5> + <p>I should stick to the top of #foo4 and the top of #foo6.<br/>I'm a child of #foo4</p> + <a href="http://foundation.zurb.com/sites/docs/stick.html" class="small button">Go to Sticky Docs</a> + </div> + </div> + </div> + <div id="foo5" class="foo"> + <h1>#foo5</h1> + </div> + <div id="foo6" class="foo"> + <h1>#foo6</h1> + </div> + <div id="foo7" class="foo"> + <h1>#foo7</h1> + <div class="container" data-sticky-container> + <div class="callout sticky" data-sticky data-sticky-on="small" data-margin-top="0" data-top-anchor="foo6" data-btm-anchor="foo8:bottom"> + <h5>Test 4</h5> + <p>I should stick to the top of #foo6 and the bottom of #foo8. I'm a child of #foo7.</p> + <a href="http://foundation.zurb.com/sites/docs/stick.html" class="small button">Go to Sticky Docs</a> + </div> + </div> + </div> + <div id="foo8" class="foo"> + <h1>#foo8</h1> + </div> + <div id="foo9" class="foo"> + <h1>#foo9</h1> + </div> + <div id="foo10" class="foo"> + <h1>#foo10</h1> + <div class="container" data-sticky-container> + <div class="callout sticky" data-sticky data-sticky-on="small" data-margin-top="0" data-stick-to="bottom" data-top-anchor="foo10" data-btm-anchor="foo11:bottom"> + <h5>Test 5</h5> + <p>I should stick to the top of #foo10 and the bottom of #foo11. I should be stick to the window bottom with a bottom margin of 1em (default bottom margin).</p> + <a href="http://foundation.zurb.com/sites/docs/stick.html" class="small button">Go to Sticky Docs</a> + </div> + </div> + </div> + <div id="foo11" class="foo"> + <h1>#foo11</h1> + </div> + <div id="bar1" class="bar"> + <h1>#bar1</h1> + <div class="container" data-sticky-container> + <div class="callout sticky" data-sticky data-sticky-on="small" data-margin-top="0" data-top-anchor="bar2" data-btm-anchor="bar3:bottom"> + <h5>Test 6</h5> + <p>I should stick to the top of #bar2 and the bottom of #bar3.</p> + <p>Bar containers does not have fixed height, but i should be anchored correctly.</p> + <a href="http://foundation.zurb.com/sites/docs/stick.html" class="small button">Go to Sticky Docs</a> + </div> + </div> + <p>Lorem Ipsum</p> + </div> + <div id="bar2" class="bar"> + <h1>#bar2</h1> + <p>Lorem</p> + </div> + <div id="bar3" class="bar"> + <h1>#bar3</h1> + <p>Lorem</p> + <p>Ipsum</p> + <p>Dolor</p> + </div> + <div id="bar4" class="bar"> + <h1>#bar4</h1> + <p>Lorem</p> + <p>Ipsum</p> + </div> + <div id="foo13" class="megafoo"> + <h1>#foo13</h1> + <p>I'm big to force scroolbar</p> + </div> + <div id="foo12" class="foo"> + <h1>#foo12</h1> + <div class="container" data-sticky-container> + <div class="callout sticky" data-sticky data-sticky-on="small" data-margin-top="0" data-top-anchor="foo12"> + <h5>Test 7</h5> + <p>I should stick to the top of #foo12. I should be stick until window end because only data-top-anchor is set.</p> + <a href="http://foundation.zurb.com/sites/docs/stick.html" class="small button">Go to Sticky Docs</a> + </div> + </div> + </div> + <div id="foo13" class="foo"> + <h1>#foo13</h1> + </div> + <div id="foo14" class="foo"> + <h1>#foo14</h1> + </div> + <div id="foo15" class="megafoo"> + <h1>#foo15</h1> + <p>I'm big to force scroolbar</p> + </div> + + + </div> + + <div class="small-12 medium-3 columns"> + <div class="container" data-sticky-container> + <div class="callout sticky" data-sticky data-sticky-on="small" data-margin-top="0" data-anchor="foo3"> + <h5>Test 8</h5> + <p>I should stick to the top and bottom of #foo3.<br/>I'm not the child of any of you #foo's.<br/>When I'm not stuck I jump to the top because I'm not a child of the top anchor, is this my normal behavior?</p> + <a href="http://foundation.zurb.com/sites/docs/stick.html" class="small button">Go to Sticky Docs</a> + </div> + </div> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> +</body> +</html> diff --git a/libraries/foundation-6/test/visual/sticky/height-transition.html b/libraries/foundation-6/test/visual/sticky/height-transition.html new file mode 100755 index 00000000..c150ccf6 --- /dev/null +++ b/libraries/foundation-6/test/visual/sticky/height-transition.html @@ -0,0 +1,161 @@ +<!doctype html> +<html lang="en" class="no-js"> +<head> + <meta charset="UTF-8"> + <title>Foundation for Sites Testing</title> + <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + <style> + .sticky-container { + background-color: #f00; + transition: height .5s ease; + } + .title-bar { + width: 100%; + z-index: 10; + transition: height .5s ease; + height: 100px; + } + .title-bar .title-bar-right, .title-bar .title-bar-left { + transition: padding-top .25s ease; + padding-top: 1.4em; + } + .title-bar.is-stuck { + height: 50px; + } + .title-bar.is-stuck .title-bar-right, .title-bar.is-stuck .title-bar-left { + padding-top: 0em; + } + .title-bar .dropdown.menu li { + float: left; + } + .title-bar .dropdown.menu .is-dropdown-submenu { + border: none; + background-color: #0A0A0A; + } + + + #root { + margin-top: 2em; + } + + + .foo { + height: 30rem; + } + + .foo h1 { + display: inline-block; + float: right; + } + + .foo:nth-child(odd) { + background-color: lightgreen; + color: white; + } + + .foo:nth-child(even) { + background-color: lightblue; + color: white; + } + + </style> + +</head> +<body> + <div data-sticky-container> + <div class="title-bar" data-sticky data-static-height="false" data-options="marginTop:0;"> + <div class="title-bar-left"> + <span class="title-bar-title">Sticky Navigation</span> + </div> + <div class="title-bar-right"> + <ul class="dropdown menu align-right" data-dropdown-menu> + <li> + <a>Item 1</a> + <ul class="menu"> + <li><a href="#">Item 1A</a></li> + <li> + <a href="#">Item 1B</a> + <ul class="menu"> + <li><a href="#">Item 1B i</a></li> + <li><a href="#">Item 1B ii</a></li> + <li> + <a href="#">Item 1B iii</a> + <ul class="menu"> + <li><a href="#">Item 1B iii alpha</a></li> + <li><a href="#">Item 1B iii omega</a></li> + </ul> + </li> + <li> + <a href="#">Item 1B iv</a> + <ul class="menu"> + <li><a href="#">Item 1B iv alpha</a></li> + </ul> + </li> + </ul> + </li> + <li><a href="#">Item 1C</a></li> + </ul> + </li> + <li> + <a href="#">Item 2</a> + <ul class="menu"> + <li><a href="#">Item 2A</a></li> + <li><a href="#">Item 2B</a></li> + </ul> + </li> + <li><a href="#">Item 3</a></li> + <li><a href="#">Item 4</a></li> + </ul> + </div> + </div> + </div> + <div class='column row'> + <h3>Sticky navbar height transition</h3> + <p>The content should follow the nav-bar resizing without red flashing (sticky-container background)</p> + </div> + + <div class="row"> + <div class="small-12 medium-2 columns"> + <div class="container" data-sticky-container> + <div class="callout sticky" data-sticky data-sticky-on="small" data-margin-top="0" data-anchor="foo1"> + <h5>Test 1</h5> + <p>I should stick to the top and bottom of #foo1. I'm not a child of any #foo's.</p> + <a href="http://foundation.zurb.com/sites/docs/stick.html" class="small button">Go to Sticky Docs</a> + </div> + </div> + </div> + + <div class="small-12 medium-10 columns"> + <div id="foo1" class="foo"> + <h1>#foo1</h1> + </div> + </div> + </div> + + <div class="row"> + <div class="small-6 columns"> +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam consequat pellentesque ligula a tincidunt. Pellentesque fermentum orci leo, quis hendrerit urna rutrum eu. Fusce eu ex id ipsum fermentum scelerisque in non nulla. In quis maximus urna. Sed in est in risus tempor malesuada. Integer sed felis nunc. Mauris sit amet turpis quam. Aliquam nisi felis, suscipit et ex in, mattis mattis dui. Ut id ullamcorper nunc. Nunc quis lacinia turpis, tempor faucibus eros. Vestibulum ex dui, accumsan nec ex eget, scelerisque euismod ligula. In congue venenatis tellus, vitae lobortis felis imperdiet ut. Pellentesque pharetra dignissim felis. Praesent posuere lacus vitae ex tempus tincidunt. +Maecenas accumsan ante non justo laoreet, vel condimentum turpis lacinia. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nunc ornare suscipit faucibus. Donec feugiat nulla in bibendum malesuada. Proin maximus sodales lorem, non pulvinar leo. Ut rhoncus leo et leo commodo tincidunt nec sit amet nulla. Curabitur nisl mi, cursus a molestie et, rhoncus a turpis. Nam mollis accumsan diam non bibendum. Nam eget condimentum ligula, ultricies molestie ante. Mauris dolor neque, rhoncus feugiat varius in, tincidunt nec nisl. Phasellus et sapien vitae lectus auctor lacinia ac accumsan tellus. Ut lacinia massa id massa ullamcorper volutpat. Curabitur lectus erat, mollis sed feugiat id, tempor eu ex. Morbi mollis urna quam. In laoreet magna ligula. Mauris porta tortor eget finibus malesuada. +Mauris porttitor nisi feugiat convallis rhoncus. Etiam mollis mi in felis molestie malesuada. Proin rutrum nisl ac nibh pharetra lobortis. Phasellus dignissim dolor vel eros vulputate, sed finibus enim efficitur. Duis tincidunt porttitor diam, ut tincidunt eros varius quis. Donec nec risus tempor, luctus ligula luctus, ullamcorper augue. Morbi maximus, mi in fringilla bibendum, tellus velit rutrum enim, non vulputate justo augue nec diam. Nulla et nisl lacus. Donec quis molestie tellus. Aenean eleifend ex suscipit neque porttitor, ut hendrerit metus egestas. Morbi ut euismod urna, vitae tempus arcu. Aliquam dictum vel sem et efficitur. Duis nec dapibus purus. +Cras sed fringilla lorem. Nullam ut justo ac augue egestas vestibulum. In commodo sit amet magna sed rutrum. Fusce fringilla blandit nisl sit amet tristique. Duis ultrices porttitor efficitur. Nunc id facilisis velit. Morbi interdum est eget enim luctus vestibulum. Proin sagittis placerat tellus, in convallis lorem lobortis sed. In porta neque lacus, non fringilla justo interdum eu. Cras ante magna, semper tincidunt rhoncus a, viverra at massa. +Nulla porttitor sem vitae pharetra fermentum. Etiam porttitor, libero eu molestie vestibulum, quam libero posuere nulla, at elementum tellus enim ac nulla. Curabitur congue purus orci, in consequat urna varius quis. Ut vel diam eu nunc lacinia eleifend. Integer tempus dui sit amet mauris consectetur ultricies sit amet ut dui. Morbi eu dui pulvinar, rhoncus augue ac, viverra sem. Curabitur tincidunt dolor vitae eros congue sagittis. Ut at tempus orci. + </div> + </div> + <div class="row"> + <div class="small-6 columns"> +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam consequat pellentesque ligula a tincidunt. Pellentesque fermentum orci leo, quis hendrerit urna rutrum eu. Fusce eu ex id ipsum fermentum scelerisque in non nulla. In quis maximus urna. Sed in est in risus tempor malesuada. Integer sed felis nunc. Mauris sit amet turpis quam. Aliquam nisi felis, suscipit et ex in, mattis mattis dui. Ut id ullamcorper nunc. Nunc quis lacinia turpis, tempor faucibus eros. Vestibulum ex dui, accumsan nec ex eget, scelerisque euismod ligula. In congue venenatis tellus, vitae lobortis felis imperdiet ut. Pellentesque pharetra dignissim felis. Praesent posuere lacus vitae ex tempus tincidunt. +Maecenas accumsan ante non justo laoreet, vel condimentum turpis lacinia. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nunc ornare suscipit faucibus. Donec feugiat nulla in bibendum malesuada. Proin maximus sodales lorem, non pulvinar leo. Ut rhoncus leo et leo commodo tincidunt nec sit amet nulla. Curabitur nisl mi, cursus a molestie et, rhoncus a turpis. Nam mollis accumsan diam non bibendum. Nam eget condimentum ligula, ultricies molestie ante. Mauris dolor neque, rhoncus feugiat varius in, tincidunt nec nisl. Phasellus et sapien vitae lectus auctor lacinia ac accumsan tellus. Ut lacinia massa id massa ullamcorper volutpat. Curabitur lectus erat, mollis sed feugiat id, tempor eu ex. Morbi mollis urna quam. In laoreet magna ligula. Mauris porta tortor eget finibus malesuada. +Mauris porttitor nisi feugiat convallis rhoncus. Etiam mollis mi in felis molestie malesuada. Proin rutrum nisl ac nibh pharetra lobortis. Phasellus dignissim dolor vel eros vulputate, sed finibus enim efficitur. Duis tincidunt porttitor diam, ut tincidunt eros varius quis. Donec nec risus tempor, luctus ligula luctus, ullamcorper augue. Morbi maximus, mi in fringilla bibendum, tellus velit rutrum enim, non vulputate justo augue nec diam. Nulla et nisl lacus. Donec quis molestie tellus. Aenean eleifend ex suscipit neque porttitor, ut hendrerit metus egestas. Morbi ut euismod urna, vitae tempus arcu. Aliquam dictum vel sem et efficitur. Duis nec dapibus purus. +Cras sed fringilla lorem. Nullam ut justo ac augue egestas vestibulum. In commodo sit amet magna sed rutrum. Fusce fringilla blandit nisl sit amet tristique. Duis ultrices porttitor efficitur. Nunc id facilisis velit. Morbi interdum est eget enim luctus vestibulum. Proin sagittis placerat tellus, in convallis lorem lobortis sed. In porta neque lacus, non fringilla justo interdum eu. Cras ante magna, semper tincidunt rhoncus a, viverra at massa. +Nulla porttitor sem vitae pharetra fermentum. Etiam porttitor, libero eu molestie vestibulum, quam libero posuere nulla, at elementum tellus enim ac nulla. Curabitur congue purus orci, in consequat urna varius quis. Ut vel diam eu nunc lacinia eleifend. Integer tempus dui sit amet mauris consectetur ultricies sit amet ut dui. Morbi eu dui pulvinar, rhoncus augue ac, viverra sem. Curabitur tincidunt dolor vitae eros congue sagittis. Ut at tempus orci. + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> +</body> +</html> diff --git a/libraries/foundation-6/test/visual/sticky/menus-with-anchors.html b/libraries/foundation-6/test/visual/sticky/menus-with-anchors.html new file mode 100755 index 00000000..815e6052 --- /dev/null +++ b/libraries/foundation-6/test/visual/sticky/menus-with-anchors.html @@ -0,0 +1,201 @@ +<!doctype html> +<html lang="en" class="no-js"> +<head> + <meta charset="UTF-8"> + <title>Foundation for Sites Testing</title> + <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + + <style> + + .container { + background-color: rgba(255,0,0,0.7); + + } + + .fail { + color: red; + font-weight: bold; + text-transform: uppercase; + } + + .foo { + height: 35rem; + color: white; + } + + .megafoo { + height:50rem; + color: white; + } + + .bar { + color: white; + } + + .foo h1 { + float: right; + } + + .foo:nth-child(odd), .bar:nth-child(odd), .megafoo:nth-child(odd) { + background-color: lightgreen; + } + + .foo:nth-child(even), .bar:nth-child(even), .megafoo:nth-child(even) { + background-color: lightblue; + } + + .test-container { + background-color: darkgrey; + } + + .menu { + background-color: white; + border: 1px solid #2199e8; + } + + .menu-text { + font-weight: normal; + color: black; + } + + .menu-title { + text-transform: uppercase; + font-size: 1rem; + color: black; + font-weight: bold; + line-height: 1; + padding: 1rem 1rem .5rem 1rem; + } + + .menu .active { + background-color: #2199e8; + color: white; + } + + </style> + +</head> +<body> + + <div class="row"> + <div class="small-12 medium-8 medium-centered columns"> + <h1 class="text-center">Sticky Menus with Anchors</h1> + <hr> + <h2>Look For:</h2> + <ul> + <li><span class="fail">Currently failing</span> Menus should unstick in the correct place when it reaches its anchor points.</li> + <li><span class="fail">Currently failing</span> You should not see the red background color of the sticky container after scrolling up and down the page, or sticking/unsticking the menus. Scrolling up and down the page as fast as possible will sometimes reproduce this bug.</li> + </ul> + + </div> + </div> + + <div class="row test-container"> + + <div class="small-12 medium-6 columns"> + <div id="foo1" class="foo" data-magellan-target="foo1"> + <h1>#foo1</h1> + </div> + <div id="foo2" class="foo" data-magellan-target="foo2"> + <div class="row"> + <div class="small-12 medium-8 columns"> + <div class="container" data-sticky-container> + <nav class="sticky" data-sticky-on="small" data-sticky data-anchor="foo2"> + <ul class="vertical menu"> + <li class="menu-title menu-text">Sticky Menu Test #2</li> + <li class="menu-text">Anchored to #foo2</li> + <li class="menu-text">Descendant of #foo2</li> + </ul> + </nav> + </div> + </div> + <div class="small-12 medium-4 columns"> + <h1>#foo2</h1> + </div> + </div> + </div> + + <div id="foo3" class="foo" data-magellan-target="foo3"> + <h1>#foo3</h1> + </div> + + <div id="foo4" class="foo" data-magellan-target="foo4"> + <div class="row"> + <div class="small-12 medium-8 columns"> + <div class="container" data-sticky-container> + <nav class="sticky" data-sticky-on="small" data-sticky data-anchor-top="foo4:top" data-anchor-bottom="foo5:bottom"> + <ul class="vertical menu"> + <li class="menu-title menu-text">Sticky Menu Test #3</li> + <li class="menu-text">Top is anchored to top of #foo4</li> + <li class="menu-text">Bottom is anchored to bottom of #foo5</li> + <li class="menu-text">Descendant of #foo4</li> + </ul> + </nav> + </div> + </div> + <div class="small-12 medium-4 columns"> + <h1>#foo4</h1> + </div> + </div> + </div> + + <div id="foo5" class="foo" data-magellan-target="foo5"> + <h1>#foo5</h1> + </div> + + <div id="foo6" class="foo" data-magellan-target="foo6"> + <h1>#foo6</h1> + </div> + + <div id="foo7" class="foo" data-magellan-target="foo7"> + <h1>#foo7</h1> + </div> + + <div id="foo8" class="foo" data-magellan-target="foo8"> + <h1>#foo8</h1> + </div> + + <div id="foo9" class="foo" data-magellan-target="foo9"> + <h1>#foo9</h1> + </div> + + <div id="foo10" class="foo" data-magellan-target="foo10"> + <h1>#foo10</h1> + </div> + + </div> + + <div class="small-12 medium-6 columns"> + + <div class="container" data-sticky-container> + <nav class="sticky" data-sticky-on="small" data-sticky data-anchor-top="foo1:top"> + <ul class="vertical menu" data-magellan> + <li class="menu-title menu-text">Sticky Menu Test #1</li> + <li class="menu-text">Top anchored to to top of #foo1</li> + <li class="menu-text">Not a descendant of #foo1</li> + <li><a href="#foo1">#foo1</a></li> + <li><a href="#foo2">#foo2</a></li> + <li><a href="#foo3">#foo3</a></li> + <li><a href="#foo4">#foo4</a></li> + <li><a href="#foo5">#foo5</a></li> + <li><a href="#foo6">#foo6</a></li> + <li><a href="#foo7">#foo7</a></li> + <li><a href="#foo7">#foo8</a></li> + <li><a href="#foo7">#foo9</a></li> + <li><a href="#foo7">#foo10</a></li> + </ul> + </nav> + </div> + + </div> + + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> +</body> +</html> \ No newline at end of file diff --git a/libraries/foundation-6/test/visual/top-bar/stacking.html b/libraries/foundation-6/test/visual/top-bar/stacking.html new file mode 100755 index 00000000..094cd8d7 --- /dev/null +++ b/libraries/foundation-6/test/visual/top-bar/stacking.html @@ -0,0 +1,58 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Top Bar: Stacking</h1> + + <p>By default, a top bar stacks on the small breakpoint (< 640px).</p> + + <div class="top-bar"> + <div class="top-bar-left"> + <p><strong>Left</strong></p> + </div> + <div class="top-bar-right"> + <p><strong>Right</strong></p> + </div> + </div> + + <hr> + + <p>This top bar should stack on <em>medium and down</em>.</p> + + <div class="top-bar stacked-for-medium"> + <div class="top-bar-left"> + <p><strong>Left</strong></p> + </div> + <div class="top-bar-right"> + <p><strong>Right</strong></p> + </div> + </div> + + <hr> + + <p>This top bar should stack on <em>large and down</em>.</p> + + <div class="top-bar stacked-for-large"> + <div class="top-bar-left"> + <p><strong>Left</strong></p> + </div> + <div class="top-bar-right"> + <p><strong>Right</strong></p> + </div> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/triggers/programmatic.html b/libraries/foundation-6/test/visual/triggers/programmatic.html new file mode 100755 index 00000000..29f958fc --- /dev/null +++ b/libraries/foundation-6/test/visual/triggers/programmatic.html @@ -0,0 +1,42 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Triggers: Programmatic</h1> + + <p>This callout uses a close button with <code>data-close</code>. Clicking it should close the callout.</p> + + <div class="callout" data-closable> + <p>You can so totally close this!</p> + <button class="close-button" aria-label="Dismiss alert" type="button" data-close> + <span aria-hidden="true">×</span> + </button> + </div> + + <p>This callout uses a close button with a manual event handler that uses jQuery's <code>.trigger()</code> function.</p> + + <div class="callout" data-closable id="testCallout"> + <p>You can so totally close this!</p> + <button class="close-button" aria-label="Dismiss alert" type="button" id="testButton"> + <span aria-hidden="true">×</span> + </button> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + $('#testButton').click(function() { + $('#testCallout').trigger('close'); + }); + </script> + </body> +</html> diff --git a/libraries/foundation-6/test/visual/typography-helpers/responsive-text-alignment.html b/libraries/foundation-6/test/visual/typography-helpers/responsive-text-alignment.html new file mode 100755 index 00000000..8907d067 --- /dev/null +++ b/libraries/foundation-6/test/visual/typography-helpers/responsive-text-alignment.html @@ -0,0 +1,27 @@ +<!doctype html> +<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]--> +<html class="no-js" lang="en" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Foundation for Sites Testing</title> + <link href="../assets/css/foundation.css" rel="stylesheet" /> + </head> + <body> + <div class="row column"> + <h1>Typography Helpers: Responsive Alignment Classes</h1> + + <div class="row"> + <div class="column text-center medium-text-left"> + <p>This text should be left-aligned on medium screens and up, and center-aligned on small screens.</p> + </div> + </div> + </div> + + <script src="../assets/js/vendor.js"></script> + <script src="../assets/js/foundation.js"></script> + <script> + $(document).foundation(); + </script> + </body> +</html> -- GitLab